[Résolu]Settings bundle / Build phase et run script

amadehamadeh Membre
août 2014 modifié dans API UIKit #1

Salut tout le monde,


 


J'ai un petit soucis. Je cherche à  ajouter une section Licences à  mon appli dans les réglages d'iOS. J'utilise pour ça le settings.bundle. J'ai ajouter un item de type Child Pane avec un titre et un filename qui est celui généré par un script PERL que j'ai trouvé sur le net.


 


Voilà  le lien (bien détaillé d'ailleurs) :


 


http://stackoverflow.com/questions/6428353/best-way-to-add-license-section-to-ios-settings-bundle/6453507#6453507


 


Le soucis est au niveau de l'exécution du script. J'ai bien ajouté un nouveau Build Phase de type Run script, je ne mets rien dans le champs "shell" et j'ai dans les lignes en dessous :



cd /Users/amadeh/MyProject/MyProject
./LicencesScript.pl

Mon problème est que j'obtiens l'erreur suivante :


 


/bin/sh: /Users/amadeh/Library/Developer/Xcode/DerivedData/MyProject-atcbtrobsabsibbmvwxzrhpfjlnd/Build/Intermediates/MyProject.build/Debug-iphonesimulator/MyProject.build/Script-372A39EE198C9B8E004AA5CA.sh: (null): bad interpreter: No such file or directory


 


Savez-vous d'où ça vient ?


Réponses

  • AliGatorAliGator Membre, Modérateur
    août 2014 modifié #2
    Il faut mettre un interpretteur à  ton script comme le suggère le message d'erreur.


    Le mieux est de mettre le chemin de l'interpréteur perl (/usr/bin/perl) dans le champ "shell".


    Tu dois pouvoir aussi le mettre en toute première ligne de ton script précédé de "#!" (C'est ce qu'on appelle le shebang) " comme l'a fait l'auteur de la réponse sur SO " mais dans ce cas il te faut quand même mettre un interpréteur pour ton script dans le champ "shell" " comme par exemple "/bin/sh" (qui sait interpréter le shebang au début d'un fichier de script et lancer le sous-interpréteur correspondant) " et pas laisser ce champ vide.


    D'ailleurs les instructions dans le message sur SO n'ont jamais dit de supprimer la valeur dans le champ "shell" ^^ donc tu aurais dû laisser la valeur "/bin/sh" par défaut et ça aurait marché directement ;-)
  • Effectivement t'as raison mais bon, c'est bien, ça permet aussi de prendre un peu de vos nouvelles :)


     


    Merci Aligator.


  • Petite recommandation au passage, place ton script dans ton dossier de projet et utilise des variables d'environnement comme SRCROOT pour rendre ta phase de script portable.


     


    En l'état, si tu partage avec quelqu'un d'autre ça ne marchera pas du fait des chemins codé en dur.


     


    Recommandation 2 : si tu passe sur des variables d'environnement pour les chemin, attentions aux espaces dans les nom. Toujours protéger ses path par des guillemets.


  • Merci Yoann pour la variable SRCROOT, j'avais apporté des modifications au script perl qui permettait de faire quelque chose d'équivalent. OK aussi pour les paths.


Connectez-vous ou Inscrivez-vous pour répondre.