Erreurs CocoaPods lors de la construction du projet

178

Je ne parviens pas à créer un projet qui utilise CocoaPods. J'obtiens les erreurs suivantes:

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 installsemble fonctionner correctement et ajoute un Podsprojet à mon espace de travail. J'ai essayé $ pod updatemais cela n'aide pas.

Il semble que cela PODS_ROOTne soit pas réglé.

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'
Undistraction
la source
3
Une simple "installation de pod" corrige ce problème :)
onmyway133
Important! [!] From now on use MyProject.xcworkspace.pas te vieux `.xcodeproj '
Dawid Drozd
Lorsque vous testez dans un émulateur, il n'y a qu'un écran blanc
desigNerd

Réponses:

171

J'ai eu un problème similaire lorsque j'ai apporté des modifications majeures à mon Podfile. Ma solution était de supprimer le fichier de l'espace de travail et de le relancer pod install:

rm -rf MyProject.xcworkspace
pod install
asgoth
la source
17
Signifie que les cocoapodes ne sont pas installés correctement. runsudo gem install cocoapods
asgoth
4
gem install cocoapodsc'est encore mieux. La plupart du temps sudo, cela ne devrait pas être nécessaire avec des gemmes.
PatrickNLT
5
Votre réponse a fait ma journée. J'étais coincé dedans pendant des heures. hats off
shaikh
Merci pour cela, il a corrigé l'erreur. FWIW, j'ai eu l'erreur après avoir fait ungem update cocoapods
rounak
Problème résolu. Erreur lors de l'exécution de la "mise à jour du pod"
swebal
68

TLDR: Il s'agit probablement d'un bogue avec Xcode et la fermeture et la réouverture du projet sont généralement la solution la plus simple. En supposant que tout le reste est configuré correctement .


J'obtiens parfois la même erreur lors de la suppression du Podsrépertoire puis de l'exécution pod install.

Tout semble correct dans les informations du projet:

entrez la description de l'image ici

Cependant, lorsque je vais aux paramètres de construction définis par l'utilisateur de la cible, l'entrée PODS_ROOT est soit entièrement manquante, soit vide pour une ou plusieurs configurations. Ce qui provoque l'erreur suivante lors de la construction:

entrez la description de l'image ici

La solution la plus simple consiste à fermer le projet dans Xcode et à le rouvrir .

Si vous accédez aux paramètres de construction de la cible et filtrez sur Tout , vous verrez maintenant l' PODS_ROOTentrée sans erreur:

entrez la description de l'image ici

Il devrait maintenant se construire sans erreur.


Remarque: Même l'exemple officiel d'AFNetworking iOS de Cocoa Pods a ce problème, ce qui me porte à croire qu'il s'agit d'un bogue avec Xcode.

Une autre solution consiste à modifier manuellement la configuration en None, puis à revenir à sa valeur d'origine:

entrez la description de l'image ici

Sensé
la source
1
Cela s'est avéré être tout pour moi! Mon $ PODS_ROOT a été mal réglé
Alex Ryan
Après une longue recherche de correctif, j'ai pu le faire fonctionner sans erreur grâce à votre solution. Je devais juste changer les configurations en Aucune et revenir aux
pods
C'est BON de mettre NONE aidé.
32

Accédez à la cible Build Settingset assurez-vous que la valeur PODS_ROOTest égale à ${SRCROOT}/Podsdans la section "Défini par l'utilisateur".

entrez la description de l'image ici

Jagie
la source
Fonctionne très bien. C'est ce qu'il fallait.
pr4n
J'ai dû ajouter PODS_ROOTà ma cible avec ce chemin et alto (je l'ai également ajouté en header search pathstant que "$ (PODS_ROOT)" récursif
Jacksonkr
N'a pas fonctionné pour moi.
30

update: a podfile.lockest nécessaire et ne doit pas être ignoré par le contrôle de version, il garde une trace des versions des bibliothèques installées lors d'une certaine installation de pod. (C'est similaire à gemfile.lock et composer.lock pour les rails et la gestion des dépendances php, respectivement). Pour en savoir plus, veuillez lire la documentation . Le crédit va à cbowns .


Dans mon cas, ce que j'ai fait, c'est que je faisais un peu de ménage pour mon projet (c'est-à-dire que je dérivais les tests d'intégration en tant que sous-module git .. supprimais les fichiers en double, etc.) et poussais le résultat final dans un dépôt distant git. tous les clients qui ont cloné mon repo ont souffert de l'erreur ci-dessus. Inspiré par le commentaire de Hlung ci-dessus, j'ai réalisé qu'il y avait des scripts de pod pendants qui tentaient de s'exécuter sur des fichiers inexistants. Je suis donc allé à ma phase de construction cible, et j'ai supprimé toutes les phases restantes qui avaient quelque chose à voir avec les cabosses de cacao (et le commentaire de Hlung qu'il suggère de supprimer Copy Pods Manifest.locket copy pod resources... les miens ont été nommés différemment peut-être b / c j'utilise Xcode 5 .. le le but étant de supprimer ces phases de construction pendantes).

abbood
la source
1
Ce n'est pas Podfile.lockpour ça : lisez la documentation de Cocoapods sur "Travailler avec les équipes" pour plus d'informations à ce sujet.
cbowns
@cbowns vous avez absolument raison, merci pour le commentaire. J'ai mis à jour ma réponse.
abbood
12
J'ai supprimé mon fichier xcworkspace et j'ai installé le pod, mais j'obtiens toujours le même message d'erreur.
jowie
@jowie même ici ... pouvez-vous s'il vous plaît me guider si vous l'aviez résolu.
Bandish Dave
28

Il semble donc que CocoaPods n'a pas défini les configurations pour mon projet. Ils doivent être basés sur le Pods.xcconfigqui se trouve dans le Pods/Target Support Files/Pods. Pour que cela fonctionne, je devais faire ce qui suit:

  1. Faites glisser ce fichier dans mon projet Xcode dans Xcode, en choisissant de ne pas copier.
  2. Maintenant qu'il y a une référence dans notre projet, nous pouvons définir les configurations: entrez la description de l'image ici

J'ai ensuite eu une autre erreur de construction qui peut ou non avoir été liée. Le chemin d'accès au script shell défini dans le Copy Pods Resourcesétait incorrect.

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

Résolution incorrecte. Il semblait que SRCROOT ajoutait un répertoire supplémentaire qui n'existait pas dans le chemin. J'ai donc codé en dur le chemin d'accès au dossier Project.

Cela m'a permis de construire.

Pourquoi tant de choses censées vous faire gagner du temps finissent-elles par le dévorer?

Remarque: veuillez consulter la réponse de @ abood pour obtenir des explications.

Undistraction
la source
27
Si vous voyez cette erreur parce que vous avez supprimé tous les pods d'une cible, vous n'aurez plus aucun script de pod, mais il essaiera toujours de l'exécuter. Vous devrez accéder à votre phase de construction cible, et supprimer Copy Pods Manifest.locket Copy Pods Resourcesphases. Et également supprimer libPods.adans Link Binary avec des bibliothèques.
Hlung
@Hlung excellent commentaire .. il traite en fait la cause première du problème, j'ai essayé les solutions ci-dessus et je me suis quand même retrouvé avec un Podfile.lock (que la plupart des .gitignorefichiers sont configurés pour ignorer .. et à juste titre) .. ce fichier ne devrait pas ne restez pas à traîner ... Si vous l'avez écrit comme réponse, je vous donnerais un +1!
abbood
@abbood Écrivez-le et je vous donnerai la victoire.
Undistraction
Je voulais juste ajouter que ce problème sur la page Github de CocoaPods mentionne la vérification des phases de construction pour probablement ce problème exact (encore plus similaire puisque j'ai plusieurs cibles). Le problème m'a amené à faire défiler vers le bas ici ....
DanBlakemore
22

J'ai un problème similaire, voici ce qui a fonctionné:

  1. Dans Xcode:
    • Nettoyer
    • Supprimer les données dérivées dans Xcode / Window / Organizer / Project / Your Project
    • Répertoire de pod (il contient des fichiers de configuration, supprimez des fichiers pas seulement des références!)
    • Suppression de toutes les références aux fichiers de configuration du pod pour chaque cible dans Project / Configurations (débogage / version)
    • Suppression de "Targets / Build Phases / Copy Pods Resources" de toutes les cibles
    • Suppression de "Targets / Build Settings / User-Defined / PODS_ROOT" de toutes les cibles
  2. Quitter Xcode
  3. Dans votre répertoire de projet:
    • Pods rm -rf
    • (Facultatif) rm -rf YourProject.xcworkspace
    • rm -rf Podfile.lock
  4. installation du pod
  5. Ouvrez YourProject.xcworkspace dans Xcode
Tibidabo
la source
4
Ne supprimez pas simplement votre espace de travail de manière arbitraire - Même si votre espace de travail a été créé par Cocoapods, il est géré par vous.
Joseph DeCarlo
Cela a fonctionné pour moi, supprimant tous les fichiers liés aux pods et les pods réinstallés.
Leena
15

Je me suis débarrassé du même problème en suivant les étapes suivantes:

  • Xcode->Product->Clean Build Folder(maintenez la touche Alt sur le produit pour le voir)
  • Ouvrez Xcode->Window->Organizeret sélectionnez l' Projectsonglet. Recherchez ensuite votre projet et supprimez derived data le projet.
Timuçin
la source
1
A travaillé pour moi. Était ennuyé. Maintenant heureux.
fresidue
Dans mon cas, j'ai eu des problèmes avec un projet github. J'ai donc dû supprimer complètement le répertoire du projet (rm -rf), faire ce qui précède, puis décompresser le projet, installer le pod et ouvrir le xcworkspace et aucune erreur!
rharvey
A travaillé pour moi. Merci.
xevser
10

Simplement résolu en procédant comme suit:

  • (sudo) gem installer des cocoapodes

  • installation du pod

  • nettoyer et construire

il semble que le problème ait été causé par l'un des membres de notre équipe ayant une installation plus récente de gemmes de cocoapodes.

Diego
la source
1
J'ai dû réinstaller les cocoapods ET redémarrer XCode pour résoudre ce problème.
The Camster
Dû courir gem install cocoapodset puis pod installet à peu près tout le reste mentionné sur ce fil ...
Echelon
9

  1. ouvrir le fichier .xcodeproj dans un texte sublime
  2. supprimez ces deux lignes, si vous avez des dossiers de pods propres, je veux dire si vous avez les erreurs ci-dessus après avoir supprimé le dossier de pods
Ivan Zhang
la source
me donne un ld: bibliothèque introuvable pour -lPods - / * Nom de mon projet * / Tests
SleepsOnNewspapers
Cela me donnera-t-il également des erreurs sur les futures installations de pod?
SleepsOnNewspapers
6

J'ai eu le même problème en disant /Pods/Pods-resources.sh: Aucun fichier ou répertoire de ce type, même après la suppression des fichiers, etc. liés aux pods.

Débarrassez-vous de cela en allant à cible-> Phases de construction puis en supprimant la phase de construction "Copier les ressources du pod".

Roshi
la source
correctif sympa mais j'ai peur après le nettoyage du projet et des données dérivées, vous remarquerez peut-être pourquoi vous en avez besoin :)
Julian Król
Ensuite, j'obtiens une erreur de fichier ".h" introuvable de fileName qui utilise le pod
coolcool1994
4

J'ai eu le même problème récemment. J'ai essayé tous les conseils possibles, rien à part ce plugin n'a fonctionné pour moi:

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

Après le nettoyage de l'intégration actuelle des cocoapodes, ce qui reste à supprimer sont Podfile, Podfile.lock et le .xcworkspace. Ensuite, installez à nouveau.

J'espère que j'aiderai quelqu'un avec ça.

Chiara
la source
C'était la seule chose qui a résolu le problème pour moi.
Charlie le
Je suis content de pouvoir aider Charlie
Chiara
4

Ce problème l'a résolu.

  1. Sélectionnez la cible de votre projet
  2. Sélectionnez Paramètres de construction
  3. Ouvrir la liste déroulante définie par l'utilisateur
  4. Remplacez la valeur de la clé PODS_ROOT par $ {SRCROOT} / Pods

Capture d'écran des étapes ci-dessus

Jayprakash Dubey
la source
1
J'ai aimé le vôtre. Mais j'ai toujours la même erreur de merde. Qu'est-ce que c'est!!! personne n'a de réponse correcte à ce sujet.
@YumYumYum: Essayez ensuite de réinstaller vos pods.
Jayprakash Dubey
J'ai essayé avant toutes les solutions mais celle-ci a fonctionné. Dans mon cas, il restait à tracer la voie dans un communiqué.
Ankit Kargathra
3

Je pense qu'il y a un bug ici.
Pour moi, je supprime le Podsdossier et Podfile.lockje pod installrecommence pour résoudre le problème.
Ce message est ignoré .. :(

Johnny
la source
2

Ce n'était pas très intuitif. Je suis allé aux paramètres du projet de base, puis j'ai codé en dur les chemins vers mon pod.lock et pod.manifest sous Check Pods Manifest.lock, car ils sont restés dans des dossiers différents en fait, donc mes chemins ressemblaient à ceci:

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
la source
Le script semble être généré par CocoaPod. Où avez-vous mis ce script?
Nickolas
2

Vous pouvez essayer ce qui suit. Il a réglé pour moi.

  1. installer gem installer cocoapods-deintegrate
  2. installer gem installer cocoapods-clean
  3. goto pod désintégrer
  4. pod propre
  5. installation du pod

Les plugins seront supprimés des cocoapods pour votre projet et s'installeront fraîchement.

MD Aslam Ansari
la source
2

Dans mon cas, il s'agissait d'une cible de test dont j'ai supprimé tous les pods de mon podfile (car j'ai ajouté des pods dont j'ai réalisé plus tard que je n'avais pas besoin dans cette cible). Aucune des autres solutions ici n'a fonctionné pour moi.

  1. Accédez à l'onglet Phases de construction dans les paramètres du projet pour la cible qui pose problème.

  2. Supprimez la section intitulée «Vérifier le manifeste des pods» et «Copier les ressources des pods»

  3. Dans "Link Binary With Libraries", supprimez libPods-YourTarget.a

  4. Dans les paramètres de votre projet dans l'onglet Info, développez "Configurations" et définissez la configuration de la cible sur Aucune pour le débogage et la version. (Cela corrigera quelques avertissements de fichiers manquants)

  5. Supprimez les données dérivées de votre projet (Fenêtre> Projets> Supprimer [à côté de votre projet) et redémarrez Xcode. Cible de construction / exécution.

cale
la source
2

Cela a fait ma journée!

  1. Suppression du fichier Podfile.lock dans votre dossier de projet
  2. Suppression du dossier Pods dans votre dossier de projet
  3. Exécuter pod installdans votre dossier de projet
  4. Faites un «nettoyage» dans Xcode
  5. Reconstruisez votre projet
alitosuner
la source
1

Dans mon cas, le problème était dans le mauvais sens. solution ici http://guides.cocoapods.org/using/troubleshooting.html

Si quelque chose ne semble pas fonctionner, assurez-vous tout d'abord de ne pas remplacer complètement les options définies dans le fichier Pods.xcconfig dans les paramètres de construction de votre projet. Pour ajouter des valeurs aux options à partir des paramètres de construction de votre projet, ajoutez au début de la liste de valeurs $ (inherited) .

R00We
la source
1

J'ai eu ce problème.

La façon dont je l'ai résolu était de supprimer complètement l'implémentation du pod et de le réimplémenter. Assurez-vous de supprimer "Copy Pods Resources" et "Check Pods Manifest.lock" de "Build Phases" sur toutes les cibles comme indiqué ici: Comment supprimer CocoaPods d'un projet?

dloomb
la source
1

Pour me débarrasser de cette erreur, je devais supprimer le Podsrépertoire et supprimer le Podfile.lockfichier.

NoirChapeauSamouraï
la source
Je suis d'accord avec vous, j'ai fait tout ce que vous avez fait, y compris la suppression du fichier d'espace de travail et cela a fonctionné pour moi.
Alix
1

Dans mon cas, j'ai mis Podfile.lock & Manifest.lock dans le contrôle de code source, mais j'ai oublié d'ajouter les fichiers Pods-Project.debug (release) .xcconfig au contrôle de source (en ajoutant par erreur * .xcconfig à .gitignore), puis je obtenu les mêmes erreurs de compilation avec exactement la même raison, PODS_ROOT n'est pas défini.

Donc, si l'objectif est qu'après le clonage du référentiel, le projet puisse immédiatement générer et exécuter, sans que CocoaPods soit installé sur la machine, vous ajoutez soit le répertoire Pods entier dans le contrôle de source, soit vous ajoutez Podfile.lock, Manifest.lock, les fichiers xcconfig du projet et Transfère les fichiers xcconfig vers le contrôle de code source.

Je n'ai pas mis le .xcconfig privé qui fusionne les paramètres de construction avec la configuration par défaut de CocoaPods au contrôle de source.

Qiulang
la source
1

Après avoir passé des heures, j'ai trouvé la solution aller à "Build Phases" puis "Check Pods Manifest.lock" Tick "Run Script only lors de l'installation"

Remercie moi plus tard ;)entrez la description de l'image ici

Abdul Hadi Siraj
la source
1

J'ai eu le même problème avec le projet my IONIC , j'ai surtout essayé des solutions mais pas de chance.

Si vous rencontrez toujours le même problème, vérifiez que les paramètres météorologiques ci-dessous sont présents Build Settings -> User-Defined settingsou non

1. PODS_ROOT 2.PODS_PODFILE_DIR_PATH

S'il n'est pas présent, ajoutez-le,

PODS_ROOT = ${SRCROOT}/Pods

PODS_PODFILE_DIR_PATH = ${SRCROOT}/

Cela résoudra le problème, le lien de la solution

Onkar
la source
0

J'ai créé plusieurs cibles avant d'utiliser des pods. Plus tard, quand j'ai commencé à compiler les autres cibles, j'ai dû ajouter link_with avec la liste des cibles dans mon Podfile.

Vladimír Slavík
la source
0

J'ai eu le même problème. Après avoir retracé mes étapes récentes, j'ai trouvé que l' ajout d'une déclaration de cible pour une nouvelle cible, suivie de l'exécution pod install,était la cause du problème:

entrez la description de l'image ici

La réinitialisation de ma branche et le nettoyage de mon projet n'ont pas fonctionné, car Cocoapods a modifié au moins un fichier qui n'est pas sous contrôle de code source. Je le sais, car une fois que j'ai réinitialisé la branche distante sur un commit avant d'ajouter la cible supplémentaire, et re-cloné le dépôt, le problème n'existait plus.

Sheamus
la source
0

Si vous avez une cible watchOS: j'ai trouvé que soudainement, avoir des pods dans l' extension de la montre mais pas dans la cible de la montre elle-même a cassé les choses avec cette même erreur. La solution était d'ajouter les pods à la cible de la montre également.

xaphod
la source
0

si vous avez ajouté une nouvelle cible après avoir créé Podfile, supprimez simplement Podfile, Podfile.lock, le dossier Pods et l'espace de travail puis init pods -> puis installez votre pods pod

mohammad alabid
la source
0

Après avoir essayé ce qui précède, j'ai réalisé que j'obtenais une erreur sur pod install

[!] CocoaPods n'a pas défini la configuration de base de votre projet car votre projet a déjà un jeu de configuration personnalisé.

Cela provoquait l'erreur, car cocoapods n'ajoutait pas le fichier .xcconfig à mon projet.

Pour résoudre ce problème, je suis allé dans l' Infoonglet de mon projet. Définissez mon fichier de configuration basé sur Nonepour tous les schémas et cibles. Puis re-courupod install

Voir ce lien pour plus d'informations. Cocoapods Warning - CocoaPods n'a pas défini la configuration de base de votre projet car votre projet a déjà un jeu de configuration personnalisé

Matt Hudson
la source
0

Dans mon cas, j'ai accidentellement tapé un point inutile à la fin du fichier de configuration qui a causé cet étrange problème. Veuillez vous assurer que votre fichier de configuration ne contient aucune erreur!

Jidong Chen
la source