Błędy CocoaPods w kompilacji projektu


178

Nie jestem w stanie zbudować projektu wykorzystującego CocoaPods. Otrzymuję następujące błędy:

diff: /../Podfile.lock: No such file or directory
diff: Manifest.lock: No such file or directory error: 
The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.`

$ pod installwydaje się działać dobrze i dodaje Podsprojekt do mojego obszaru roboczego. Próbowałem, $ pod updateale to nie pomaga.

Wygląda na PODS_ROOTto, że nie jest to ustawione.

Podfile:

platform :ios, '6.0'

workspace 'Example.xcworkspace'
xcodeproj 'example/Example.xcodeproj' 

pod 'TestFlightSDK', '~> 1.3.0-beta.5'
pod 'TestFlightLogger', '~> 0.0.2'
pod 'CocoaLumberjack', '~> 1.6.2'
pod 'Reachability', '~> 3.1.0'
pod 'SBJson', '~> 3.2'
pod 'MKMapViewZoom', '~> 1.0.0'

3
Prosta „instalacja pod” napraw to :)
onmyway133

Ważny! [!] From now on use MyProject.xcworkspace.nie te old `.xcodeproj '
Dawid Drozd

Kiedy
testujesz

Odpowiedzi:


171

Miałem podobny problem, kiedy dokonałem poważnych zmian w moim Podfile. Moim rozwiązaniem było usunięcie pliku obszaru roboczego i pod installponowne uruchomienie :

rm -rf MyProject.xcworkspace
pod install

17
Oznacza, że ​​cocoapods nie jest poprawnie zainstalowany. uciekajsudo gem install cocoapods
asgoth,

4
gem install cocoapodsjest jeszcze lepszy. Większość sudoklejnotów nie powinna być potrzebna.
PatrickNLT,

5
Twoja odpowiedź sprawiła, że ​​mój dzień. Utknąłem w nim przez wiele godzin. czapki z głów
shaikh

Dzięki za to naprawił błąd. FWIW, dostałem błąd po zrobieniugem update cocoapods
rounak

Naprawiono problem.
Wystąpił

68

TLDR: Najprawdopodobniej jest to błąd związany z Xcode, a zamknięcie i ponowne otwarcie projektu jest zwykle najprostszym rozwiązaniem. Zakładając, że wszystko inne jest poprawnie skonfigurowane .


Czasami pojawia się ten sam błąd podczas usuwania Podskatalogu, a następnie uruchamiania pod install.

Wszystko wygląda poprawnie w informacjach o projekcie:

wprowadź opis zdjęcia tutaj

Jednak, gdy przejdę do ustawień kompilacji zdefiniowanych przez użytkownika celu, wpis PODS_ROOT albo całkowicie brakuje, albo jest pusty dla jednej lub więcej konfiguracji. Co powoduje następujący błąd podczas kompilacji:

wprowadź opis zdjęcia tutaj

Najprostszym rozwiązaniem jest zamknięcie projektu w Xcode i ponowne otwarcie go .

Jeśli przejdziesz do ustawień kompilacji celu i przefiltrujesz na Wszystkie , zobaczysz teraz PODS_ROOTwpis bez błędów:

wprowadź opis zdjęcia tutaj

Powinien teraz budować bez błędów.


Uwaga: Nawet oficjalny przykład AFNetworking iOS dla Cocoa Pods ma ten problem, który prowadzi mnie do wniosku, że jest to błąd związany z Xcode.

Alternatywną poprawką jest ręczna zmiana konfiguracji na None, a następnie powrót do pierwotnej wartości:

wprowadź opis zdjęcia tutaj


1
Okazało się, że to dla mnie! Mój $ PODS_ROOT został niepoprawnie ustawiony
Alex Ryan

Po długich poszukiwaniach poprawki udało mi się ją uruchomić bez błędów dzięki Twojemu rozwiązaniu. Po prostu musiałem zmienić konfiguracje na Brak i wrócić do Pods
Glogo,

To DOBRE stawianie BRAK pomogło.

32

Przejdź do celu Build Settingsi upewnij się, że wartość PODS_ROOTrówna jest ${SRCROOT}/Podsw sekcji „Zdefiniowane przez użytkownika”.

wprowadź opis zdjęcia tutaj


Działa świetnie. To było potrzebne.
pr4n

