Nie znaleziono struktury GoogleToolboxForMac

82

Po zaktualizowaniu Firebase przez „aktualizację podów” pojawił się następujący błąd:

ld: warning: directory not found for option '-F/Users/bennysantoso/Library/Developer/Xcode/DerivedData/FCM-atfcxuircoryufazlomgwfgmvaqm/Build/Products/Debug-iphonesimulator/GoogleToolboxForMac'
ld: framework not found GoogleToolboxForMac
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Tutaj mój plik Podfile:

# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
pod 'Firebase/Core'
pod 'Firebase/Messaging'

target 'BB' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for BB

  target 'BBTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'BBUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

Czy ktoś wie o tym błędzie?

Szukam relacji GoogleToolboxForMac i Firebase, ale dostaję tylko trochę informacji.

FYI, używam Swift 2.3 i Firebase 3.8.0.

Będę wdzięczny za każdą pomoc, jakiej możesz udzielić. Dzięki!

bennysantoso
źródło
2
To samo dla mnie… czy ktoś może pomóc? Cały dzień pracowałem nad tym: / Zauważyłem, że starsze wersje tej samej biblioteki nie używają GoogleToolboxForMac i działa idealnie :(
Santi Iglesias
Z innych odpowiedzi dotyczących stackoverflow próbowałem dodać wszystkie poniższe elementy do mojego pliku pod, ale nadal nie działa: pod 'Google / Analytics' pod 'Firebase / Core' pod 'Firebase / AdMob' # Próbuję naprawić brakujący błąd GoogleToolboxForMac w 'Firebase / Messaging 'pod' GoogleToolboxForMac / Logger 'pod' GoogleToolboxForMac ',' ~> 2.1 '
Charlie Seligman
Po pierwsze, format Twojego pliku Podfile jest stary (IV kw.2016). Usuń go i utwórz nowy za pomocą „pod init”. Użyj obszaru roboczego, a nie xcodeproj, jak sugerowano poniżej.
igraczech

Odpowiedzi:

168

Miałem ten sam błąd. Po zainstalowaniu strąków zobaczysz następujący komunikat.

[!] Zamknij wszystkie bieżące sesje Xcode i od teraz używaj MyApp.xcworkspace dla tego projektu.

Nie zauważyłem tego po raz pierwszy i próbowałem zbudować projekt przy użyciu zwykłego pliku xcodeproj. Po tym, jak zobaczyłem tę wiadomość, otworzyłem odpowiedni projekt i działał dobrze.

Po otwarciu tego projektu zauważysz, że masz dwa podprojekty. Jeden byłby twoim projektem, a innym projektem Pods.

Izaaz Yunus
źródło
40

Nie znaleziono struktury

Podczas korzystania z Podów zwykle napotykamy ten problem.

Są ku temu dwa główne powody

  1. Kiedy otwieramy plik .xcodeproj zamiast .xcworkspace, jak wspomniał izaaz-yunus w tej odpowiedzi

  2. Gdy opcja Buduj tylko aktywną architekturę jest ustawiona na Tak w Ustawieniach kompilacji

    Dotyczy to celu projektu, a także wszystkich celów w projekcie pod

Główny zrzut ekranu projektu Ustaw opcję Build Active Architecture Only na No

Zrzut ekranu projektu Pod wprowadź opis obrazu tutaj

  1. Wybierz ustawienia kompilacji (projektu głównego, projektu pod obu)
  2. Wybierz każdy element docelowy jeden po drugim
  3. Dla każdego celu ustaw opcję Buduj aktywne architektury na Nie

Wreszcie wyczyść i przebuduj swój projekt.

Vinay Kumar
źródło
czy jest literówka, na drugim miejscu mówisz „tak”, ale na zdjęciu widać „nie”, dzięki @Vinay Kumar
greenridinghood
# 2 mówi, co powoduje problem, a obraz przedstawia, jak powinny wyglądać ustawienia, aby problem został rozwiązany
Vinay Kumar
Wszystkie inne rozwiązania nie działają dla mnie, z wyjątkiem: ustaw Build Active Architecture Only na NO dla całej biblioteki pod
tamtoum1987
18

W moim przypadku cała integracja jest dobrze wykonana, a także próbowałem tyle razy usunąć i ponownie zainstalować pod, ale nie udało się.

Na koniec spróbuj wykonać poniższy krok

Projetc-> Manage Schemes -> Zaznacz pole wyboru „Pods-MyProjectName”

I osiągnij sukces.

iPatel
źródło
Otrzymałem ten błąd podczas uruchamiania w symulatorze, ale nie dostałem go na rzeczywistym urządzeniu.
mpwhitt
To zadziałało dla mnie, ale musiałem również jawnie skompilować projekt strąków, zanim spróbowałem zbudować mój projekt. Nie mam pojęcia dlaczego.
pieSquared
1
Zrobiłem to, ale nie mogę uruchomić aplikacji na moim symulatorze?
Drailan John Terrible
2
Po zbudowaniu „Pods-ProjectName” mogłem uruchomić prawdziwy projekt na moim urządzeniu ..
Tim Baas,
14

GoogleToolboxForMac to zależność Firebase / Messaging. Szczegóły w podspec . Wykonując „aktualizację podów”, Cocoapods powinien skonfigurować obszar roboczy do tworzenia i łączenia GoogleToolboxForMac.

Wygląda na to, że coś w Twoim miejscu pracy jest w złym stanie. Czy Product -> Clean pomaga? A co z usunięciem danych pochodnych i modułu ModuleCache (Xcode -> Preferencje -> Lokalizacje -> Dane pochodne)?

Nie powinno to być konieczne, ale możesz również spróbować jawnie dodać pod 'GoogleToolboxForMac / Logger' do swojego Podfile.

Paul Beusterien
źródło
Nie, to nie zadziałało ... dzięki otwarciu projektu z obszaru roboczego zadziałało!
Jayprakash Dubey
2
@JayprakashDubey Ta odpowiedź zakłada, że ​​zaczynasz z obszaru roboczego. Zobacz pierwszy akapit. Odpowiedź rozwiązuje inny scenariusz, który prowadzi do tego samego objawu.
Paul Beusterien
1
@PaulBeusterien Próbowałem wszystkiego, co tu powiedziałeś, ale nadal nie mogę budować.
Drailan John Terrible
6
to działa
1. wybierz swój projekt w katalogach
2. wybierz Ogólne
3. Dodaj „GoogleToolboxForMac.framework” do połączonych „struktur i bibliotek”
kiran pm
źródło
Linkowanie biblioteki jednoznacznie rozwiązało to za mnie. Dzięki!
Liquinaut
5

Zostało to naprawione przez dodanie $ ( inherited ) w ustawieniach kompilacji -> Wyszukaj LIBRARY_SEARCH_PATHS.

Jest to zrozumiałe, ponieważ podczas aktualizowania pliku pod dla najnowszych wersji bibliotek, od których zależy Twój projekt, wynik debugowania informuje, gdzie należy dodać wszystkie flagi $ (dziedziczone): LIBRARY_SEARCH_PATHS OTHER_LD_FLAGS GCC_PREPROCESSOR_DEFINITIONS

TomV
źródło
gdzie umieścić $ (inherited), powinienem nacisnąć +, a następnie wpisać $ (inherited)?
Drailan John Terrible
Tak, możesz nacisnąć + i wprowadzić $ (dziedziczone) lub po prostu dwukrotnie kliknąć edytowalne pole, a następnie wprowadzić $ (dziedziczone)
TomV
To rozwiązało mój problem! Dziękuję @TomV
Spettacolo83
2

Idź do: target -> Build Settings -> Other Linker Flags -> remove framework "GoogleToolboxforMAC"i skompiluj projekt.

Deblina Das
źródło
1

Miałem ten sam problem, gdy próbowałem go uruchomić na moim urządzeniu. Na symulatorze działało dobrze. Wypróbowałem niektóre z powyższych, ale nie zadziałało. Sprawdziłem, że byłem w pracy .xcworkspacezamiast .xcodeprojpliku, więc próbowałem tego. Wykonaj następujące kroki, aby:

  1. Otwórz projekt Xcode (projekt cocoapods) przy użyciu pliku .xc ...
  2. Wybierz projekt Pods w nawigatorze projektu (niebieska ikona po lewej stronie).
  3. W obszarze Cele upewnij się, że wybrano Pods-ProjectName (niebieska ikona).
  4. Przejdź do ustawień kompilacji i ustaw miejsce docelowe wdrażania systemu iOS, na której wersji systemu iOS chcesz uruchomić projekt.

Uwaga: to jest to samo, co ustawiłeś Project->Targets->Deployment info->Deployment Target.

Może ktoś na tym skorzysta.

Prosta Maurya
źródło
1

Jeśli napotkasz ten sam błąd, w swoim XCode przejdź do:

Twój projekt > cel > przewiń w dół do połączonej struktury i bibliotek i sprawdź, czy pozycja biblioteki jest wyszarzona:

Zrzut ekranu platformy i bibliotek XCode

Jeśli tak, usuń go i dodaj ponownie. W moim przypadku miałem zduplikowane wpisy i jeden z nich był wygaszony (gdy XCode nie może ich znaleźć na dysku).

Luiz Dias
źródło
0

Zamknąłem projekt, który próbowałem zbudować po tym, jak zainstalowałem pod, a następnie otworzyłem .workspace i wszystko działa idealnie.

Satheesh
źródło
0

Otwórz your-project.xcworkspace w miejscu docelowym projektu.

1) Otwórz terminal -> 2) $ cd / project_destination -> 3) $ open your-project.xcworkspace

