Wie kann ich eine Build-Phase "Skript ausführen" auf meine Release-Konfiguration beschränken?

138

Ich habe ein Shell-Skript, das ich am Ende der Erstellungsphase meines Ziels ausführen möchte. Ich möchte jedoch, dass dieses Skript nur ausgeführt wird, wenn ich mit der Release- Konfiguration erstelle . Wie kann das gemacht werden? Vielen Dank!

Reed Olsen
quelle

Antworten:

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

Das Skript wird am Ende jeder Konfiguration ausgeführt, aber in diesem Fall wird nichts unternommen, es sei denn, die Konfiguration ist Release (vorausgesetzt, alles, was es tut, ist im Testblock enthalten).

Jason Coco
quelle
1
Ich habe gerade festgestellt, dass es mit mehrwortigen Konfigurationsnamen nicht funktioniert. Es funktioniert mit "Release", aber nicht mit "Internal Beta".
Hedin
4
@ Hedin - das ist nur Bash; Wenn Sie eine Variable mit mehreren Wörtern haben, müssen Sie die Variable in Anführungszeichen setzen. Aus $ {CONFIGURATION} wird also "$ {CONFIGURATION}". Ich werde die Antwort aktualisieren, um das einzuschließen.
Jason Coco
15
Ich habe die Konfigurationen 'Debug', 'Release' (für Instrumente), 'Ad Hoc' und 'App Store' (mit unterschiedlicher Codesignatur), daher habe ich sie für geändert if [ "${CONFIGURATION}" != "Debug" ]; then....
Nicolas Miari
1
Für die if-Bedingung möchte ich ein #define TRUE / FALSE verwenden, das in der .pch-Datei gespeichert ist. Wie würde ich es im Skriptcode referenzieren?
Newton_guima
2
Kann dasselbe mit Pre-Prozessor-Flags erreicht werden?
Justin Vallely
15

Der einfachste Weg, dies zu tun, besteht darin, das Kontrollkästchen "Skript nur bei Installation ausführen" zu aktivieren.

Menno
quelle
4
"Die Debug-Installation auf einem realen Gerät (Build & Run von Xcode) zählt nicht als" Installation ". Das Run-Skript wird nur bei der Archivierung ausgeführt (getestet mit Xcode 9)." stackoverflow.com/questions/5913199/…
darkheartfelt
2
Es funktioniert nicht, wenn Sie Ihre App in der ReleaseKonfiguration erstellen möchten, ohne sie zu archivieren. Die Frage betraf explizit die ReleaseKonfiguration.
Legonaftik