Xcode
iOS

Xcodeのこつ - edit shemeのPre-actionsを使え

More than 5 years have passed since last update.

2014/04/28にtwitterにて指摘をいただいたので修正します。

簡単にいうと以下の記事は、半分間違っています。

間違っている点

・Run Scriptは、罠ではない。(Build Phasesは、順番をかえることで、処理の順番をかえることができます。)

・Schemeは、共同プロジェクトに向いていない(Schemeはプロジェクトファイルに含まれないため、共有するためには別で出力する必要があります)

本来なら

・Run Scriptにシェルスクリプトを書きます。

・Run Scriptの順番を上位にします。

よろしくお願いします。

以下、間違い記事

~~こんにちは、

Xcodeでシェルスクリプトを使うときに壁に打ち当たったので、公開です。自分めもである。

よくSetting.bundleを使うと思います。これは、設定アプリ内で設定をできるようにするものです。そこで、デバッグとリリース版を分ける際にシェルスクリプトで、上書きすることがあります。

しかし、よくある解説サイトには、罠があります。

スクリーンショット 2014-04-28 22.30.55.png

スクリーンショットのように、プロジェクトの設定のRun Scriptに書けってあります。

しかし、これではうまくいかないときがあります。それは、ここに書くとコンパイル後に処理されるためです。

Run開始→コンパイル開始→コンパイル終了→シェルスクリプト実行→アプリ実行

これでは、上書きされないです。2回コンパイルする必要がでてきてしまいます。

これを

Run開始→シェルスクリプト実行→コンパイル開始→コンパイル終了→アプリ実行

としたいわけです

そのためには

edit schemeを使います。スクリーンショット 2014-04-28 22.36.33.png

edit schemeで下記写真のを編集してくださいスクリーンショット 2014-04-28 22.37.46.png

Pre-actionsに設定することで、コンパイル前にシェルスクリプトを実行できます。

なお、Run以外をする場合は、それぞれArchiveなどのPre-actionsに書いてください

補足ですが、Pre-actionsのシェルスクリプト内でSRCROOTなどプロジェクトに依存するものを使う場合は、シェルスクリプトを書くところの上の「Provide build settings from」の部分を適宜選んでください

~~

それでは、よいシェルスクリプトライフを!