Attention! Translated article might be found on my English blog.

2016年11月12日土曜日

自作Macアプリにgitリビジョンハッシュとビルド時刻を埋め込む

ビルド時に(コピー先の)Info.plistを書き換えることによって
gitのリビジョン(コミット)ハッシュとビルド時刻などの情報をアプリに埋め込みます。

ビルド時にコピー先のInfo.plistを書き換える方法については、これがXcodeでのバージョニングの決定版になるかも - TOKOROM BLOGが参考になります。

具体的には、上記サイトのまとめの項目にあるように
  • ビルド設定の'Preprocess Info.plist File'(INFOPLIST_PREPROCESS)をYESにセットする
  • Run Scriptで${TEMP_DIR}/Preprocessed-Info.plistを編集する
という操作が必要です。
あと、個人的に注意点として
  • Run ScriptはCopy Bundle Resourcesより前に配置する
というのも大事だと思います。(後に配置すると1つ前のビルド結果が反映されてしまう)

自分の場合のRun Scriptは以下の通りです。
plistBuddy="/usr/libexec/PlistBuddy"
prePlist="${TEMP_DIR}/Preprocessed-Info.plist"
plist="${SRCROOT}/${INFOPLIST_FILE}"

version=$($plistBuddy -c "Print CFBundleVersion" $plist)
hash=$(git rev-parse --verify HEAD | head -c 7)
date=$(date "+%Y/%m/%d %H:%M:%S")

versionString="$version $hash $date"

$plistBuddy -c "Set :CFBundleVersion $versionString" $prePlist

参考: date コマンド | コマンドの使い方(Linux) | hydroculのメモ
参考: Git - git-rev-parse Documentation

これで、アプリのアバウト画面(自動生成されるウインドウ)では

と表示されます。やったー!