ビルド番号のルール

アプリのビルド番号でひっかかったのでメモ。こんなルール知らんかった。

ビルド番号の
左側(versionName)の制約

  • Android:表示用の“名前”。基本は自由な文字列(慣例的に major.minor.patch)。更新順の判定には使わない(更新可否は右側の versionCode で判定)。
  • iOS:App Store の規約により 1〜3個の整数を “.” で区切った形式(例:3.0.0, 3.0) 。
    一般公開中のバージョンより大きい値にする必要あり(同じ/小さい場合は新バージョンは提出不可)。

右側(build number / versionCode)の運用

  • Android常に前回より大きい整数 が必須(リセット不可)。 =>ここで引っ掛かった!
  • iOS:同じ左側(同じバージョン名)の中では 前回のビルドより大きい必要あり。
    左側を上げたときはリセット可能(例:3.0.0にしたら 1 から再開してOK)。
    ただし Flutter では左右を共通運用にしがちなので、混乱回避のため 右側も単調増加で統一することが多い。

  • 2.3.4+5 → 3.0.0+6 … ✅(左はメジャーアップ、右は増加)
  • 2.3.4+5 → 3.0.0+1 … ❌ Android でNG(右が小さい)
  • iOSだけ右を1から始めたいなら、Xcode側やCIでiOS専用のビルド番号を設定する等の分離運用が必要(Flutterの --build-name/--build-number は両OSに同じ値を流します)。

迷ったら:

  • 左:major.minor.patch を素直に上げる
  • 右:常に +1(Android基準)