Xcodeでビルド番号を自動更新する

Xcodeでビルドする時にビルド番号を自動的に更新(インクリメント)してアプリケーションに含める設定を行った。開発環境は下記の通り。

設定方法は下記の通り。

  • 対象のターゲットを選び、右クリックで表示されるメニューから「追加」→「新規ビルドフェーズ」→「新規スクリプト実行」を選ぶ。
  • 「一般」タブの「スクリプト」欄に下記のコマンドを貼り付ける。(対象ファイルは適宜変更)
CFBuildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" ${INFOPLIST_FILE})
CFBuildNumber=$(($CFBuildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBuildNumber $CFBuildNumber" ${INFOPLIST_FILE}
echo Build:$CFBuildNumber
  • 初回のみ{PRODUCT}-info.plistを開いてCFBuildNumberの値を設定しておく。
  • ビルドするとCFBuildNumberの値が更新される。

  • コードからは下記のコードでビルド番号を取得可能。
NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBuildNumber"];

ちなみに、PlistBuddyはplistファイルを編集するためのコマンドだ。

上記の設定で問題なく動作するようになった。但し、手元の環境ではビルド番号は常に更新されるものの、これがアプリケーションに反映されるのは「1回おき」という不思議な状態になっている。Xcodeがデータをキャッシュしているのだろうか?



関連