「スクリプトの実行」ビルドフェーズを自分のリリース構成に制限するにはどうすればよいですか?


138

ターゲットのビルドフェーズの最後に実行したいシェルスクリプトがあります。ただし、このスクリプトを実行するには、リリース構成でビルドする必要があります。これはどのように行うことができますか?ありがとう!

回答:


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

スクリプトはすべての構成の最後に実行されますが、構成がリリース(テストブロック内に含まれていることが前提)でない限り、この場合は何も実行しません。


1
私はそれがマルチワード構成名で動作しないことを発見しました。「リリース」では機能しますが、「内部ベータ」では機能しません。
Hedin

4
@ヘディン-それはただのバッシュです。複数単語の変数がある場合は、変数を引用符で囲む必要があります。したがって、$ {CONFIGURATION}は「$ {CONFIGURATION}」になります。それを含めるように答えを更新します。
Jason Coco

15
「Debug」、「Release」(Instruments用)、「Ad Hoc」、「App Store」の設定(コード署名は異なります)があるため、に変更しましたif [ "${CONFIGURATION}" != "Debug" ]; then...
Nicolas Miari 2014年

1
if条件の場合、.pchファイルに保存されている#define TRUE / FALSEを使用したいのですが、スクリプトコードでそれをどのように参照しますか?
newton_guima 2015

2
これと同じことは、プリプロセッサフ​​ラグで実現できますか?
Justin Vallely

15

これを行う最も簡単な方法は、[インストール時にのみスクリプトを実行する]チェックボックスをオンにすることです。



4
「実際のデバイスでのデバッグインストール(Xcodeからビルドおよび実行)は、「インストール」としてカウントされません。実行スクリプトは、アーカイブ(Xcode 9でテスト済み)の場合にのみ実行されます。stackoverflow.com/questions/5913199/…–
darkheartfelt

2
アプリReleaseをアーカイブせずに構成でビルドする場合は機能しません。問題は明示的にRelease構成についてでした。
Legonaftik
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.