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'
Brak uwagi
źródło
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
asgoth
źródło
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

Rozsądny
źródło
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

Jagie
źródło
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) ..

abbood
źródło
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.

Brak uwagi
źródło
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
Tibidabo
źródło
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.
Timuçin
źródło
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.

Diego
źródło
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
Ivan Zhang
źródło
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”.

roshi
źródło
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.

Chiara
źródło
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

Jayprakash Dubey
źródło
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 .. :(

Jasio
źródło
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
Vladimir Stazhilov
źródło
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.

MD Aslam Ansari
źródło
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.

Podkładka
źródło
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
alitosuner
źródło
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) .

R00We
źródło
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?

dloomb
źródło
1

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

BlackHatSamurai
źródło
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.

Qiulang
źródło
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

Abdul Hadi Siraj
źródło
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

Onkar
źródło
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.

Vladimír Slavík
źródło
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ć.

Sheamus
źródło
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.

Xaphod
źródło
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 -

mohammad alabid
źródło
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

Matt Hudson
źródło
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!

Jidong Chen
źródło