ld: framework nie znaleziono Pods

234

Próbuję dodać platformę do mojego projektu IOS, ale kiedy buduję, zawsze otrzymuję ten sam komunikat:

ld: framework nie znaleziono Pods

clang: error: komenda linkera nie powiodła się z kodem wyjścia 1 (użyj -v, aby zobaczyć wywołanie)

Próbowałem usunąć mój Podskatalog, a następnie uruchomić. pod install Otwieram .xcworkspacego tak, jak zapisano w dziennikach instalacji pod, czyszczę projekt na xcode, a następnie próbuję zbudować, ale to nie działa.

Mój podfile wygląda następująco:

xcodeproj '/Users/guillaume/project/Mobile/iOS/FoodPin/FoodPin.xcodeproj'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'SwiftHTTP', '~> 0.9.2'

Moja wersja xcode to 6.3.1

Dziękuję Ci,

Kaëris
źródło
1
Czy sprawdziłeś, że libpods.ajest to w „Połączonych ramach i bibliotekach” twojego celu? A także w fazach kompilacji?
BoilingLime,
Czy udało ci się to rozwiązać? Mam ten sam błąd
Christopher Francisco
@ChristopherFrancisco Rozwiązałem to, sprawdź moją odpowiedź.
Arbitur
1
To, jak odpowiedzieć [1] rozwiązało mój problem! Mam nadzieję, że to pomaga [1]: stackoverflow.com/a/31161871/1557663
Mário Carvalho
@ MárioCarvalho To tylko dłuższa i bardziej przyjazna dla początkujących wersja mojej odpowiedzi x)
Arbitur

Odpowiedzi:

524

W Project Navigatorfolderze Podsmiałem Pods.frameworktam, który był czerwony. Był także obecny w Linked Frameworks and Libraries. Usunąłem oba odniesienia i błąd zniknął.

TL; DR

Usuń Pods.frameworkza:

  • Folder o nazwie Pods
  • Linked Frameworks and Libraries
Arbitraż
źródło
5
Myślę, że skończyło mi się z tym problemem po dodaniu use_frameworks! do mojego Podfile, a następnie komentując go. Usunięcie odwołania do Pods.framework rozwiązało problem.
StephenT
2
@StephenT Tak, uważam, że tak też zrobiłem, najpierw używam, use_frameworks!a potem bez i być może Pods.frameworknie zostało to poprawnie usunięte podczas pod install. Może to być błąd w Cocoapods.
Arbitur
To dobra odpowiedź, nie wpływa na przykładową aplikację, nadal działa dobrze
Gabriel Goncalves
3
Jeśli to nie zadziała, spróbuj użyć dezintegracji cocoapods. To właśnie rozwiązało ten problem dla mnie.
nickdnk
2
Po uruchomieniu instalacji pod w jakiś sposób skończyłem z plikiem struktury „Pods_ <Nazwa projektu>”. W moim folderze Pods. Usunięcie tego pliku, wyczyszczenie i przebudowanie usunęło ten błąd.
Caleb Faruki
209

Jest to zwykle spowodowane tym, że plik .xcodeproj jest otwarty zamiast .xcworkspace.

Gdy uruchomisz po raz pierwszy instalację pod, utworzy plik .xcworkspace, który zawiera twój oryginalny plik .xcodeproj i projekt Pods. Musisz zamknąć .xcodeproj i zamiast tego otworzyć .xcworkspace.

Jest to powszechny problem podczas tworzenia projektu za pomocą nowego kreatora projektu Xcode - często zapominam, że nie jestem w obszarze roboczym, który jest wymagany do prawidłowego połączenia Cocoapods.

Chris Trevarthen
źródło
Dzięki ! Po raz pierwszy mnie to dezorientuje
Phi Nguyen,
6
Twoje wyjaśnienie jest o wiele lepsze niż widziałem gdzie indziej. Nie zdawałem sobie sprawy, co się dzieje. Dzięki!
Michael Yaworski
W połączeniu z odpowiedzią Arbitur rozwiązuje to problem. Dzięki!
user1577390,
To był dokładnie mój problem. Dzięki!
Antonio Papalillo
w moim projekcie nie ma pliku .xcworkspace. co robić
Kartiikeya
126

Xcode 9, 10, 11, 11.5

zainstaluj https://github.com/CocoaPods/cocoapods-deintegrate

pod deintegrate

następnie