lub po prostu otwórz plik w Finderze

Radek Stašek
źródło
0

Upewnij się, że ustawienia „Buduj aktywną architekturę” dla celu projektu i kapsuły są takie same. Ustawienie NIE w obu tych przypadkach rozwiązało mój problem.

Surowy K.
źródło
0

Mój problem polegał na tym, że miałem skrypt / bin / sh, który kopiował określone nieistniejące pody. To był jeden z nich. Usunięcie skryptu rozwiązało problem z kompilacją.

Armin
źródło
0

-Szukaj na dysku twardym plików GoogleToolboxForMac, znalezionych w: / Users / Marco / Documents / iosapps / BomRetiro / Bom Retiro / Pods / Target Support Files

  • Następnie skopiowałem pliki do tego folderu: / Users / YourHomeFolder / Library / Developer / Xcode / DerivedData / Bom_Retiro-bsfjbazzzuwmuidqurdmjvdtnnsb / Build / Products

A potem rozwiązuje się dla mnie otwarcie pliku usinf projektu .xcworkspace.

bosozoku
źródło
0

Dla tych, którzy po tym wszystkim nadal mają problemy. Pracuję nad projektem Cordova i problem pojawił się nagle po aktualizacji do XCode 11.5.

Wreszcie udało mi się go rozwiązać, otwierając plik pods.json w katalogu głównym projektu i usuwając wpis w „bibliotekach”, który należy do „FirebaseMessaging”. Nie używaliśmy tego i nie wiem, jak to się tam dostało. Dodatkowo zmieniłem „Ustawienia budowania” -> „Tylko buduj aktywną architekturę” na „Nie” wszędzie.

