CordovaでiOSとAndroidのアプリを生成する場合のバージョン番号の設定方法

Cordova

CordovaでiOSAndroidの両方のアプリを生成する場合、バージョン番号をどのように設定すべきか迷ったので調べてみました。

まず、iOSAndroidのそれぞれでバージョン番号を設定する方法をまとめます。

iOSの場合

iOSでは、以下の項目でバージョン番号を設定します。

Version (CFBundleShortVersionString)
  • リリース・バージョン。
  • ユーザーに表示される。
  • 3つのintをピリオドで区切る。
  • iTunes Connectのバージョン番号と一致させる必要がある。

※Cordovaでは config.xmlversion の値が反映される。

Build (CFBundleVersion)
  • ビルド・バージョン。リリース有無を問わない。
  • この番号が上がることにより、iTunesでアプリが更新されたと判定される。
  • ユーザーには表示されない。
  • 3つのintをピリオドで区切る。

※Cordovaでは設定されないので手動で設定する必要がある。

参考情報

Information Property List Key Reference: Core Foundation Keys

itunesconnect - Which iOS app version/build number(s) must be incremented upon App Store release? - Stack Overflow

Androidの場合

Androidの場合、基本的には AndroidManifest.xml ファイルの以下の項目で設定します。

android:versionName
  • ユーザーに表示するためのもの。
  • 任意の文字列で指定。

※Cordovaでは config.xmlversion の値が反映される。

android:versionCode
  • 内部で使用され、ユーザーには表示されない。
  • intで指定し、大きい方が新しいバージョン。

※Cordovaでは設定されないので手動で設定する必要がある。

参考情報

Versioning Your Applications | Android Developers

<manifest> | Android Developers

バージョン番号の設定方針

以上の内容を踏まえて、AndroidiOSの両方のバージョンを設定する方針を考えます。あくまで一例です。

  1. confing.xmlx.y.z 形式のバージョンを設定。
    iOSVersionandroid:versionName に自動的に反映される。
  2. android:versionCode をインクリメント。
  3. iOSBuildVersion と同じものを設定。

まず、ユーザーに表示される番号ですが、僕の場合は major.minor.build という形式にしています。

リリースしない場合でも、ネイティブアプリを生成する場合は必ずビルド番号(またはメジャー番号やマイナー番号)をインクリメントするようにします。 こうすることで、アプリのファイルとソースを対応付けることができます。

残りの2つはリリース用なので、基本的には前より大きな値をセットすればOK。

android:versionCode はintしか指定できないので、単純にインクリメントします。

iOSBuildx.y.z 形式なので、シンプルに Version と一緒にします。

アプリリリース時の手順に入れておくと良いと思います。