pod install
Przetrząsać
źródło
1
Działa jak urok! Dziękuję Ci. Pozbyło się to starego odwołania do celu o zmienionej nazwie, który powodował ten błąd.
Alex Obenauer
1
Jesteś moim bohaterem! ;)
Swissdude
1
Wow, uratowałeś mi dzień! utknął od wczoraj i ostatecznie rozwiązany za pomocą Xcode 10. Dzięki!
Purushottam Padhya
1
To powinna być poprawna odpowiedź, to najbezpieczniejsze podejście. Nie rób ręcznych kroków podczas korzystania ze zautomatyzowanych rzeczy, takich jak CocoaPods, chyba że jest to znany błąd, którego nie można naprawić inaczej.
Gobe
1
ten pomóż mi, niesamowity koleś!
Sruit A.Suk
51

Usunąłem ten błąd, usuwając czerwone .frameworkpliki znajdujące się w folderze Frameworksw folderze project navigator. Myślę, że to również automatycznie usunęło odpowiednie czerwone wpisy w Linked Frameworks and Librariessekcji Generalustawień.

Czyściłem / ponownie instalowałem zasobniki, aby rozwiązać inny problem. Być może te czerwone pliki frameworka i wpisy były po prostu resztkami z poprzedniej instalacji pod?

theblang
źródło
Tak! Mój problem dotyczył połączonych ram i bibliotek ustawień ogólnych i był trudny do znalezienia, ponieważ nie pojawia się w wyszukiwaniu tekstu!
Alistair Cooper
W moim przypadku pliki frameworku nie były nawet czerwone, a jedynie wyszarzone. Ale wydaje się, że usunięcie ich rozwiązało problem!
Swindler,
29

Dla tych, którzy znajdą ten problem. Korzystam z NativeScript i dostałem ten sam błąd.

Dzieje się tak, ponieważ otworzyłem plik .xcodeproj, ale musimy otworzyć projekt przy pomocy pliku .xcworkspace.

kaleki
źródło
27

Zdarzyło mi się to po zaktualizowaniu pliku Podfile i wykonaniu aktualizacji zasobnika.

Z jakiegoś powodu miałem plik struktury „Pods_ [ProjectName]”. Pod moim projektem w obszarze „Cele”> Ogólne> Połączone ramy i biblioteki.

Usunięcie tego, a następnie wyczyszczenie / przebudowanie naprawiło problem.

Elliott Davies
źródło
2
Dzieje się tak, gdy zmieniasz nazwy projektów i musisz wyczyścić stary. +1
Babbz77,
To zadziałało dla mnie. Nie zmieniłem nazw projektów, ale dodałem Swift do długo działającego projektu Objective-C.
Luffy,
24

Miałem podobny problem jak

framework not found Pods_OneSignalNotificationServiceExtension

Problem został rozwiązany przez usunięcie następujących elementów. Idź do celu OneSignalNotificationServiceExtension> Fazy kompilacji> Połącz pliki binarne z bibliotekami i usuwając Pods_OneSignalNotificationServiceExtension.frameworkTu powinno być pusto. Mam nadzieję, że to pomoże. Twoje zdrowie.