Musiałem dodać PODS_ROOTdo celu za pomocą tej ścieżki i viuli (dodałem ją również header search pathsjako rekursywną
Jacksonkr

Nie działało dla mnie.

30

aktualizacja: a podfile.lockjest konieczne i nie powinno być ignorowane przez kontrolę wersji, śledzi wersje bibliotek zainstalowanych przy określonej instalacji pod. (Jest podobny do gemfile.lock i composer.lock odpowiednio do zarządzania zależnościami w railsach i php). Aby dowiedzieć się więcej, przeczytaj dokumentację . Kredyt trafia do cbowns .


W moim przypadku robiłem czyszczenie domu dla mojego projektu (tj. Rozgałęziałem testy integracyjne jako podmoduł git .. usuwając duplikaty plików itp.) ... i przekazałem końcowy wynik do zdalnego repozytorium git .. wszyscy klienci, którzy sklonowali moje repozytorium, cierpieli z powodu powyższego błędu. Zainspirowany powyższym komentarzem Hlunga , zdałem sobie sprawę, że istnieją wiszące skrypty pod, które próbują uruchomić się z niektórymi nieistniejącymi plikami. Więc poszedłem do mojej docelowej fazy kompilacji i usunąłem wszystkie pozostałe fazy, które miały cokolwiek wspólnego z strąkami kakaowymi (i komentarz Hlunga sugeruje usunięcie Copy Pods Manifest.locki copy pod resources.. moje zostały nazwane inaczej może b / c używam Xcode 5 .. chodzi o to, aby usunąć te wiszące fazy kompilacji) ..


1
Nie o to Podfile.lockchodzi: przeczytaj dokumentację Cocoapods na temat „Praca z zespołami”, aby uzyskać więcej informacji na ten temat.
cbowns 11.10.13

@bowns masz całkowitą rację, dziękuję za komentarz. Zaktualizowałem swoją odpowiedź.
abbood

12
Usunąłem mój plik xcworkspace i zainstalowałem pod, ale wciąż pojawia się ten sam komunikat o błędzie.
jowie

@jowie to samo tutaj ... czy możesz mnie poprowadzić, jeśli to rozwiązałeś.
Bandish Dave

28

Wygląda więc na to, że CocoaPods nie ustawił konfiguracji dla mojego projektu. Muszą być oparte na tym, Pods.xcconfigco znajduje się w Pods/Target Support Files/Pods. Aby to zadziałało, musiałem wykonać następujące czynności:

  1. Przeciągnij ten plik do mojego projektu Xcode w Xcode, wybierając opcję nie kopiowania.
  2. Teraz w naszym projekcie jest odnośnik, możemy ustawić konfiguracje: wprowadź opis zdjęcia tutaj

Miałem wtedy inny błąd kompilacji, który mógł lub nie być powiązany. Ścieżka do skryptu powłoki zdefiniowanego w Copy Pods Resourcespliku była niepoprawna.

"${SRCROOT}/Pods/Pods-resources.sh"

Rozwiązane niepoprawnie. Wyglądało na to, że SRCROOT dodawał dodatkowy katalog, który nie istniał na ścieżce. Więc na stałe zakodowałem ścieżkę do folderu Project.

To pozwoliło mi zbudować.

Dlaczego tak wiele rzeczy, które mają zaoszczędzić ci czas, ostatecznie je pochłania?

Uwaga: wyjaśnienia znajdują się w odpowiedzi na @ abood.


27
Jeśli zobaczysz ten błąd, ponieważ usunąłeś wszystkie kapsułki z celu, nie będziesz już mieć żadnych skryptów, ale nadal będziesz próbował go uruchomić. Będziesz musiał przejść do docelowej fazy budowania oraz usuwać Copy Pods Manifest.locki przeprowadzać Copy Pods Resourcesetapy. A także usuń libPods.aw Link Binary z bibliotekami.
Hlung

@Hlung doskonały komentarz .. tak naprawdę rozwiązuje on główną przyczynę problemu, wypróbowałem powyższe rozwiązania i nadal otrzymałem Podfile.lock (który większość .gitignoreplików jest skonfigurowany tak, aby ignorować ... i słusznie) ... ten plik nie powinien nie zostań dłużej w pobliżu ... Jeśli napisałeś to jako odpowiedź, dałbym ci +1!
abbood

@abbood Napisz to, a dam ci wygraną.
Brak uwagi

Chciałem tylko dodać, że ten problem na stronie Github CocoaPods wspomina o sprawdzeniu faz kompilacji pod kątem prawdopodobnie tego konkretnego problemu (nawet bardziej podobnego, ponieważ mam wiele celów). Problem spowodował, że przewinąłem tutaj w dół ....
DanBlakemore

22

Mam podobny problem, to działało:

  1. W Xcode:
    • Czysty
    • Usuń pochodne dane w Xcode / Window / Organizer / Project / Your Project
    • Katalog Pod (zawiera pliki konfiguracyjne, usuwaj pliki, a nie tylko odniesienia!)
    • Usunięto wszystkie odniesienia do plików konfiguracji kapsuły dla każdego celu w Projekcie / konfiguracjach (debugowanie / wydanie)
    • Usunięto „Cele / fazy budowy / Kopiuj zasoby zasobników” ze wszystkich celów
    • Usunięto „Cele / Ustawienia kompilacji / Zdefiniowane przez użytkownika / PODS_ROOT” ze wszystkich celów
  2. Zamknij Xcode
  3. W katalogu projektu:
    • rm -rf Pods
    • (Opcjonalnie) rm -rf YourProject.xcworkspace
    • rm -rf Podfile.lock
  4. instalacja pod
  5. Otwórz YourProject.xcworkspace w Xcode

4
Nie tylko arbitralnie usuwaj swój obszar roboczy - Nawet jeśli obszar roboczy został utworzony przez Cocoapods, jest on utrzymywany przez Ciebie.
Joseph DeCarlo

To działało dla mnie, usuwając każdy plik związany z zasobnikami i ponownie instalując zasobniki.
Leena

15

Pozbyłem się tego samego problemu, wykonując następujące czynności:

  • Xcode->Product->Clean Build Folder(przytrzymaj klawisz Alt na produkcie, aby go zobaczyć)
  • Otwórz Xcode->Window->Organizeri wybierz Projectskartę. Następnie znajdź swój projekt i usuń derived data go.

1
Pracował dla mnie. Był zirytowany. Teraz szczęśliwy.
fresidue

W moim przypadku miałem problem z projektem github. Musiałem więc całkowicie usunąć katalog Project (rm -rf), zrobiłem powyższe, a następnie rozpakowałem projekt, zainstalowałem pod i otworzyłem przestrzeń xcworkspace i żadnych błędów!
rharvey

Pracował dla mnie. Dziękuję Ci.
xevser

10

Wystarczy rozwiązać, wykonując następujące czynności:

  • (sudo) gem zainstaluj cocoapods

  • instalacja pod

  • oczyść i zbuduj

Wygląda na to, że problem został spowodowany przez jednego z członków naszego zespołu, który niedawno zainstalował klejnot cocoapods.


1
Musiałem ponownie zainstalować cocoapod ORAZ zrestartować XCode, aby rozwiązać ten problem.
The Camster

Musiałem biec, gem install cocoapodsa potem pod installi prawie wszystko inne wspomniane w tym wątku ...
Echelon

9

  1. otwórz plik .xcodeproj w wysublimowanym tekście
  2. usuń te dwie linie, jeśli masz czyste foldery strąków, to znaczy, jeśli masz powyższe błędy po usunięciu folderu strąków

daje mi ld: nie znaleziono biblioteki dla -lPods - / * My Project Name * / Tests
SleepsOnNewspapers

czy to również da mi błędy w przyszłych instalacjach pod?
SleepsOnNewspapers

6

Miał ten sam problem, mówiąc: /Pods/Pods-resources.sh: Brak takiego pliku lub katalogu, nawet po usunięciu plików itp. Związanych z zasobnikami.

Pozbyłem się tego, przechodząc do fazy docelowej-> Kompilacji, a następnie usuwając fazę kompilacji „Kopiuj zasoby zasobnika”.


fajna poprawka, ale obawiam się, że po wyczyszczeniu projektu i danych pochodnych możesz zauważyć, dlaczego tego potrzebujesz :)
Julian Król

