iOS

iOSアプリバージョンについて

More than 3 years have passed since last update.

CFBundleVersion と CFBundleShortVersionString と iTunes Connect での申請時に設定すべき値について調べた結果を書く。

単に調べた結果の独自解釈です。Apple公式の情報ではありません。


用途

アプリケーションの配布に関するガイド (TP40012582 0.0.0) - AppDistributionGuide.pdf版番号とビルド文字列を設定する に全て書いてあった...

以下よりは、「アプリケーションの配布に関するガイド」を読んだ方が正確。


CFBundleVersion


  • 内部部管理バージョン

  • バンドルのリリースの繰り返しの識別。

  • ピリオドで区切られた3つの数字推奨。

  • リリースを問わないBundleのバージョン。

  • Bundleは実行ファイルという解釈でいいか。

  • リソースファイル(Info.plist)中に記述。

  • エンドユーザからは全く見えない。(どこにも表示されない。)

  • AppStore登録時に適切に更新されていないとエラー。


CFBundleShortVersionString


  • 表記用バージョン

  • アプリケーションのリリースの繰り返しの識別。ピリオドで区切られた3つの数字推奨。

  • ローカライズ可能とあったので表記用と思われます

  • リソースファイル(Info.plist)中に記述(Apple社では使っていない。)


AppStore登録のバージョン(iTunesConnect Version)


  • iTunes Store, iTunes等で表記

  • 表記のみ、アップル社として機能なし。

2014-05-02 時点で最新の「iTunes Connectデベロッパガイド」によると(昨年末に変更された?)


重要: バージョン番号がバンドルに設定されているバージョン番号と一致することを確認します。一致しない場合、以降の更新でアップロードエラーが発生する可能性があります。



推奨値

3つの数値をピリオドで区切った値。例、1.0.0

これは、CFBundleVersion と CFBundleShortVersionString の両方が対象。

CFBundleVersion は、


メジャーリビジョン、マイナリビジョン、メインテナンスリリース


とある一方で、CFBundleShortVersionString については各値の定義についての記述は見当たらなかった。経過日数.その日のリリース回数.総ビルド番号とか、yyyymmdd.ビルド番号.0とかが考えられる? リリースの度に確実に上がるものなら何でもいいのか。

参考

* CoreOS Release Notes

* Semantic Versioning 2.0.0


申請時とアプリのバージョン

申請時のバージョンの比較は、CFBundleVersion と CFBundleShortVersionString で空白でない方と。両方とも空白でない場合、どっちが優先されるんだっけ?(ソースが見当たらない)。

アプリのバージョンアップの大小判定は CFBundleShortVersionString で行われるんだっけ?(「アプリケーションの配布に関するガイド」によるとこれで正しいみたい)


参考