J'ai un projet iOS utilisant CocoaPods. Tout fonctionnait bien jusqu'à ce qu'un autre développeur commence à travailler sur le même projet. Il a fait quelques changements (seulement au code pour autant que je sache) et a fait une nouvelle branche dans le repo. J'ai vérifié sa branche et essayé de la construire, mais j'obtiens une erreur: fichier ASLogger / ASLogger.h introuvable.
Même si je supprime tout le projet et que je fais une nouvelle copie et que j'utilise «pods install». l'échec de la construction est toujours là. Avez-vous une idée de l'origine du problème? Si vous avez besoin de plus d'informations, demandez simplement.
Réponses:
Mettre à jour
Assurez-vous que vos
Podfile
inclusionslink_with
sur les cibles n'ont pas de fichier de configuration. Cocoapods ne définit que la première cible par défaut sinon. par exemple------ Mettre fin à la mise à jour
Remarque: veuillez noter que vous devez regarder dans Project-> Info-> Configurations pour les étapes ci-dessous.
J'ai eu des symptômes similaires et j'ai constaté que le
pods.xcconfig
fichier n'était pas inclus dans le fichier spécifiquetarget
que j'essayais de créer. Certaines des autres solutions suggérées ont fonctionné pour moi, mais celle-ci semblait aborder une partie du problème sous-jacent.La solution simple était de modifier l'ensemble du fichier de configuration pour les cibles qui n'en avaient pas.
la source
link_with
pour spécifier mon autre objectif a fonctionné pour moi. Merci beaucoup. Je viens de passer plusieurs heures là-dessus.link_with
n'est pas pris en charge dans Cocoapods 1.0 ou supérieur.Mettre à jour
J'ai mis à jour cela depuis ma réponse originale, qui a obtenu le vote négatif, alors j'espère que cela vous aidera. Et si tel est le cas, j'espère qu'il obtiendra mon vote.
Si les en-têtes ne sont pas importés, vous avez probablement un conflit dans le fichier
HEADER_SEARCH_PATHS
. Essayez d'ajouter$(inherited)
aux chemins de recherche d'en-tête dans vos paramètres de construction pour vous assurer qu'il extrait tous les chemins de recherche inclus dans le fichier .xcconfig de vos CocoaPods.Cela devrait aider à résoudre les conflits et à importer correctement votre source.
la source
1. vérifier
2.Vérifiez le style d'importation (POINT CLÉ), si vous
podfile
avez définiuse_frameworks!
Dans le vôtre
File-Bridging-Header.h
, le formateur devrait aimer ceci#import "MBProgressHUD.h"
sinon devrait être en dessous
#import <MBProgressHUD.h>
3. Cela doit être du travail! croyez-moi
la source
Fichiers d'en-tête, vous serez ma mort ...
Enfin, il a fonctionné en ajoutant (y compris les citations)
à l'entrée Chemins de recherche d'en-tête utilisateur et en cochant «récursif».
la source
$(inherited)
(ne fonctionnait pas) mais l'ajout de cela a fonctionné pour moi.J'ai trouvé qu'il
${PODS_HEADERS_SEARCH_PATHS}
manquait et qu'il n'était pas défini dans ma branche de développement git, j'ai donc ajouté"$(SRCROOT)/Pods/Headers/"
pour les chemins de recherche d'en-tête avec récursifÇa me va
la source
$(SRCROOT)/Pods/Headers
Les deux autres réponses n'ont pas aidé ici. J'ai trouvé 2 autres problèmes qui pourraient le résoudre:
Le projet-> Info-> Configurations dans le projet Xcode (votre projet) doit être défini sur «Pods» pour le débogage, la publication (et tout ce que vous avez). Voir "En-têtes non trouvés - chemins de recherche non inclus"
Vous devrez peut-être lier la cible avec la commande link_with. Voir «Impossible de trouver les en-têtes dans le projet de bibliothèque statique»
EDIT Vous pouvez vérifier un lien symbolique de cette façon: créez un fichier texte nommé 'check' sans extension. copiez-y ces lignes:
Ensuite, allez dans le terminal, passez dans le dossier où se trouve votre fichier de chèque et tapez
la source
Voici ce qui a fonctionné pour moi:
Accédez à l'onglet Cible> "Paramètres de construction" et recherchez le paramètre "Chemins de recherche des en-têtes d'utilisateurs".
Définissez ceci sur "$ (BUILT_PRODUCTS_DIR)" et cochez la case "Récursive".
Désormais, la cible construite recherchera dans le répertoire de construction partagé de l'espace de travail pour localiser les fichiers d'en-tête pouvant être liés.
====
METTRE À JOUR
J'ai eu un problème similaire (bien que légèrement différent) récemment. Il s'est avéré que Xcode ne pouvait pas trouver les pods parce que j'avais ouvert le
.xcodeproj
fichier plutôt que le.xcworkspace
fichier. Pourrait aider les autres à l'avenir.la source
pod install
et rouvert.Si rien de ce qui précède n'a fonctionné pour vous et que vous trouvez cette erreur parce que vous venez de passer à
use_frameworks!
votre Podfile, lisez la suite:J'ai essayé toutes les solutions ci-dessus et bien d'autres avant d'apprendre qu'il ne s'agit pas du tout de chemins d'en-tête de recherche dans mon cas particulier; c'est que lorsque vous passez à
use_frameworks!
dans votre Podfile, vous n'avez plus besoin d'inclure des frameworks dans votre en-tête de pontage, et en fait Xcode lancera l'erreur très inutile "impossible de trouver l'en-tête".Ce que vous devez faire est de supprimer toutes les importations de votre fichier d'en-tête de pontage et d'utiliser à la place le Swift
import Module
dans vos fichiers Swift individuels si nécessaire, comme vous le feriez pour les frameworks Swift.ET si vous utilisez l'un des en-têtes du framework dans vos classes Obj-C (dans mon cas, nous avons une classe de commodité qui utilisait le FBSDK), vous devez le changer d'une importation locale à une importation globale (cela signifie changer
#import "Module.h"
en#import <Module/Module.h>
, qui devrait se compléter automatiquement pour vous lorsque vous commencez à taper le nom du framework. Dans mon cas, c'était le cas<AFNetworking/AFHTTPRequestOperationManager.h>
).Edit: J'ai appris depuis que faire un
@import Module
utilise le fichier parapluie qui est encore plus sûr.la source
Avez-vous essayé d'importer le style Cocoapods?
Les informations sur le site ne sont pas vraiment claires, j'ai soumis une pull request:
https://github.com/CocoaPods/cocoapods.org/pull/34
Mise à jour: ils ont retiré ma demande :)
la source
Le wiki donne des conseils sur la façon de résoudre ce problème:
la source
$(PROJECT_DIR)/Pods/Headers/Public/xxx/ios/xxx.h
, il y a un extra deios
dossier ...J'étais le seul développeur de l'équipe à rencontrer le même problème, cela fonctionnait parfaitement pour tout le monde, alors j'ai réalisé que c'était mon environnement. J'ai essayé un
git clone
du même projet dans un autre répertoire et il s'est parfaitement compilé, puis j'ai réalisé qu'il devait s'agir de trucs de mise en cache Xcode pour le chemin de mon projet quelque part, que «quelque part» se trouve le dossier DerivedData, supprimez-le simplement et faites une compilation propre de votre projet, cela a fonctionné pour moi.Vous pouvez obtenir le chemin et même ouvrir le dossier dans le Finder en allant sur:
Xcode -> Préférences -> Emplacements -> ** DerivedData
la source
Je mettrai à jour les éléments ci-dessous dans mes paramètres de construction et je n'ai reçu aucune erreur. Pour vérifier ce sont les choses lors de la mise à jour de vos cocoapodes.
Paramètres de construction
Construire l'architecture uniquement
Chemin de recherche
la source
Si vous avez eu des erreurs de construction après une " installation de pod " ou une " mise à jour de pod ", il se peut que l'un de vos pods ait été construit avec XCode 6.3 alors que vous utilisez toujours une version précédente.
Dans mon cas, j'ai dû mettre à jour mon OSX de mavericks vers Yosemite pour avoir Xcode 6.3 et résoudre le problème
la source
pour moi, le problème était dans la valeur des autres indicateurs de l'éditeur de liens. Pour une raison quelconque, je n'avais pas de guillemets dans des drapeaux comme
-l"xml2"
-l"Pods-MBProgressHUD"
.la source
Other Linker Flags
j'ai trouvé deux entrées:-|Localytics
et|-PodsLocalytics
. Je les ai supprimés et j'ai pu compiler.J'ai dû télécharger le zip depuis git hub et faire glisser les fichiers manquants dans le Finder aux chemins correspondants dans Pod / ...
la source
Ce qui a fonctionné pour moi a été de sélectionner le projet Pods, de trouver et de sélectionner le framework cible avec l'en-tête manquant dans le répertoire cible du projet Pod et de définir "Build Active Architecture Only" sur "No" sous "Architectures" dans les paramètres de construction de la cible.
la source
J'ai le même problème, mais les solutions ci-dessus ne peuvent pas fonctionner. Je l'ai corrigé en faisant ceci:
Et puis ça marche.
la source
Pour moi, ce qui a corrigé était la cible de déploiement iOS pour mon projet Pods était inférieur à mon projet lui-même. Une fois que je l'ai fait comme mon projet, il a pu trouver le fichier d'en-tête.
la source
J'étais sur la graine GM de Xcode 5.0 et je ne pouvais obtenir aucune de ces réponses. J'ai essayé chaque réponse unique sur SO sur plusieurs questions différentes sur les importations d'en-tête avec cocoapods.
ENFIN j'ai trouvé une solution qui a fonctionné pour moi : j'ai mis à niveau vers Xcode 5.0 via le Mac AppStore (installé au-dessus de la graine GM) et maintenant les importations d'en-tête fonctionnent comme prévu.
J'avais également toujours une version bêta de Xcode 5 sur mon système et je l'ai également supprimée. C'était peut-être une combinaison des deux choses, mais j'espère que cela aidera quelqu'un d'autre.
la source
C'était la réponse pour moi, j'ai mis à jour les cocoapodes et je pense que cela a fait disparaître les PODS_HEADERS_SEARCH_PATHS. Ma solution était similaire à celle-ci mais j'ai utilisé "$ (PODS_ROOT) / Headers" - Andrew Aitken
Merci beaucoup pour cette réponse. J'ai eu du mal à trouver des moyens de résoudre mon problème. Merci beaucoup.
la source
Aucune des réponses ne m'a aidé (j'avais mes pods liés à toutes les cibles, construisais correctement les configurations, définissais correctement les chemins de recherche "$ (inherited)", etc ...).
Le problème a disparu de lui-même après avoir mis à jour les cocoapodes vers la dernière version de débogage à l'aide de la commande standard d'installation / mise à jour:
ou:
(si sudo a été utilisé lors de l'installation).
Ce devait être le virus des cocoapodes.
la source
Une solution simple est la suivante: 1. Supprimez le dossier Pods et le fichier Podfile.lock. Mais ne supprimez pas Podfile 2. Exécutez la commande suivante dans le dossier racine de votre projet:
la source
Voici une autre raison: tous les chemins d'en-tête semblaient corrects, mais nous avions toujours une erreur dans le fichier précompilé (.pch) essayant de lire un en-tête de pod
(c'est-à-dire #import <CocoaLumberjack / CocoaLumberjack.h>).
En regardant la sortie de construction brute, j'ai finalement remarqué que l'erreur cassait notre cible d'extension Watch OS, pas la cible principale que nous construisions, car nous importions également le fichier d'en-tête précompilé .pch dans les cibles Watch OS, et cela échouait Là. Assurez-vous que les paramètres cible de Watch OS qui l'accompagnent n'essaient pas d'importer le fichier .pch (surtout si vous définissez cette importation à partir du paramètre cible principal, comme je l'ai fait!)
la source
J'ai constaté que l'inclusion de la bibliothèque en tant qu'installation de pod aide directement les bibliothèques dynamiques. Par exemple, pour Firebase:
Ou pour ASLogger:
Changer ou coder en dur
HEADER_SEARCH_PATHS
ne m'a pas aidé. Si l'erreur se reproduit, il n'est pas nécessaire derm -rf node_modules
ni de supprimer le fichier pod, etc., j'ai trouvé utile de vider le cache.Pour réagir natif, je cours
Pour Xcode, je supprime les dossiers dans
~/Library/Developer/Xcode/DerivedData
la source
Je pense qu'une solution ultime est d'aller
Build settings -> Search Path -> User Header Search Paths
, de trouver le chemin de votre bibliothèque et de le parcourir dans un Finder. Assurez-vous que tous les chemins existent, y compris votre chemin d'importation.Pour moi, mon chemin était plus court que dans un tutoriel. Dans le didacticiel, c'était quelque chose comme
#import <SDK/path/to/sdk/File.h>
, mais il s'avère que c'est juste#import <SDK/File.h>
la source
J'ai une autre solution de travail ici,
la source
Essayez de commenter cette ligne pour votre cible
Ou vous pouvez vous référer à mon autre réponse ajoutée cible de test unitaire à xcode - échec de l'importation de l'en-tête de pont ne disparaîtra pas
la source
J'ai résolu ces problèmes pour Xcode 8.2.1 par le cadre de glisser-déposer que je souhaite utiliser.
la source