AFNetworking & Autres Pods Not found
Bonjour j'ai un petit problème actuellement.
J'ai clean mon Mac j'ai sauvegardé manuellement mes projets sur un disque dur quand j'ai voulu compiler mon application je me retrouve avec AFNetworking/AFNetworking.h not found (ça le fait aussi pour d'autres trucs installé avec Pods) pourtant je vois bien les fichiers dans Pods avait vous une idée du pourquoi du comment ?
source 'https://github.com/CocoaPods/Specs.git'
# Uncomment this line to define a global platform for your project
platform :ios, "7.0"
target "FollowSeries" do
pod 'AFNetworking', '2.2.1'
# AUTRE PODS ici ...
end
target "FollowSeriesTests" do
end
Mon podfile j'ai fait un pod update et il n'y a aucune erreur
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Personne ? J'ai cherché sur d'autres site et je signal que je n'utilise pas github donc le problème ne vient pas de là (j'avais lu que ceux qui avait github devait taper une certaine commande récursive bref)
Je suis d'accord ça ne va pas être facile
Mon headerPath
Pour savoir si ta version de CP a changé il suffit de regarder dans le Podfile.lock qui contient la version avec laquelle a été fait le dernier "pod update" ou "pod install". Si tu as déjà fait un "pod update" depuis ta réinstallation bah regarde dans le "git log" du fichier évidemment pour voir son historique de modifications tout simplement.
Ceci dit, pourquoi faire un "pod update" si tu ne cherchais pas particulièrement à mettre à jour les différentes versions de tous tes Pods ? Pourquoi ne pas avoir juste fait un "pod install" pour réinstaller les pods listés dans le Podfile sans changer la version des pods déjà installés et risquer de changer leur version au passage ?
Après tu as 2 solutions : soit on essaye de résoudre le problème pas à pas (le mieux pour comprendre ce qui s'est passé mais aussi le plus long) soit on met à la poubelle le dossier Pods/ et on fait un "pod install" tout frais.
Après tout si tu as déjà fait un "pod update" (et non un "pod install") tu as donc déjà demandé à mettre à jour tous les Pods de ton projet à leur dernière version " au lieu de conserver les versions utilisées avant ta réinstallation donc bon... du coup supprimer et réinstaller les Pods du projet from scratch quitte à mettre à jour certains Pods au passage ne changera plus rien. (Sauf si tu reviens en arrière dans ton historique GIT sur le commit avant ton "pod update" évidemment)
Alors le inherited je ne sais même pas ce qu'il fait là . Euh du coup c'est gênant de l'enlever ? Même si ça n'a m'a rien changé au niveau de mon problème
Alors j'ai gardé un historique j'ai fait un pod install sans supprimer le dossier pods et sans faire de pod update mais ça me met pareille genre que AFnetworking.h not found
J'ai lu sur le net qu'il fallait changer les lignes avec la flèche rouge de None à Pods-.... c'est ce que j'ai fait du coup là je me tape une erreur :
Il permet d'importer les réglages du niveau plus haut... donc ceux réglés au niveau du projet, ou d'un fichier de xcconfig (ce qui est le cas pour les Pods), ou du niveau par défaut.
Mets tes Build Settings en mode "Levels" au lieu de "Combined" tu verras les différents niveaux et qui override quoi. Et évidemment si tu ne mets pas le $(inherited) tu verras qu'il écrase les nouveaux d'au dessus (donc les settings mis par le fichier Pods-xxx.xcconfig) au lieu de les enrichir, donc forcément ça va bcp moins bien marcher.
Tu devrais peut-être aussi lire la doc Xcode :
Xcode Concepts: Build Settings
Mais as-tu une diff entre ton repo avant sa réinstallation (en particulier un diff sur le xcodeproj), donc quand il fonctionnait avant la réinstall de ta machine, et après, donc une fois que tu as réinstallé ta machine ?
Et sinon tu n'as pas répondu à la question, quelle était la version de CocoaPods avant la réinstallation de ta machine (donc la version indiquée dans le Podfile.lock avant la réinstall / avant que tu ne refasses un pod install ou pod update) ?
Et donc manifestement oui tu as changé de version de CocoaPods et a sans doute fait un bond conséquent de version (genre passé à la 0.34 qui permet de gérer les configurations de pods "par config" (Debug/Release) maintenant. Dans ce cas tu as dû avoir un warning lors de tes "pod install" ou "pod update" t'indiquant que les Configurations étaient mal réglées et t'expliquer la solution (faut lire la sortie de "pod install"/"pod update" hein ^^)
Heu un peu court comme citation pour nous aider à comprendre ce qui le gêne... Quelles sont les dépendances qu'il compile avant, est-ce qu'il compile bien les librairies de Pods et a-t-il bien trouvé correctement les dépendances implicites ? Quelles sont les erreurs avant, et en particulier la ou les commandes qu'il cherche à exécuter avec ld ?
Oui je devrai me renseigner du coup sur le processus de compilation ....
Avant c'était version COCOAPODS: 0.34.2
Oui j'ai un warning lors du Pod Install
Alors la citation complète :
Est-ce lisible sinon j'envoi un screenshot.
Ah mince les lignes flèche rouge sorry :
1) C'est à la compilation du target de test que tu as les problèmes, et pas à la compilation de l'application, vu les logs ? Ca peut être intéressant à nous dire ça, si un target compile et pas l'autre...
2) Je ne vois pas l'erreur dans ta capture de logs...
3) Je ne vois pas non plus, avec ta capture, quelles sont les dépendances et les targets qu'il build avant les autres (puisque Ld semble ne pas trouver un des produits, qui semble être ton application elle-même, comme si le target de test était en train d'être compilé et dépendant de l'application, mais que l'application elle-même n'avait pas compilé avant, par exemple ? Enfin je ne fais que supposer vu que je ne vois pas grand chose dans tes logs...)
2) Et sinon les warnings que tu as bah ils indiquent déjà un peu la source du problème, non ?
Il y a des chemins dans lesquels il essaye de rechercher certaines libs, en particulier GoogleMobileAdsSdkiOS-6.1.1.1 (qu'est ce qu'il fout dans ton dossier Downloads et donc séparé de ton dossier où tu mets tes projets, ça veut dire que ton projet link avec des librairies qui sont complètement autre part sur ton disque, en l'occurrence dans ~/Downloads, et donc que si tu déplaces ces fichiers ça ne compilera donc plus...)
1) Comment pourrais-je te l'indiquer ?
2) Okay bon supposons qu'il n'y a pas d'erreur. Merci d'avoir lu d'ailleurs
3) Voilà je vais arrêter de cacher pour éviter de cacher l'essentiel
1) Ahhh d'accord je comprend mieux
Ca me donne ça perso :
C'est ton target de tests qui pose problème c'est donc lui qu'il faut regarder de plus près.
Warning :
Que dois-je modifier du coup dans le test ? J'ai bien conscience qu'il ne trouve pas le iPhoneOSSimulator
Tu es sur une version bêta de Xcode ? Je n'ai pas de warning AFNetworking sur la dernière version de Xcode.
Non je l'avais aussi sur Xcode 5. Je suis sous Mavericks encore.
Non mais j'attire tout les bugs possible quoi xD
J'ai pris 2 screen mais je ne vois pas ou je pourrais magiquement trouver l'erreur dans mon Test
Tu n'as pas répondu a ma question, as-tu ou n'as-tu pas changé le nom de ton appli à un moment ? Si ça se trouve c'est juste ça, c'est juste depuis que tu as fait ce changement que ça débloque, parce que tu n'as pas fait le changement vraiment partout mais qu'il reste des traces de l'ancien nom qqpart (que tu pourrais peut-être trouver avec le champ de recherche des Build Settings)... encore faut-il que tu nous dises si c'est le cas ou pas, si tu as bien fait ça et si je suis sur la bonne piste ou si je cherche pour rien...
Oui je l'ai changé effectivement enfin j'ai changé le bundleIdentifier. que j'ai remplacé par MonAppli.MonAppli (où mon appli = nom de mon application)
Du coup je dois changer EXECUTABLE_NAME par quoi ? MonAppli ou MonAppli.MonAppli ?
La question est : ton application a-t-elle changé de NOM ? En particulier, le fait que ton projet s'appelle "SpySeries" mais que ton target d'app, lui, s'appelle "FollowSeries" me laisse penser que tu as initialement démarré ton projet en l'appelant "FollowSeries" puis a changé le nom du projet ensuite (mais du coup tu n'as peut-être pas tout changé correctement et il reste peut-être encore des bribes de l'ancien nom). Vu les problèmes que tu as ça semblerait correspondre en tout cas.
En particulier, si tu compiles juste ton application (ne t'occupes pas du target de test qui foire pour l'instant) et donc que ça génère le bundle "FollowSeries.app" au final, quel est le nom de l'exécutable dans ce bundle (si tu fais un clic droit puis "Afficher le contenu de ce Packet" depuis le Finder, quoi, et que tu regardes ce qu'il y a dans le .app) ? Est-ce que dans le .app tu trouves un fichier exécutable nommé "FollowSeries" (sans extension, icône noire genre terminal) ?
A moins que le .app généré soit "SpySeries.app" et que l'exécutable dans le bundle soit "SpySeries" ?
- Si c'est un mélange des 2, c'est qu'il y a eu un mic-mac lors de ton renommage.
- Si le .app généré a un certain nom (SpySeries ou plus probablement FollowSeries selon ta config) mais que ton target de Test, lui, s'attend à encore trouver l'ancien nom, ça pose aussi évidemment problème puisqu'il ne va pas chercher le bon fichier (d'où l'erreur).
Comme je n'ai toujours pas vu la vraie erreur que te génère le Linker (la fameuse erreur "ld: file not found" que tu as remonté mais en masquant les vrais noms par des "Toto", erreur que tu n'as ensuite pas inclus dans tes captures de logs qui ont suivi car ça coupait toujours), je ne sais tjs pas lequel des 2 est vraiment généré (j'imagine FollowSeries.app/FollowSeries, mais encore faut-il que tu ailles déjà vérifier ce point) et surtout avec lequel des 2 le target de Tests essaye de linker (sans doute SpySeries.app/SpySeries, donc le nouveau nom que tu esperais donner, alors que le fichier exécutable de l'app qui est généré porte en fait le nom d'origine)
Alors voilà la ligne que j'avais mis avec Toto :
Donc oui il cherche bien dans FollowSeries
___
Pour le Home au lieu de com.company.appname : je n'ai strictement rien touché. Alors du coup il faudrait que je le change.
___
Ensuite est-ce que l'application a changé de nom ? : enfin mon elle s'appelait FollowSeries.xcodeproject et dorénavant : SpySeries.xcodeproj
Le gros bémol c'est que mon Application je crois s'appel FollowSeries et le projet SpySeries
Choisis un des 2 noms et utilises-le partout. Si tu veux appeler ton app SpySeries commence par renommer tes 2 targets en conséquence (car plusieurs BuildSettings se basent sur le $(TARGET_NAME) pour leurs valeurs) puis recherche entre dans les BuildSettings ensuite s'il reste des mentions de FollowSeries qqpart.
Bref, débarrasse toi de ce micmac d'incohérence entre le target de l'app (qui génère SpySeries.app) et le target de Tests (qui s'attend à trouver FollowSeries.app, lui)
Le $(TARGET_NAME) je le change ou concrètement.
Et tu es en train de me dire dès que je trouve FollowSeries je remplace par $(TARGET_NAME) c'est ça ?
En réalité je viens de résoudre mon problème en changer les Linking dans FollowSeriesTest :
Le plus simple dans ton cas c'est sans doute de changer le nom de ton target.
Donc tu sélectionnes ton target dans la liste de gauche, et tu le renommes, c'est tout !
Une fois que tu auras renommé ton target en "SpySeries", la variable $(TARGET_NAME) sera évaluée à la valeur "SpySeries" du coup, et donc tout reviendra dans l'ordre. Juste pour vérifier, une fois que tu auras renommé ton target en "SpySeries", tu pourras faire une recherche dans tes Build Settings pour voir s'il ne reste pas d'autres traces de FollowSeries (qui seraient resté en dur). Si c'est le cas, y'a des chances qu'il aurait fallu qu'elles reste en $(TARGET_NAME) au lieu d'avoir une valeur en dur, mais ça resterait étrange qu'une valeur ait été mise en dur, donc s'il t'en reste même après avoir renommé le target, remontes-nous les Build Settings fautifs.