Wtedy otrzymuję błąd „.h” nie znaleziono pliku z fileName, który używa Pod
coolcool1994

4

Ostatnio miałem ten sam problem. Próbowałem wszystkich możliwych porad, nic oprócz tej wtyczki nie działało dla mnie:

https://github.com/kylef/cocoapods-deintegrate

Po wyczyszczeniu bieżącej integracji cocoapods pozostało do usunięcia Podfile, Podfile.lock i .xcworkspace. Następnie po prostu zainstaluj wszystko od nowa.

Mam nadzieję, że pomogę komuś z tym.


To była jedyna rzecz, która mnie naprawiła.
Charlie

Cieszę się, że mogłem pomóc Charliemu
Chiara,

4

Ten problem został rozwiązany.

  1. Wybierz cel swojego projektu
  2. Wybierz Ustawienia kompilacji
  3. Otwórz listę rozwijaną zdefiniowaną przez użytkownika
  4. Zmień wartość klucza PODS_ROOT na $ {SRCROOT} / Pods

Zrzut ekranu dla powyższych kroków


1
PODOBAŁEM TWOJEMU. Ale nadal pojawia się ten sam gówniany błąd. Co to jest!!! nikt nie ma na to poprawnej odpowiedzi.

@YumYumYum: Następnie spróbuj ponownie zainstalować swoje zasobniki.
Jayprakash Dubey,

