Comment puis-je limiter une phase de construction «Exécuter le script» à ma configuration de version?


138

J'ai un script shell que je voudrais exécuter à la fin de la phase de construction de ma cible. Cependant, je voudrais que ce script ne s'exécute que lorsque je construis avec la configuration de version . Comment cela peut-il être fait? Merci!

Réponses:


295
if [ "${CONFIGURATION}" = "Release" ]; then
  echo Do something really release-like
fi

Le script s'exécutera à la fin de chaque configuration, mais il ne fera rien dans ce cas à moins que la configuration soit Release (en supposant que tout ce qu'il fait est contenu dans le bloc de test).


1
Je viens de découvrir que cela ne fonctionne pas avec les noms de configuration à plusieurs mots. Cela fonctionne avec "Release" mais pas avec "Internal Beta".
— Hedin

4
@Hedin - c'est juste bash; si vous avez une variable à plusieurs mots, vous devez mettre la variable entre guillemets. Donc $ {CONFIGURATION} devient "$ {CONFIGURATION}". Je mettrai à jour la réponse pour inclure cela.
— Jason Coco

15
J'ai des configurations 'Debug', 'Release' (pour les instruments), 'Ad Hoc' et 'App Store' (avec une signature de code différente), donc je l'ai changé pour if [ "${CONFIGURATION}" != "Debug" ]; then....
— Nicolas Miari

1
Pour la condition if, je veux utiliser un #define TRUE / FALSE stocké dans le fichier .pch .. comment le référencer dans le code de script?
— newton_guima

2
Cette même chose peut-elle être accomplie avec des indicateurs de pré-processeur?
— Justin Vallely le

15

Le moyen le plus simple de procéder est de cocher la case "Exécuter le script uniquement lors de l'installation".



4
"L'installation de débogage sur un appareil réel (build & run à partir de Xcode) ne compte pas comme" installation ". Le script d'exécution ne s'exécute que lors de l'archivage (testé avec Xcode 9)." stackoverflow.com/questions/5913199/…
— darkheartfelt

2
Cela ne fonctionnera pas si vous souhaitez créer votre application en Releaseconfiguration sans l'archiver. La question portait explicitement sur la Releaseconfiguration.
— Legonaftik
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.