- Build Settings >
Preprocess Info.plist
=>Yes
- Build Settings >
Info.plist Preprocessor Prefix File
=>BuildNumber.h
- Build Settings >
Info.plist Preprosessor Definitions
=>DEBUG=1
(必要なら)
準備1が済んだら、続けて下記の設定を追加する Build PhaseにRun Scriptをビルドの前後に下記のように設定する。
-
ビルド前
touch BuildNumber/BuildNumber-Info.plist
-
ビルド後
sh build_number.sh
最後に、Info.plistのBundle versions string, short
のところにはMARKETING_VERSION
、
Bundle version
にはBUILD_NUMBER
と入力する。
準備1でInfo.plistのプリプロセスが有効になる。
準備3で設定したMARKETING_VERSION
とBUILD_NUMBER
はプリプロセスの過程で置換される。
置換する文字列はPreprocessor Prefix File
として指定したBuildNumber.h
にマクロとして記入しておく。
BuildNumber.h
をRun Scriptフェーズで生成する。
このようにすることで、Info.plistを変更すること無く、置換元のBuildNumber.hを書き換えることで、バージョンを書き換えることが可能になる。
BuildNumber.h
は.gitignore
で無視しておけるので、BuildNumber.h
を書き換えても差分は出ない。
ビルド前にtouch BuildNumber/BuildNumber-Info.plist
としているのは、Info.plistの更新日付を新しくしないと、
差分ビルドでInfo.plistが変更対象にならないので、クリーンビルドしないとバージョンの変更が反映されないため。
初回だけはBuildNumber.h
のファイルを作っておかないと(touch BuildNumber.h
)、ビルドできない。
Compile Soucesの前にRun Scriptで作るのでは遅くてダメだった。