Następnie ponownie otworzyłem plik .xcworkspace i kompilacja została uruchomiona.

SLi
źródło
-1

Szybka 5 prosta odpowiedź

Shift+Alt+Cmd+K  //Clean the project and Run again! 
//if not work restart Xcode and again clean it 
//Its will work happy coding
Shakeel Ahmed
źródło
-6
    Friends, you must be confused with the exact result, as i was. So, i feel to share the 
screenshot that might be helpful. We all had to be careful that we need to change the flag for property **"Build Active architecture Only"** for **pod target** to **NO** And build, it would not show the linking error.

    See the attached screenshot.
    Screen Shot 1, Screen Shot 2, Screen Shot 3
    [Select Pods][1]
    [Select Targets in the pod][2]
    [Change flag to No][3]


  [1]: https://i.stack.imgur.com/E7mjX.png
  [2]: https://i.stack.imgur.com/wCwET.png
  [3]: https://i.stack.imgur.com/KVGKM.png
Ravi Kant
źródło
Nie publikuj całych zrzutów ekranu, podaj tylko część w linijce, przyjacielu.
igraczech
To zadziałało, chociaż lepiej byłoby wyjaśnić rozwiązania zamiast publikować zrzuty ekranu. Rozwiązaniem jest zmiana Valid Arch Only na „No” dla celów projektu i Pods.
Ignacio Barrea