xcode 5.1 build failed sans message

Bonjour à  tous.


 


Depuis hier j'ai des problèmes lors ce que je veux archivé un projet (pour ensuite en faire un export adhoc ou sur le store).


 


En faite lorsque je fais un archive, à  la fin de l'archive un popup s'affiche avec marqué build failed, et rien d'autre. Il n'y a aucunes erreurs visibles, ni aucun autre message.


 


Voir image


Réponses

  • AliGatorAliGator Membre, Modérateur
    Et si tu vas dans le Log Navigator (le dernier "onglet" de la zone de gauche avec l'icône d'une petite bulle -- ou alors tu y vas via le menu View -> Navigators -> Show Log Navigator) et que tu sélectionnes la première ligne (correspondant à  la dernière action de compilation que tu as faite, en l'occurrence un "Archive"), il devrait te donner + d'infos non ?
  • jojolebgjojolebg Membre
    mars 2014 modifié #3

    Okai niquel, j'ai déjà  beaucoup plus d'infos. (Je connaissais pas le Log Navigator, merci de me le faire découvrir)

     



    Pods/Socialize/Socialize/SZEventUtils.m:18:9: Implicit declaration of function 'SZEventTrackingDisabled' is invalid in C99

    Donc apparemment dans un fichier de Socialize, il y a du code C non valide C99.


    Ce que je comprend pas c'est pourquoi du coup sa ne marche pas que quand j'archive, alors que quand je run sur le simulator ça fonctionne.


    Je ne comprend pas non plus pourquoi, sur une autre machine, ou il y a xcode 5 (et non xcode 5.1), ça fonctionne.


    Et sur une autre machine ou il y a xcode 5.1, même le run simulator ne fonctionne pas.


     


     


    Un idée pour régler proprement le problème ?


    • Je peux corriger socialize, mais à  chaque pod install sa va foirer
    • Je peux rétrograder la version de socialize qui ne contient pas l'erreur, en attendant qu'une nouvelle version de socialize sorte sans l'erreur.
    • Je peux modifier les options de compilations de socialize pour ne pas lancer d'erreur si le code n'est pas valide C99, (apparrement sur xcode 5.0 c'est déjà  comme ça), une idée de comment faire ?

     


    Merci en tout cas pour l'aide.


  • AliGatorAliGator Membre, Modérateur
    mars 2014 modifié #4
    La solution la plus propre, c'est de :

    - faire un fork du repo de Socialize sur ton propre GitHub

    - corriger Socialize sur ce fork (à  priori vu l'erreur il suffit de rajouter une déclaration de la fonction plus haut dans le fichier avant de l'utiliser plus bas)

    - en profiter pour modifier le podspec de Socialize (à  la racine de ton repo ; s'il n'y est pas y copier celui de CocoaPods/Specs) pour incrémenter la version

    - Faire une Pull Request sur GitHub pour inciter l'auteur à  récupérer ta correction que ta as faite dans ton fork pour l'intégrer au repo officiel

    - En attendant qu'il accepte la Pull Request, tu peux modifier ton PodFile pour lui dire d'utiliser ton fork pour le pod Socialize (pod 'Socialuze', :git => 'http://github.com/TonCompteGitHub/Socialize') plutôt que l'officiel.


    (Avant de faire tout cela, vérifie quand même que quelqu'un n'a pas déjà  créé une Pull Request pour justement corriger ça, dans ce cas autant directement utiliser celle existante plutôt que d'en créer une autre)
  • jojolebgjojolebg Membre
    mars 2014 modifié #5

    Okai je vais essayer de faire ça. (Pour le moment, pour ne pas perdre de temps, j'ai rétrograder la version de socialize).


     


    Mais quoi qu'il en soit, il y a d'autre erreur. Décidément j'aurait jamais du faire cet mise à  jours d'xcode.



    Undefined symbols for architecture i386:
    "_OBJC_CLASS_$_SKStoreProductViewController", referenced from:
    objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
    "_SKStoreProductParameterITunesItemIdentifier", referenced from:
    -[GADOpener openInAppStore:fallbackURLString:] in libGoogleAdMobAds.a(GADOpener.o)
    ld: symbol(s) not found for architecture i386
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    Donc apparemment la dernière version de libGoogleAdMobAds.a ne prend pas en compte la dernière version d'xcode.


    De ce coté là , n'étant pas open source, je ne peux rien modifier, et je ne sais pas quand sa sera réglé.


  • Concernant l'erreur précédente, je viens juste de linker le framework StoreKit. Bizarre que sa ne soit pas fait dans le Podspec de Google-AdMob-Ads-SDK, et bizarre aussi que sur xcode 5.0, il n'y a pas besoin de storekit


  • AliGatorAliGator Membre, Modérateur
    C'est surtout bizarre qu'avant ça marchait, car si la lib fait référence à  SKStoreProductViewController la lib a forcément une dépendance vers StoreKit.
    Donc si ça marchait avant c'était par l'opération du saint esprit ou suite à  une incantation vaudou, car ce n'était pas sensé marcher si tu n'avais pas le framework.

    Ou peut être qu'un autre pod se trouvait avoir une dépendance à  StoreKit (ce qui expliquerait pourquoi ça ne marcherait pas avant), et que depuis il y a eu une mise à  jour dudit pod mais que la nouvelle version n'a plus cette dépendance à  StoreKit* (ce qui expliquerait pourquoi il n'est plus inclus)

    Dans tous les cas, ça veut dire qu'ils ont oublié de mettre cette dépendance dans le podspec de GoogleAdMod (pas bien Google!).

    ---

    * Ce qui n'est pas si déconnant que cela, car il se trouve que quelques composants du genre AppiRater & co utilisaient SKStoreProductViewController avant, dans le but d'afficher la page "Donner votre avis" de ton application sur l'AppStore (en présentant un SKStoreProductViewController donc tout en restant dans l'application), sauf que normalement SKStoreProductViewController ne doit être utilisé que pour présenter des achats InApp liés à  ton appli, pas pour afficher la page "Donner votre avis", et Apple interdit de + en + cet usage détourné du SKStoreProductViewController donc les pods qui l'utilisaient ainsi au lieu de l'utiliser pour présenter de l'InApp sont obligés de le retirer de leur code maintenant, ce qui pourrait alors expliquer qu'ils n'ont plus besoin de la dépendance vers StoreKit...
Connectez-vous ou Inscrivez-vous pour répondre.