[Objective-C] iOS - La construction échoue avec CocoaPods impossible de trouver les fichiers d'en-tête



Answers

Mettre à jour

Je l'ai mis à jour depuis ma réponse originale, qui a obtenu le downvote, donc j'espère que cela aide. Et si c'est le cas, j'espère que mon vote reviendra.

Si les en-têtes ne sont pas importés, vous avez probablement un conflit dans le 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 les chemins de recherche inclus dans le fichier .xcconfig de vos CocoaPods.

Ceci devrait aider avec n'importe quels conflits et obtenir votre source importée correctement.

Question

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 pour coder 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 je reçois une erreur: fichier ASLogger / ASLogger.h introuvable.

Même si je supprime l'ensemble du projet et en fais une nouvelle copie et utilise 'pods install'. l'échec de la construction est toujours là. Avez-vous une idée du problème? Si vous avez besoin de plus d'infos, il suffit de demander.




Si vous avez eu les 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 à Yosemite pour avoir Xcode 6.3 et résoudre le problème




J'ai dû télécharger le zip du hub git et faire glisser les fichiers manquants dans le Finder aux chemins correspondants dans Pod / ...




Le wiki donne un conseil sur la façon de résoudre ce problème:

Si Xcode ne trouve pas les en-têtes des dépendances:

Vérifiez si les fichiers d'en-tête de pod sont correctement liés par un lien symbolique dans Pods / Headers et si vous ne surchargez pas HEADER_SEARCH_PATHS (voir # 1). Si Xcode ne peut toujours pas les trouver, en dernier recours, vous pouvez ajouter vos importations, par exemple #import "Pods / SSZipArchive.h".




Les deux autres réponses n'ont pas aidé ici. J'ai trouvé 2 autres problèmes qui pourraient le réparer:

EDIT Vous pouvez vérifier un lien symbolique de cette façon: créez un fichier texte nommé 'check' sans extension. copier ces lignes dans celui-ci:

file=/Users/youUserName/XcodeProjectName/Pods/BuildHeaders/SVProgressHUD/SVProgressHUD.h
if [[ ! -e $file &&  -L $file ]]; then
  echo "$file symlink is  broken!"
else
  echo "symlink works"
fi

Ensuite, allez sur le terminal, passez dans le dossier où se trouve votre fichier de contrôle et tapez

bash check



Ce qui fonctionnait pour moi était 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 paramétrer "Build Active Architecture Only" sur "No" sous "Architectures" dans les paramètres de construction de la cible.




Je vais mettre à jour les choses ci-dessous dans mes paramètres de construction et je n'ai pas eu d'erreurs. Pour vérifier ce sont les choses tout en mettant à jour vos cocoapodes.

Paramètres de construction

Activer le code de bit - OUI (si vous utilisez un bitcode)

Préprocesseur de macros - $ (hérité)

Autre indicateur de lien - objc, -lc ++, $ (inherited)

Construire l'architecture seulement

Déboguer - Oui

Relese - Non

Chemin de recherche

Framework search path - $ (hérité) $ (PROJECT_DIR)

Chemin de recherche de la bibliothèque - $ (hérité)

Chemin de recherche d'en-tête - $ (hérité)




Si rien de ce qui précède n'a fonctionné pour vous et vous trouvez cette erreur parce que vous venez de passer à use_frameworks! dans votre fichier Podfile, lisez ceci:

J'ai essayé toutes les solutions ci-dessus et beaucoup plus avant d'apprendre qu'il ne s'agit pas du tout des chemins d'en-tête de recherche dans mon cas particulier; c'est quand vous passez à use_frameworks! Dans votre fichier Podfile, vous n'avez plus besoin d'inclure des cadres dans votre en-tête de pontage, et en fait, Xcode lancera l'erreur «impossible de trouver l'en-tête», qui n'est pas très utile.

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 import Module Swift dans vos fichiers Swift individuels, 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 utilise le FBSDK), vous devez le changer d'une importation locale à l'importation globale (cela signifie changer le #import "Module.h" à #import <Module/Module.h> , qui devrait se #import <Module/Module.h> automatiquement lorsque vous commencerez à taper le nom du framework (dans mon cas c'était <AFNetworking/AFHTTPRequestOperationManager.h> ).

Edit: Depuis, j'ai appris que faire un @import Module utilise le fichier parapluie qui est encore plus sûr.




J'ai résolu ce problème pour Xcode 8.2.1 par glisser-déposer que je veux utiliser.




C'était la réponse pour moi, j'ai mis à jour les cocoapodes et je pense que ça a fait disparaître les PODS_HEADERS_SEARCH_PATHS. Ma solution était similaire à cela 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.




Fichiers d'en-tête, vous serez la mort de moi ...

Finalement, le faire fonctionner en ajoutant (y compris des citations)

"${PODS_ROOT}/BuildHeaders"

à l'entrée Chemins de recherche d'en-tête utilisateur et en cochant 'récursive'.




Une solution de contournement simple est: 1. Supprimer 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:

pod install



Links