ビルド番号自動更新
バージョン番号の付番については以下に記載の通り。
http://www.awaresoft.jp/ios-dev/item/113-xcode-increment-build-num.html
多くのサイトで記載した方法だと、ピリオドに対応していなかったりします。
http://blog.dealforest.net/2012/06/auto_increment_cfbundleversion/
このページのようにbcを使えば、小数点として扱うことができます。
/bin/sh
InfoPlist="${SRCROOT}/${PROJECT_NAME}/${PRODUCT_NAME}-Info.plist"
bn=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" ${InfoPlist}`
bn=`echo ${buildNumber}+0.1| bc -l`
/usr/libexec/PlistBuddy -c "Set CFBundleVersion $bn" ${InfoPlist}
小数点でビルド番号を管理する必要がどこまであるかというのはありますが、デフォルトで1.0と記載されているので、それを手動で変更せずにすみますねw
これを、ビルド前に実行しないと、モジュールとplistの値が食い違います。
そこで、以下のページのようにSchemaの設定で実行されるようにします。
http://program.station.ez-net.jp/special/handbook/objective-c/iphone/build/inclement-build.asp
Product -> Schema -> Edit Schema
Build -> Pre-actions -> New Run Script Action
※とはいえ、ビルドに失敗しただけで、カウントアップされるので、注意が必要
さて、バージョンについてですが、ピリオドが2つあるので、小数演算では対応できません。
もちろん自動でカウントアップするものではないという性質のものではありますが、とあるルールをベースに自動でやっちゃった方がらくちんだったりします。
例えば、Archiveを実行する時だけ、リビジョンアップしましょうとすれば、先ほどのSchemaのArchiveでPreかPostのactionsに以下のスクリプトを記載します。
/bin/sh
InfoPlist="${SRCROOT}/${PROJECT_NAME}/${PRODUCT_NAME}-Info.plist"
vvv=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" ${InfoPlist}`
mm=`echo $vvv | cut -d . -f 1,2`
last=0`echo $vvv | cut -d . -f 3`
last=$(($last+1))
ver=$mm.$last
/usr/libexec/PlistBuddy -c "Set CFBundleShortVersionString $ver" ${InfoPlist}
ちなみに、last=0`echo、、、の0はわざとです。デフォルトで1.0という設定値ですので、その場合でも、1.0.1と設定してくれるはずです
sed/awk/perlなどスクリプトでやっちゃえばもっとシンプルにできますが、割愛します。