No description, website, or topics provided.
Objective-C Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
BuildNumber.xcodeproj
BuildNumber
BuildNumberTests
.gitignore
LICENSE
README.md
build_number.sh

README.md

BuildNumber

準備1

  1. Build Settings > Preprocess Info.plist => Yes
  2. Build Settings > Info.plist Preprocessor Prefix File => BuildNumber.h
  3. Build Settings > Info.plist Preprosessor Definitions => DEBUG=1 (必要なら)

準備2

準備1が済んだら、続けて下記の設定を追加する Build PhaseにRun Scriptをビルドの前後に下記のように設定する。

  • ビルド前 touch BuildNumber/BuildNumber-Info.plist

  • ビルド後

    sh build_number.sh

準備3

最後に、Info.plistのBundle versions string, shortのところにはMARKETING_VERSIONBundle versionにはBUILD_NUMBERと入力する。

解説

準備1でInfo.plistのプリプロセスが有効になる。
準備3で設定したMARKETING_VERSIONBUILD_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で作るのでは遅くてダメだった。