J'ai eu une erreur lors de l'archivage d'un projet. Ceci est mon environnement.
La cible de déploiement du projet est:
IPHONEOS_DEPLOYMENT_TARGET 3.2
L'erreur montre:
ld: library not found for -lPods
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Je suppose que Pods est un CocoaPods que j'ai utilisé pour gérer les dépendances de projets XCode. https://github.com/CocoaPods/CocoaPods
C'est mon podfile
platform :ios
dependency 'libPusher', '1.1'
Je ne suis pas sûr de ce que l'erreur signifie?
Ouvrez-vous l'espace de travail (généré par CocoaPods) au lieu de xcodeproj?
J'ai séparé l'application et les cibles de test dans le fichier podfile en utilisant
target :App do
…
end
target :AppTests do
…
end
Cela a abouti à deux nouveaux produits libPods-App.a et libPods-AppTests.a, respectivement, qui ont rendu le produit précédent libPods.a obsolète. J'ai dû supprimer ce produit de la configuration de la {section Lien binaire avec bibliothèques} de la configuration de la {phases de construction} des deux cibles.
J'ai rencontré un problème similaire aujourd'hui.
Preview
avec les Debug
et Release
existantsMaintenant, lors de la compilation sur cette nouvelle configuration Preview
, le compilateur ne pourrait pas se lier à des pods et me donner ce message
ld: library not found for -lPods
Ce que je devais faire était de courir
pod install
à nouveau et ainsi configurer les cocoapods pour la nouvelle configuration Preview
. Il a mis à jour mon projet, l'espace de travail et le fichier de projet du pod, et le problème a disparu
Assurez-vous que vous ouvrez .xcworkspace
, pas .xcodeproj
Pas une solution qui a fonctionné pour moi, c’est vraiment insupportable, il y a un fichier libpods.a
(qui était de couleur rouge) je l’ai enlevé et tout fonctionne bien! Bravo à moi;)
J'avais divisé mes listes de pods dans la Podfile
pour différentes cibles, telles que:
target :ABC do
pod 'KissXML', '~> 5.0'
pod 'libPhoneNumber-iOS', '~> 0.7.2'
end
target :ABCTests do
pod 'OCMock', '~> 2.2.1', :inhibit_warnings => true
end
Et a couru un pod install
Cela a créé une nouvelle bibliothèque libPods-ABC.a
à laquelle mon binaire devait se lier. Mais le problème était qu’elle n’avait pas supprimé la bibliothèque précédente, à savoir libPods.a
.
Solution: Supprimez la bibliothèque libPods.a
de Build Phases
sur Link Binary With Libraries
.
si vous rencontrez des problèmes avec cela sur cocoapods v25/Xcode 5
Le projet Podcode Xcode définit maintenant le paramètre de construction ONLY_ACTIVE_Arch sur YES dans la configuration de débogage. Vous devrez définir la même chose sur votre projet/cible, sinon la construction échouera.
MISE À JOUR Assurez-vous que vous avez les dernières gemmes/cocoapodes
Vous voudrez reconstruire le projet en utilisant Pod Install pour reconstruire le projet.
J'avais un ancien fichier libPod.a spécifié (probablement dû au fait que je changeais de cible).
Paramètres du projet -> Phases de construction -> Lien binaire avec bibliothèques
En règle générale, les cocoapodes n'incluent qu'une seule bibliothèque, telle que libPods-target.a
ou libPods.a
. Je l'ai résolu en supprimant le duplicata.
Si Xcode se plaint lors de la liaison, par exemple, Bibliothèque introuvable pour -lPods, elle ne détecte pas les dépendances implicites.
Allez à Product> Edit SchemeCliquez sur Build Ajoutez la bibliothèque statique Pods et assurez-vous qu’elle se trouve en haut de la liste Nettoyez et reconstruisez à nouveau Si cela ne fonctionne pas, vérifiez que la source de la spécification que vous essayez d'inclure a été extraite de github. Faites cela en regardant dans/Pods /. S'il est vide (ce ne devrait pas être le cas), vérifiez que le fichier ~/.cocoapods/master //. Podspec contient l'URL du hub git correct . Si cela ne fonctionne toujours pas, vérifiez les paramètres de votre emplacement de compilation XCode. Allez dans Préférences -> Emplacements -> Données dérivées -> Avancé et définissez l'emplacement de construction sur «Relatif à l'espace de travail».
J'ai eu le même problème lorsque j'ai édité le Podfile en ajoutant la cible que j'utilisais sans cible auparavant.
target 'xxxx' do
pod 'xyz'
pod 'abc'
end
Après m'être interrogé, j'ai constaté que, sous les propriétés de la cible >> onglet Général >> section Cadres et bibliothèques liés, voici le nouveau libPods-xxxx.a et l'ancien libPods.a
Je viens de retirer libPods.a et tout a bien fonctionné.
Le wiki de CocoaPods sur GitHub a la réponse directement dans leur FAQ :
Product > Edit Scheme
Build
<Project Dir>/Pods/<Name of spec you are trying to include>
. S'il est vide (ce ne devrait pas être le cas), vérifiez que le ~/.cocoapods/master/<spec>/<spec>.podspec
contient l'URL github correcte.Preferences -> Locations -> Derived Data -> Advanced
et définissez l'emplacement de génération sur "Relative à l'espace de travail".Je renommais le projet en "NBSelector" sous "Partenaires".
J'avais l'erreur "Bibliothèque introuvable pour libPods-Partners" après avoir renommé le projet. Xcode essayait de créer un lien vers l'ancien fichier Partners.a. Supprimez-le si vous avez podInstalled après avoir renommé.
Utiliser ONLY_ACTIVE_Arch = NO dans tous les pods a résolu le problème pour moi. Pour rendre cela persistant, j'ai ajouté un hook post_install à mon Podfile:
post_install do |installer_representation|
installer_representation.project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_Arch'] = 'NO'
end
end
end
pod install
et vous avez terminé.
Dans mon cas, le problème était que l'emplacement des données dérivées de Xcode était défini sur l'option "Legacy". La cible CocoaPods (libPods.a) était correctement construite, mais Xcode cherchait au mauvais endroit.
Le basculement sur "Unique" (valeur par défaut) a résolu le problème. Vous pouvez le faire en allant dans Préférences> Emplacements et en cliquant sur le bouton Avancé ....
Avez-vous créé «Distribution» ou une configuration similaire pour créer des archives Ad-Hoc et App Store? Eh bien, c’était peut-être une recommandation avant d’introduire des schémas et une option "Distribuer" dans Organizer, de toute façon, je l’avais juste avant.
Ensuite, j'ai eu le même problème avec les pods. Tout a bien fonctionné lors du débogage, mais l'archivage a échoué avec une erreur de liaison. Après avoir essayé ceci et cela, j'ai changé la configuration d'archivage de mon projet d'origine de 'Distribution' à 'Release' et l'erreur de lien avait disparu.
Pourtant, l'archive ne s'est pas affichée dans Organizer, bien que je puisse la localiser dans le système de fichiers, mais sa taille était 0.
La dernière étape pour remédier à tout cela a été de changer le paramètre "Ignorer l'installation" pour la configuration de "Validation" en "NON". Notez que vous devez le faire uniquement pour votre projet principal, mais pas pour le projet Pods. Il vaut mieux laisser le projet Pods en l’état, car il est généré à chaque fois que vous exécutez «l’installation du pod».
Update Je viens de recevoir une réponse de la part de dev. CocoaPods Cela ne semble pas fonctionner pour moi, car la configuration de Pods a été correctement définie . Mais cela pourrait aider quelqu'un d'autre.
Ajouter uniquement les "Chemins de recherche de bibliothèque" (dans les paramètres de construction de "MyProject") à "Pods/build/Debug-iphonesimulator" a fonctionné pour moi (avec le simulateur).
Je l’ai compris ici: https://github.com/CocoaPods/CocoaPods/issues/121#issuecomment-5452473
J'ai constaté que la sélection de "Rechercher les dépendances implicites" (sous le modèle produit/modification) résoudrait ce problème au lieu de devoir ajouter des modules en tant que cible.
Si vous archivez pour iOS7 et Xcode5 et que vous rencontrez ces erreurs, veuillez vous reporter à ce lien. Il semble que Apple abandonne une architecture dont les cosses de cacao avaient besoin https://github.com/CocoaPods/CocoaPods/pull/1352
J'ai utilisé l'ancienne version de cocoapod après la mise à jour des cocoapods, il me suggère de mettre à jour mon pod installé à cause d'une mise à jour majeure lorsque je mets à jour après une longue période. Je le mets à jour et les nouveaux modules de version ont été mis à jour correctement. Mais après cela, j'ai eu l'erreur comme library not found for -lPods-xxxprojectName-xxxxxpodName
Après avoir essayé tant de solutions données comme réponse dans ce thred, aucune de cela n'a fonctionné pour moi. Ensuite, je suis allé dans les paramètres de mon projet et j'ai constaté que le chemin des pods était modifié, ce qui se trouvait sur Other Linker Flag
Vérifiez votre Manage Schemes
pour le nom de pod correct et comparez-le dans Other Linker Flag
, modifiez-le s'il n'est pas similaire
L'ancien chemin d'accès au pod était -l"lPods-xxxprojectName-xxxxxpodName"
Mais les nouveaux pods étaient seulement xxxxxpodName
alors j’ai remplacé Other Linker Flag
par un nouveau comme ci-dessous
Changé pour le chemin de pod -l"xxxxxpodName"
et cela a fonctionné.
Je ne connais pas la raison parfaite derrière cela, mais cela pourrait aider quelqu'un.
J'ai parcouru toutes les réponses ici, mais pour moi, c'était extrêmement simple ... Allez à Cible -> Construire les phases, puis supprimez libPods-YourProject.a, puis ajoutez-le à nouveau à l'aide du "+". Ne vous inquiétez pas de la couleur rouge de la bibliothèque, ça va.
Dans mon cas, pod install
a résolu le problème après la création de schémas de distribution et de publication.
Résolu en prenant les mesures ci-dessous:
si vous utilisez iOS7 et Xcode 5, procédez comme suit:
essayer
link_with 'YouTarget1', 'YouTarget2' ...
Mon projet a fonctionné, les cibles ont soudainement cessé de se compiler. Puis ajouté "link_with" et retour à la normale.
Apparemment, maintenant, il se connecte simplement à la première cible, est ce que le lien dit:
Utilisation de Xcode 5 avec iOS 7
C'est ce que j'ai fait après avoir été bloqué pendant une heure. Supprimez ARM64 du paramètre de construction> Architecture valide.
ADDED: En outre, dans mon cas, il ne s'agissait pas d'un emplacement de données dérivé. J'ai choisi unique pour l'emplacement de construction.
J'ai eu le même problème lors de l'archivage pour soumettre. Des discussions sur ce sujet sont disponibles à l’adresse suivante: https://github.com/CocoaPods/CocoaPods/issues/155
En résumé, deux méthodes fonctionnent pour moi:
- platform :ios, :deployment_target => "5.0"
J'ai essayé chaque réponse dans ce fil en vain. Enfin, mon problème a été résolu en faisant correspondre le "Chemin des produits de génération de pré-configuration" de mon projet cible avec la valeur du projet Pods. Il s'avère qu'ils construisaient vers deux emplacements de sortie différents. Aucune des autres suggestions de ce fil n'était pertinente pour moi. Ce serait bien si XCode donnait une description d'erreur utile (comme pourquoi il ne peut pas utiliser lib - Fichier non trouvé, Aucune architecture correspondante trouvée, etc.).
Dans ce numéro, si vous avez déjà installé et mis à jour le pod dans votre système, votre Xcode ne pourra pas trouver la bibliothèque de pods. Pour résoudre ce problème, veuillez vérifier les causes suivantes:
Si vous rencontrez toujours ce problème, essayez:
pod update
A fait le travail pour moi, espérons que cela vous aide.
J'ai ouvert l'espace de travail, mais j'ai eu la même erreur.
Construire une architecture active uniquement défini surYES
résoudre mon problème.
Pour simplifier la réponse de @ i4niac:
Une autre cause fréquente est une incompatibilité dans la configuration de construction du schéma . Dans notre cas, notre schéma 'AppName-AppStore' avait "Release" comme configuration de construction d'archive au lieu de "AppStore" autres).
J'ai résolu ce problème en définissant des architectures et des architectures valides identiques pour tous les modules comme pour mon projet. La solution du trou dans mon cas était donc:
J'ai eu le même problème. Il s’est avéré qu’il s’agissait d’un bogue xCode dans mon cas. Tout ce que je devais faire était d'enlever les "Arches valides", de les nettoyer, de les rajouter et j'étais prêt à partir. Essayez également les cocoapodes mis à jour en général.
J'ai eu ça aussi, la version 0.28.0 de Cocoapods
Solution facile ici, pas de lecture interminable.
Il me manquait libPods.a
dans target
, donc la première chose à faire est de l'ajouter à frameworks et bibliothèques liés.
Ensuite, Produit -> Construire pour -> Profilage/ (ou avant d'ajouter libPods.a, si vous le manquez complètement)
et enfin, vérifiez votre script ressources de modules de copie dans phases de construction/ (si c'est la même chose que votre deuxième cible - cela dépend parfois de Podfile et de ses cibles). Ensuite, vous devez construire avec succès.
renommé le fichier some_project.workspace en some_project.workspace.backup et a exécuté l'installation $ pod Il a créé un nouveau fichier d'espace de travail et l'erreur a disparu.
J'ai rencontré un problème où j'avais créé mon propre .xcworkspace
qui conservait la forme des pods pour créer son propre (où est l'endroit où il attache sa bibliothèque).
J'ai déplacé le .xcworkspace
que j'avais créé, exécuté à nouveau pod install
, puis fusionné manuellement mon .xcworkspace
avec celui pods créé en ouvrant les deux espaces de travail et en faisant glisser des fichiers d'un espace de travail à l'autre.
essayez d'ouvrir le fichier xcworkspace au lieu du fichier xcodeproj
Supprimer les dossiers de cache CocoaPods ~/Library/Caches/CocoaPods et le module d’installation me conviennent.
Dans mon cas, le numéro 4 de la FAQ de ce lien m'a aidé: https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods
Si le problème persiste, vous pouvez essayer quelques solutions supplémentaires.