Sharukh Mastan
źródło
To rozwiązało problem. Moja szczególna sytuacja jest taka, że ​​miałem docelową aplikację iOS MyApp. Następnie musiałem utworzyć drugi cel i mieć cele MyAppFirst, MyAppSecond. Cocoapods był w stanie zbudować to, czego potrzebował (Pods_MyAppFirst, Pods_MyAppSecond), ale próbował również połączyć się z Pods_MyApp, który już nie istniał. Chcę podkreślić, że próbując naprawić, wyrzuciłem plik obszaru roboczego i folder Pods, aby odtworzyć je od zera, gdy wykonałem „instalację pod”, ale to nie pomogło.
xdeleon,
@Sharukh Mastan Czy masz jakiś pomysł, jak to zrobić po instalacji pod? Za każdym razem, gdy instaluję pod, Pods_OneSignalNotificationServiceExtension.framework wraca, by prześladować mnie w połączonych ramach i bibliotekach OneSignalNotificationServiceExtensioncelu.
Sethmr
@Sethmr Niestety nie. W moim przypadku nie zawsze zdarza się to po pod install, jest losowe.
Sharukh Mastan
@SharukhMastan Mój problem został otwarciu *.xcodeproj/*.xcworkspacenad *.xcworkspacez skrypt automatyzacji moich VSTS .yml. Wiem lepiej z GUI, ale wciąż przyzwyczajam się do wymagań w skryptach.
Sethmr
15

Wystąpił ten błąd, ponieważ zmieniłem nazwę projektu i zmieniłem nazwę projektu w pliku pod, ale mój projekt odwoływał się do starej nazwy, której nie było i powodował ten błąd. Pozbywam się tego przez

pod deintegrate

śledzony przez

pod install
osama
źródło
Tak! Miałem ten sam problem przy obniżeniu wersji z 12.0 do 9.0. Powyższe działało po tym, jak zmodyfikowałem wersję docelową w moim Podfile, aby pasowała do tego, co było w projekcie.
Richard Bown,
Dobra odpowiedź. Dziękuję Ci.
whdals0
14

powinieneś usunąć swój projekt jako plik jako ten obraz.

powinieneś usunąć pods.framework i strąki zaznaczyć czerwone pliki

lingyfh
źródło
10

Wystarczy usunąć plik .framework z listy „Twój projekt-> Ogólne-> Powiązane ramy i biblioteki”.

Md. Ibrahim
źródło
To było to, miałem dwa po zmianie nazwy projektu. Dzięki!
Jimmy
10

To zdarzyło się mnie, bo zmienił Deployment Targetsię General, ale zapomniał zmienić Deployment Targetin Pods > General. Zmień cel wdrożenia

Dary
źródło
Naprawiłem to również dla mnie, Xcode 11.2 / Cocoapods 1.8.4. Irytujące, że komunikat o błędzie nie przypomina pierwotnej przyczyny ...
Jonathan Ellis,
1
Naprawiłem to dla mnie - nie miałem pojęcia, że ​​muszę to zmienić w obu miejscach. Wielkie dzięki!
hakazvaka
6

W moim przypadku mogę zbudować go na urządzeniach i symulatorze, ale ma te same błędy podczas archiwizacji. Aby to rozwiązać, muszę

  • usunąć Pods.framework
  • upewnij się, że Pods-<project-name>.frameworkjest osadzony

Ustawienia znajdziesz w zakładce CELE -> Powiązane struktury i biblioteki.

SeanChense
źródło
Czy możesz to sprawdzić: github.com/CocoaPods/CocoaPods/issues/…
Esqarrouth
4

Krok 1

Pierwszą rzeczą, którą musisz zrobić, to usunąć Podfile, Podfile.lock, folder Pods i wygenerowany obszar roboczy.

Krok 2

Następnie w .xcodeproj usuń odniesienia do plików Pods.xcconfig i pliku libPods.a.

Krok 3

Na karcie projektu Fazy kompilacji usuń sekcję Sprawdź strugi Manifest.lock (otwórz), Skopiuj zasoby zasobników (dolna część) i Osadź zasobniki (dolna część).

Krok 4

Usuń Pods.framework.

Jedyne, co możesz chcieć zrobić, to włączyć niektóre biblioteki, z których korzystałeś wcześniej. Możesz to zrobić, po prostu przeciągając dowolne foldery znajdujące się w folderach strąków do projektu (wolę umieścić je w folderze plików pomocniczych).

To zadziałało dla mnie.

AG
źródło
Krok 3 zadziałał w moim przypadku, krok 3 -> cmd + alt + shift + k.
ViruMax,
4

Prawdopodobnie próbujesz zmusić strąki do pracy w swoim projekcie, prawda? Jedynym sposobem na to jest utworzenie osobnego projektu korzystającego z CocoaPods.

Zamknij wszystkie używane obszary robocze.

Następnie upewnij się, że Twój Podfile jest całkowicie gotowy do pracy.

W wierszu polecenia, gdziekolwiek znajduje się plik, wpisz polecenie:

pod deintegrate

Następnie zainstaluj pod agian.

pod install or pod update

Teraz możesz wykorzystać nowy obszar roboczy swojego projektu do rozwijania. Poszukaj pliku o nazwie .workspace. Użyj tego pliku!

Oto przewodnik na temat korzystania z CocoaPods

Emmanuel Mbaba
źródło
Tylko ten działał dla mnie po 2 dniach zmagania się z błędem.
Mitesh Dobareeya
3

Przy użyciu Xcode 8.3 zaakceptowana odpowiedź nie działała dla mnie. Wypróbowałem wiele innych rozwiązań, ale odpowiedź @Elliott Davies jest tym, co mnie naprawiło. Dodaję zrzut ekranu, aby zachować jasność. Z jakiegoś powodu Xcode próbował połączyć poprzednie konfiguracje podfile, które już nie istniały. Musiałem tylko usunąć dodatkowe odniesienia i wszystko działało.Zrzut ekranu z ramkami i bibliotekami Xcode

jbryant
źródło
3

Ten problem doprowadzał mnie do szału, ponieważ nagle stało się to bez wprowadzania jakichkolwiek zmian w projekcie. Wypróbowałem wszystkie sugerowane rozwiązania w tym wątku (i innych powiązanych) i żadne z nich nie rozwiązało problemu.

Jedyną rzeczą, która różniła się od innych moich projektów (które dobrze się skompilowały), było to to, nazwa tego projektu zawierała akcent (francuski akcent „é”). Zmieniłem nazwę projektu i wszystkich powiązanych plików i w końcu zadziałało!

Może ma to związek z aktualizacją do Xcode 10, ponieważ ten projekt działał dobrze przed ...

EDYCJA: wydaje się, że również się nie udaje, gdy używasz projektu z -nazwą projektu…

AnthoPak
źródło
1
Uratowałeś mi życie
Florian Mac Langlade,
1
Uratowałem też moje życie!
Dan
Jakieś rozwiązanie oprócz zmiany nazwy projektu?
anestis
@anestis Nie sądzę. Aby szybko zmienić nazwę projektu, sugeruję polecenia z tej odpowiedzi stackoverflow.com/a/48004237/4894980, które wykonują bardzo dobrą robotę!
AnthoPak,
3

W moim przypadku, po porównaniu różnicy między gałęzią, którą znałem poprawnie zbudowaną, zauważyłem ten wiersz w moim Podfile:

platform :ios, '11.0'

Nieumyślnie podniosłem docelową wersję z 10 do 11, podczas gdy moje cele w Xcode pozostały ustawione na 10. Powrót do 10 rozwiązał mój problem.

Upewnij się, że docelowe wersje iOS są poprawnie ustawione.

łączy
źródło
Uratowałeś mi dzień !! Dziękuję
Mayank Patel
3

W ten sposób naprawiam mój problem. i teraz działa, kiedy piszę tę odpowiedź:

Po pierwsze, staram się jak najlepiej naprawić powyżej,

usunięcie Pods_xxx.framework z bibliotek linków i frameworka w fazie kompilacji celu jest pomocne, a problem zniknie, ale nadchodzącym problemem jest to, że nie mogę już importować Pods.framework.

Następnie próbuję ponownie skonfigurować konfigurację xcworkspace, aby znaleźć prawdziwy problem. więc biegnę

pod deintergate

a następnie ponownie zainstaluj mój moduł:

pod install

działa to doskonale, ale problem wciąż istnieje, ale wydaje mi się, że prawdziwym problemem jest to, że Pods_xxx.framworks nie może zostać skompilowany przez skrypt kompilacji cocoapods. Myślę, że to prawdziwy sposób na rozwiązanie problemu.

Wreszcie próbuję edytować schemat mojego projektu:

Schemat strąków nie jest edytowany

i dodam schemat Pods do zarządzania:

wprowadź opis zdjęcia tutaj

i zbuduj ten Pods.framework osobno, a przekonasz się, że ikona Pods.framework ponownie stała się prawdziwa:

wprowadź opis zdjęcia tutaj

i myślę, że teraz rozwiązałeś problem „frameworku nie znaleziono Pods_xxxx.framework”, ale w rzeczywistości mam inny problem:

wprowadź opis zdjęcia tutaj

więc przechodzę do ustawień kompilacji i edytuję za "Framework Search Path"pomocą "${inherited}", a teraz wszystkie problemy znikają , dopinguj !!!! :)

wprowadź opis zdjęcia tutaj

Levine Veblen
źródło
Dodanie celu kapsuły i zbudowanie jej faktycznie pokazało, co było nie tak z budową kapsuły. W naszym przypadku był to szybki konflikt wersji. Dzięki!
green0range
Nie wykonałem wszystkich kroków. Właśnie dodałem tę ${inherited}ścieżkę, potem zrobiłem Product->Clean Build Folderi to wszystko, teraz buduje się bez żadnych problemów.
Starwave,
2

Po usunięciu i aktualizacji kapsuły nadal miałem ten sam problem.

Znalazłem, że poprzedni programista umieścił flagę w „ Ustawieniach kompilacji -> Inne flagi linkera ” o nazwie Framework (w moim przypadku -framework „OGVKit”), który spowodował problem.

Po usunięciu tej flagi projekt buduje się poprawnie.

Babac
źródło
Dziękuję bardzo! Zawsze musisz mieć oko na rzeczy, które są odważne w Ustawieniach kompilacji!
Marcio Granzotto,
2

Wystąpił ten problem, ponieważ nie ustawiłem platformpoprawnie.

W mojej aplikacji macOS platforma była ustawiona na:

platform :ios

zamiast

platform :osx
Besi
źródło
1

Rozwiązałem ten problem, wybierając projekt, z którego został pobrany CocoaPodsi zbudowany. Możesz kliknąć Zarządzaj schematami, aby pojawił się na pasku Uruchom. Następnie możesz odbudować swój projekt. Mam nadzieję, że to pomoże.

vinhsteven
źródło
1

W moim przypadku było odwołanie do biblioteki, którą usunąłem

Cele> Ustawienia kompilacji> Ścieżki wyszukiwania Runpath

Usunięcie biblioteki z Podfile i jej aktualizacja oczywiście nie usunęło jej, więc musiałem to zrobić ręcznie, a teraz wszystko działa.

Marina Aguilar
źródło
1

Żadna z poprzednich odpowiedzi nie wskazała głównego problemu w mojej sytuacji. Mam więc nadzieję, że może to być przydatne dla kogoś innego.

W moim przypadku musiałem edytować plik pod w katalogu głównym mojego projektu. Kiedy pierwszy raz utworzyłem plik podfile, szybkie biblioteki statyczne nie były obsługiwane. Więc użyłem use_frameworks!w swoim pliku pod pod każdym z moich celów jako takich:

PRZED

...
target 'targetName' do
   use_frameworks!
   pod 'podName', '~> 0.2'
end

PO

...
target 'targetName' do
   pod 'podName', '~> 0.2'
end

Usunąłem use_frameworks!z mojego podfile których trzymane instalowania ram każdym razem wpadłem Pod zainstalować. Po usunięciu tego wiersza, uruchom pod installponownie i usuń wszystkie czerwone odniesienia .framework z folderu Frameworks w Xcode. (Chociaż mój wyglądał inaczej, jak podano poniżej).

Obraz usuwania plików .framework, które nie są już potrzebne

Możesz także przeczytać więcej o use_framework! tutaj .

the.giologist
źródło
0

Jeśli otworzyłeś plik .xcworkspace i nadal występuje ten sam błąd:

delete all the contents of Pods directory and from command line write "pod install" to resolve the issue.
Alp Altunel
źródło
0

Usuń folder ram utworzony po instalacji lub aktualizacji pod

Xcoder
źródło
0

Inną rzeczą, która rozwiązała mój problem, jest przejście do opcji Cel -> Ustawienia kompilacji -> Inne flagi linkera i usunięcie „-framework” i „nazwy” frameworka.

Stało się tak, gdy próbowałem usunąć kapsułę.

atacand1920
źródło
0

Rozwiązałem to, przeciągając .frameworkplik do Linked Framework i bibliotek

Powiedzmy, że mam ten problem z powodu błędu FIRAnalyticsConnector not foundi po prostu przeciągam FIRAnalyticsConnector.framworkplik do Linked Framework i bibliotek i mój problem został rozwiązany

Sultan Ali
źródło
0

Próbowałem wszystkich odpowiedzi tutaj i żadna z nich nie działała. Skończyło się to na tym, że podniosłem cel wdrożenia z 10,0 do 11,0. Nie mam pojęcia, dlaczego to naprawiło, ale podejrzewam, że ma to związek z aktualizacją do Xcode 10.2.1.

Oszust
źródło
0

może nagle otworzysz niewłaściwy plik .xcodprj i powinieneś otworzyć .xcworkspace

amirtutunchi
źródło
Lepiej opublikować taki komentarz.
MR
0

Sprawdź plik wykonywalny wewnątrz .Framework jak wprowadź opis zdjęcia tutaj

  1. Nazwa pliku wykonywalnego powinna podobać się bez żadnego rozszerzenia.

  2. Niektóre struktury pokazują się tak wprowadź opis zdjęcia tutaj

  3. Za pomocą katalogu Terminal goto .framework użyj poniższego polecenia lipo -create FrameworkName-x86_64 FrameworkName-armv7 FrameworkName-armv7s FrameworkName-i386 FrameworkName-arm64 -output FrameworkName

po utworzeniu jednego pliku wykonywalnego usuń te pliki wprowadź opis zdjęcia tutaj

Purnachandar Rao Voleti
źródło