iOS・Androidアプリのバージョンの考え方がやっとわかったのでまとめる

Cordovaで設定するiOS、Androidのバージョンの考え方がようやく理解できたのでまとめておく。

config.xml

バージョンに関する設定はここにある。
<widget
  xmlns="https://www.w3.org/ns/widgets"
  id="com.example.app"
  version="1.0.0"
  ios-CFBundleVersion="21.07.01"
  android-versionCode="210701"
>
iOS、Andorid共通で使われる「version」。
iOSで任意に設定する「ios-CFBundleVersion」。
Andoridで任意に設定する「android-versionCode」。

「version」はいわゆるアプリのバージョンでユーザーに見える。
「ios-CFBundleVersion」と「android-versionCode」は所謂ビルド番号みたいな意味合いになるので通常ユーザーに見せない。

設定しなかった場合はビルド時にバージョンから自動で設定される。

上の例では「年月+同月の出力回数」といった感じで自分で採番し設定している。

iOS(App Store Connect)

「version」はビルドごとに上げる必要はないが、「ios-CFBundleVersion」はビルドごとに上げていく必要がある。
Transporterなどで一度App Store Connectにデリバリしたビルドは、バンドルバージョンを上げなければそもそもアップロードが成功しない。

上がったビルドはこのように表示される。
このためリジェクトでビルドを差し替えるときは同一バージョンでバンドルバージョンを上げて再デリバリすることでバージョンを上げずに再申請できる(ここが最初わからなくて欠番バージョンができても仕方ないのかと思っていた…)。

申請時に設定できる「Store バージョン番号」が実際にストアに表示されるバージョンになる。
これはビルドのバージョンと一致しなくても申請はできるが、合わせることが推奨されている。

Android(Google Play Console)

こちらも「version」はビルドごとに上げる必要はないが、「android-versionCode」はビルドごとに上げていく必要がある。

Google Play Console上ではこのように表示される。
リリースに対して名前を付けることができるが(上の画像では「v1.0.0」)、Google Play上では「version」に設定したものが表示される。

参考