AFNetworking & Autres Pods Not found

Am_MeAm_Me Membre
octobre 2014 modifié dans API UIKit #1

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


 


«1

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)


  • AliGatorAliGator Membre, Modérateur
    Bah en même temps comme ça sans ton projet c'est pas simple à  debuguer. Les header search path sont bien renseignés ? T'as changé de version de CP ?
  • Je suis d'accord ça ne va pas être facile 


     


    Mon headerPath 

  • AliGatorAliGator Membre, Modérateur
    Heu ouais mais inherited il vaut quoi c'est un peu ça le + important ^^


    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 : 



    ld: file not found: Blabla/Blabla/Build/Products/Debug-iphonesimulator/Toto.app/Toto
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
  • AliGatorAliGator Membre, Modérateur
    octobre 2014 modifié #8

    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

    Heu pardon ? Tu sais un peu comment marchent les Build Settings au moins ? Evidemment qu'il est super mega important !! o_O
    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
     

    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

    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) ?
  • AliGatorAliGator Membre, Modérateur
    octobre 2014 modifié #9

    J'ai lu sur le net qu'il fallait changer les lignes avec la flèche rouge de None à  Pods-....

    Ca veut dire quoi "les lignes avec la flèche rouge" ?

    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 ^^)

    du coup là  je me tape une erreur : 

    ld: file not found: Blabla/Blabla/Build/Products/Debug-iphonesimulator/Toto.app/Toto
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    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 ?
  • Am_MeAm_Me Membre
    octobre 2014 modifié #10

    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 



    [!] The use of implicit sources has been deprecated. To continue using all of the sources currently on your machine, add the following to the top of your Podfile:

    source 'https://github.com/CocoaPods/Specs.git'


    Alors la citation complète :o :



    Ld /Users/MonPrenom/Library/Developer/Xcode/DerivedData/Toto-blabla/Build/Products/Debug-iphonesimulator/TotoTests.xctest/TotoTests normal x86_64
    cd /Users/MonPrenom/Documents/iOSApps/SpySeries
    export IPHONEOS_DEPLOYMENT_TARGET=7.1
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk -L/Users/MonPrenom/Library/Developer/Xcode/DerivedData/Toto-eoatyivgbfudivefnekigxypidsz/Build/Products/Debug-iphonesimulator -F/Users/MonPrenom/Library/Developer/Xcode/DerivedData/Toto-eoatyivgbfudivefnekigxypidsz/Build/Products/Debug-iphonesimulator -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/Developer/Library/Frameworks -filelist /Users/MonPrenom/Library/Developer/Xcode/DerivedData/Toto-eoatyivgbfudivefnekigxypidsz/Build/Intermediates/SpySeries.build/Debug-iphonesimulator/TotoTests.build/Objects-normal/x86_64/TotoTests.LinkFileList -bundle_loader /Users/MonPrenom/Library/Developer/Xcode/DerivedData/Toto-eoatyivgbfudivefnekigxypidsz/Build/Products/Debug-iphonesimulator/Toto.app/Toto -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lPods-Toto-AFNetworking -lPods-Toto-LDProgressView -lPods-Toto-RESideMenu -framework CoreGraphics -framework MobileCoreServices -framework QuartzCore -framework Security -framework SystemConfiguration -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=7.1 -framework XCTest -framework UIKit -framework Foundation -Xlinker -dependency_info -Xlinker /Users/MonPrenom/Library/Developer/Xcode/DerivedData/Toto-eoatyivgbfudivefnekigxypidsz/Build/Intermediates/SpySeries.build/Debug-iphonesimulator/TotoTests.build/Objects-normal/x86_64/TotoTests_dependency_info.dat -o /Users/MonPrenom/Library/Developer/Xcode/DerivedData/Toto-eoatyivgbfudivefnekigxypidsz/Build/Products/Debug-iphonesimulator/TotoTests.xctest/TotoTests

    Est-ce lisible sinon j'envoi un screenshot.

  • Ah mince les lignes flèche rouge sorry :

  • AliGatorAliGator Membre, Modérateur
    Donc

    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 

  • AliGatorAliGator Membre, Modérateur
    octobre 2014 modifié #14


    1) Comment pourrais-je te l'indiquer ?

    Bah en allant dans le rapport de logs, tiens ;) Tu vois les target se compiler un par un dans l'ordre.

  • 1) Ahhh d'accord je comprend mieux 


    Ca me donne ça perso : 

  • AliGatorAliGator Membre, Modérateur
    Ok donc ton target d'appli marche très bien.

    C'est ton target de tests qui pose problème c'est donc lui qu'il faut regarder de plus près.
  • AliGatorAliGator Membre, Modérateur
    Et c'est quoi le warning sur AFNetworking ?
  • Am_MeAm_Me Membre
    octobre 2014 modifié #19

    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. 


  • Am_MeAm_Me Membre
    octobre 2014 modifié #21

    Non je l'avais aussi sur Xcode 5. Je suis sous Mavericks encore.


     


    Non mais j'attire tout les bugs possible quoi xD


  • AliGatorAliGator Membre, Modérateur
    Non j'ai déjà  vu ce warning aussi dans les dernières versions de AFNetworking il me semble.
  • J'ai pris 2 screen mais je ne vois pas ou je pourrais magiquement trouver l'erreur dans mon Test

  • AliGatorAliGator Membre, Modérateur
    Et que vaut $(EXECUTABLE_NAME), ne vaudrait-il pas l'ancien nom de ton appli (au lieu du nouveau) ?

    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 ?


  • AliGatorAliGator Membre, Modérateur
    Là  tu me dis que tu as changé le Bundle Identifier, si tu n'as changé que ça tu n'as pas du tout changé le nom de ton application (d'ailleurs c'est quoi ce préfixe "Home...." dans le bundleID ? Ca ne respecte pas les nommages classiques de type "com.company.appname" !)

    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)
  • Am_MeAm_Me Membre
    octobre 2014 modifié #27

    Alors voilà  la ligne que j'avais mis avec Toto : 



    ld: file not found: /Users/Amin/Library/Developer/Xcode/DerivedData/FollowSeries-eoatyivgbfudivefnekigxypidsz/Build/Products/Debug-iphonesimulator/FollowSeries.app/FollowSeries
    clang: error: linker command failed with exit code 1 (use -v to see invocation

    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 

  • AliGatorAliGator Membre, Modérateur
    Bon bah ça confirme ce que je disais : l'erreur dit bien que le Linker (ld) cherche FollowSeries.app/FollowSeries quand il cherche à  compiler le target de test... et ta capture confirme que l'app générée s'appelle SpySeries.app et pas FollowSeries.app donc forcément y'a une incohérence qqpart.


    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 ?


  • Am_MeAm_Me Membre
    octobre 2014 modifié #30

    En réalité je viens de résoudre mon problème en changer les Linking dans FollowSeriesTest : 

  • AliGatorAliGator Membre, Modérateur

    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 ?

    Non non, faut pas remplacer la variable $(TARGET_NAME) par un nom en dur (sauf si tu sais vraiment ce que tu fais, mais n'allons pas tout casser !)

    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.
Connectez-vous ou Inscrivez-vous pour répondre.