LoginSignup
18
19

More than 5 years have passed since last update.

ビルド番号自動更新

Last updated at Posted at 2013-03-06

ビルド番号自動更新

バージョン番号の付番については以下に記載の通り。
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などスクリプトでやっちゃえばもっとシンプルにできますが、割愛します。

18
19
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
19