woshidan's loose leaf

ぼんやり勉強しています

XCodeのRun Scriptを試しに触ってみる

iOS用アプリケーション、ライブラリのビルド前後にちょっと作業がしたい場合、XCodeRun Script でシェル(やシェル経由で起動できる各種言語のプログラム)を起動させることができます。

今日はちょっと試してみました。

簡単なスクリプトの実行

# hello.sh
echo "hello"

こういう超簡単なスクリプトを用意して、

f:id:woshidan:20171018004411p:plain

f:id:woshidan:20171018004429p:plain

上図のように、実行したいスクリプト hello.sh のパスを設定すると、ビルド時のログに hello と出力されます。

f:id:woshidan:20171018004455p:plain

スクリプトのパスを指定する代わりにそのまま書く

以下のようにそのまま実行したいスクリプトをベタがきすることも可能です。

f:id:woshidan:20171018004826p:plain

上記を実行すると

f:id:woshidan:20171018004851p:plain

ちょっとビルド自動化の際など環境変数を調べたいときに便利そうです。

指定したファイルのパスを変数に与えて実行

下の方の欄にある input files にファイルのパスを与えると、スクリプト中にて $SCRIPT_INPUT_FILE_N (Nは数字) という変数名で取得可能です。ちょっとやってみましょう。

// Test.xcodeproj/project.pbxprojの冒頭
// !$*UTF8*$!
{
    archiveVersion = 1;
    classes = {
    };
    objectVersion = 48;
    objects = {

f:id:woshidan:20171018005207p:plain

f:id:woshidan:20171018005216p:plain

出力結果の2行目はビルド時に書き加えられたものです。 Run Script の中に書いたスクリプトや実行ファイルのパスは XCode のプロジェクト設定ファイルの中に記録され、管理されます。

スキームごとに接続先などを変更したいけど、コードの中に残したくない、という場合*1などに置換処理を行ったりできるのではないでしょうか。

現場からは、以上です。

参考

*1:書いてみたけどコードの中に残した方が人間が読む上で素直な気がする