iOSアプリのバンドルのバージョン設定まとめ
iTunes Connectが新しくなり、XcodeでArchive, Distriburionを実行して
生成したバイナリをitunes Connect上にアップロードする形になりました。
もともとiOSアプリのバージョンについての認識が甘く
アップロード時にエラーが出て時間のかかるビルドを何度もやり直すハメになったので
忘れないようにまとめておきます。参考になれば幸いです。
バージョンに関する設定は3点あります。
- iTunes ConnectのマイApp内の対象アプリのApp一般情報のバージョン設定
- hoge-Info.plist内のCFBundleVersionの設定
- hoge-Info.plist内のCFBundleShortVersionStringの設定
それぞれを説明します。
App一般情報のバージョン設定
これはユーザに見えるバージョン番号です。
一般的には3桁のピリオドで区切られたバージョン番号になりますが
1.2
や1.2.3.4
などを指定しても問題ありません。
後述の CFBundleVersionの設定 と一致させてください。
CFBundleVersionの設定
上述の App一般情報のバージョン設定 と一致させてください。
Xcode上でTARGETS設定のInfoだとBundle version
となっているのでこれを記入するか
plistファイル自体を直接修正してもよいです。
CFBundleShortVersionStringの設定
これは ユーザには見えないバージョン番号 です。
Xcode上でTARGETS設定のInfoだと Bundle versions string, short
となっているのでこれを記入するか
plistファイル自体を直接修正してもよいです。
注意すべきは、このバージョンは 最大3桁の ピリオドで区切られたバージョン番号にする必要があることです。
このバージョンをいくつにすればよいのか?が一番迷う部分かと思われます。
なぜなら、バイナリの再アップロードを行う際にこのバージョンを変更しないとアップロードすることができないからです。
例えば、CFBundleVersionを1.2.3
にしていてCFBundleShortVersionStringも1.2.3
にすると
ちょっとビルド設定を修正してアップロードし直す場合でもCFBundleShortVersionStringを上げなければいけなくなるので、
CFBundleVersionとCFBundleShortVersionStringが一致しなくなるのが気持ち悪くなるか、
もしくは両バージョンをアップするハメになるのでサーバサイドでアプリバージョン(CFBundleVersion)を基準とする処理を行っている場合に不都合が発生します。
ではCFBundleShortVersionStringのベターな設定はどういうものでしょうか。
こちらが参考になりました。まあ公式ドキュメントなんですけどねww
CFBundleVersionは1.2.3
のようにする、CFBundleShortVersionStringは1
のようにして
バイナリアップロードの際にCFBundleShortVersionStringを1ずつ上げていくようにすれば
Google Play Developer ConsoleにAndroidアプリのapkをアップロードする時の
AndroidManifest.xml内のversionCodeとversionNameと同じ扱いになる のでちょっとスッキリします。
まとめ
- App一般情報のバージョン設定
1.2.3
- CFBundleVersionの設定
1.2.3
- CFBundleShortVersionStringの設定
6
(何回目のバイナリアップロードか)
6なのは特に意味は無いです。