Próbowałem przede wszystkim rozwiązań, ale to zadziałało. W moim przypadku pozostało ustawienie ścieżki w wydaniu.
Ankit Kargathra,

3

Myślę, że ma tutaj błąd.
Dla mnie usuwam Podsfolder Podfile.locki robię to pod installponownie, aby rozwiązać problem.
Ta wiadomość ignoruje .. :(


2

To nie było bardzo intuicyjne. Poszedłem do podstawowych ustawień projektu, a następnie zakodowałem ścieżki do mojego pod.lock i pod.manifest w Check Pods Manifest.lock, ponieważ w rzeczywistości pozostały one w różnych folderach, więc moje ścieżki wyglądały tak:

diff "/Users/admin/Desktop/Experimental/projectfolder/Podfile.lock" "/Users/admin/Desktop/Experimental/projectfolder/Pods/Manifest.lock" > /dev/null
if [[ $? != 0 ]] ; then
    cat << EOM
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
EOM
    exit 1
fi

Wygląda na to, że skrypt został wygenerowany przez CocoaPod. Gdzie umieściłeś ten skrypt?
Nickolas

2

Możesz wypróbować następujące. Naprawiono to dla mnie.

  1. install gem zainstaluj cocoapods-deintegrate
  2. zainstaluj klej zainstaluj cocoapods-clean
  3. goto pod deintegrate
  4. pod czyste
  5. instalacja pod

Wtyczki zostaną usunięte z cocoapods dla twojego projektu i zostaną świeżo zainstalowane.


2

W moim przypadku był to cel testowy, w którym usunąłem wszystkie strąki z mojego pliku pod (ponieważ dodałem strąki, które później uświadomiłem sobie, że nie potrzebuję w tym celu). Żadne z innych rozwiązań tutaj nie działało dla mnie.

  1. Przejdź do karty Fazy kompilacji w ustawieniach projektu dla celu, który powoduje problemy.

  2. Usuń sekcję „Sprawdź manifest pods” i „Kopiuj zasoby pod”

  3. W „Link Binary With Libraries” usuń libPods-YourTarget.a

  4. W ustawieniach projektu na karcie Informacje rozwiń „Konfiguracje” i ustaw konfigurację docelową na Brak dla debugowania i wydania. (To naprawi kilka brakujących ostrzeżeń o plikach)

  5. Usuń dane pochodne projektu (Okno> Projekty> Usuń [obok projektu) i uruchom ponownie Xcode. Zbuduj / uruchom cel.


2

To poprawiło mój dzień!

  1. Usuwanie pliku Podfile.lock z folderu projektu
  2. Usuwanie folderu Pods w folderze projektu
  3. Wykonać pod install w folderze projektu
  4. Wykonaj „Wyczyść” w Xcode
  5. Odbuduj swój projekt

1

W moim przypadku problem był niewłaściwy. rozwiązanie tutaj http://guides.cocoapods.org/using/troublesh.html

Jeśli coś nie działa, przede wszystkim upewnij się, że nie zastępujesz całkowicie opcji ustawionych w pliku Pods.xcconfig w ustawieniach kompilacji projektu. Aby dodać wartości do opcji z ustawień kompilacji projektu, należy poprzedzić listę wartości znakiem $ (dziedziczony) .


1

Miałem ten problem.

Sposób, w jaki to naprawiłem, polegał na całkowitym usunięciu implementacji i ponownej implementacji kapsuły. Pamiętaj, aby usunąć „Kopiuj zasoby zasobników” i „Sprawdź zasobnik Manifest.lock” z „Fazy kompilacji” na wszystkich obiektach docelowych, jak podano tutaj: Jak usunąć CocoaPods z projektu?


1

Aby pozbyć się tego błędu, musiałem usunąć Podskatalog i Podfile.lockplik.


Zgadzam się z tobą, zrobiłem wszystko, co zrobiłeś, włączając usunięcie pliku obszaru roboczego i zadziałało to dla mnie.
Alix

1

W moim przypadku podłączyłem Podfile.lock & Manifest.lock do kontroli źródła, ale zapomniałem dodać pliki Pods-Project.debug (release) .xcconfig do kontroli źródła (przez błędne dodanie * .xcconfig do .gitignore), a następnie otrzymałem te same błędy kompilacji z dokładnie tego samego powodu, PODS_ROOT nie jest ustawiony.

Więc jeśli celem jest to, że po klonowaniu repozytorium projekt może natychmiast zbudować i uruchomić, bez zainstalowanego CocoaPods na komputerze, albo dodajesz cały katalog Pods w kontroli źródła, albo dodajesz Podfile.lock, Manifest.lock, pliki xcconfig projektu i Pods pliki xcconfig do kontroli źródła.

Nie umieściłem prywatnego .xcconfig, który łączy ustawienia kompilacji z domyślną konfiguracją CocoaPods do kontroli źródła.


1

Po spędzeniu godzin znalazłem rozwiązanie, przejdź do „Fazy kompilacji”, a następnie „Sprawdź Pods Manifest.lock” Zaznacz „Uruchom skrypt tylko podczas instalacji”

Podziękujesz mi później ;)wprowadź opis zdjęcia tutaj


1

Miałem ten sam problem z moim projektem IONIC , próbowałem przede wszystkim rozwiązań, ale nie miałem szczęścia.

Jeśli nadal masz ten sam problem, sprawdź pogodę, czy poniższe ustawienia są obecne, Build Settings -> User-Defined settingsczy nie

1. PODS_ROOT 2.PODS_PODFILE_DIR_PATH

Jeśli nie jest obecny, dodaj go,

PODS_ROOT = ${SRCROOT}/Pods

PODS_PODFILE_DIR_PATH = ${SRCROOT}/

Rozwiąże problem, link do rozwiązania


0

Stworzyłem wiele celów, zanim użyłem strąków. Później, kiedy zacząłem kompilować inne cele, musiałem dodać link_with z listą celów w moim Podfile.


0

Miałem ten sam problem. Po sprawdzeniu ostatnich kroków odkryłem, że przyczyną problemu było dodanie deklaracji celu dla nowego celu, a następnie uruchomienie pod install,:

wprowadź opis zdjęcia tutaj

Resetowanie mojej gałęzi i czyszczenie mojego projektu nie działało, ponieważ Cocoapods zmodyfikował co najmniej jeden plik, który nie jest pod kontrolą źródła. Wiem to, ponieważ po zresetowaniu zdalnej gałęzi do zatwierdzenia przed dodaniem dodatkowego celu i ponownym sklonowaniu repozytorium problem przestał istnieć.


0

Jeśli masz cel watchOS: nagle zauważyłem, że posiadanie kapsułek w przedłużeniu zegarka, ale nie w samym celi zegarka, popsuło rzeczy z tym samym błędem. Rozwiązaniem było dodanie strąków również do celu zegarka.



0

jeśli dodałeś nowy cel po utworzeniu Podfile, po prostu usuń Podfile, Podfile.lock, folder Pods i obszar roboczy, a następnie zainicjuj pods -


0

Po wypróbowaniu powyższego zdałem sobie sprawę, że pojawia się błąd pod install

[!] CocoaPods nie ustawił podstawowej konfiguracji twojego projektu, ponieważ twój projekt ma już niestandardowy zestaw konfiguracyjny.

Powodowało to błąd, ponieważ cocoapods nie dodawał pliku .xcconfig do mojego projektu.

Aby rozwiązać ten problem, poszedłem do Infozakładki mojego projektu. Ustaw mój Na podstawie pliku konfiguracyjnego na Nonedla wszystkich schematów i celów. Potem ponownie pobiegłempod install

Zobacz ten link, aby uzyskać więcej informacji. Ostrzeżenie Cocoapods - CocoaPods nie ustawił podstawowej konfiguracji projektu, ponieważ ponieważ projekt ma już niestandardowy zestaw konfiguracji


0

W moim przypadku przypadkowo wpisałem niepotrzebną kropkę na końcu pliku konfiguracyjnego, co spowodowało ten dziwny problem. Upewnij się, że plik konfiguracyjny nie zawiera żadnych błędów!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.