バージョン名とビルド番号
リリース用にビルドする場合には、バージョン名とビルド番号が重要になります。バージョン名は一般的に「1.0.0」や「1.1.0」のように表示しますが、これはアプリ利用者に向けた表示です。
一方で、ビルド番号とはマーケット側やスマホ側が、どちらの方が新しいリリースかを判断するための番号になります。
したがって、ビルド番号が前回リリースしたものよりも大きくなっていないとバージョンアップのリリースとしては見なされません。この設定は最初のリリース時にはデフォルト設定で問題ありませんが、アップデート時には必ず更新が必要になるので、必ず確認するようにしましょう。
そして、Flutterでは、このバージョン名とビルド番号をリスト1のようにpubspec.yamlにて「バージョン名 "+" ビルド番号」という表記方法にて管理しています。
version: 1.0.0+1
これらの情報は各OSでは表1の項目情報として扱われるので、何か問題が生じた場合に備えて覚えておくとよいでしょう。
OS | バージョン名 | ビルド番号 |
Android | versionName | versionCode |
iOS | CFBundleShortVersionString | CFBundleVersion |
Android用のリリースビルド(1)
Androidでリリースビルドを作る場合、多くのケースでは図1のようにビルド設定だけを通常のAndroidネイティブアプリを作る場合と同じように行います。そして、実際のリリースビルドを行う際には再度、Flutter側のコマンドを使います。
Flutterに限らず、ハイブリッド技術を使う場合、どうしてもこのように一部分についてネイティブのプロジェクト管理に従った作業が避けられない箇所(図の赤枠部分)が生じます。
ハイブリッド技術の難しさは、グレー部分のように「どちらの方法でもできる」という点にあります。ブログなどでも、それぞれの手法がこもごも紹介されているため、「どちらが正しいのか」と戸惑ってしまうこともあるでしょう。よって、参考にしている情報が、どちらの情報について解説しているのかを気にしてみると、わかりにくさも多少和らぐのではないでしょうか。
Androidのターゲットバージョン
2024年11月現在において最新のAndroidバージョンは15であり、間もなく16がリリースされます。ただし、開発者が意識するべきバージョンは、これらのバージョンに対応するAPIバージョンです。双方の関係は、「AndroidバージョンとSDKバージョン」で確認できます。
Flutterでのデフォルトのバージョンは、リスト2のようにFlutterの共通ソース側に記述があります。
class FlutterExtension { /** Sets the compileSdkVersion used by default in Flutter app projects. */ public final int compileSdkVersion = 34 /** Sets the minSdkVersion used by default in Flutter app projects. */ public final int minSdkVersion = 21 /** * Sets the targetSdkVersion used by default in Flutter app projects. * targetSdkVersion should always be the latest available stable version. * * See https://developer.android.com/guide/topics/manifest/uses-sdk-element. */ public final int targetSdkVersion = 34 (省略)
ここでは、最低のSDKバージョンが21、つまりAndroid5であり、ターゲットとしているSDKが34、つまりAndroid14であることを示しています。
ただし、これらの設定を変更する際、上のコードを直接変更するのは好ましくありません。これらを設定する場合には、プロジェクト上のbuild.gradleを変更するようにしてください。
android { // (省略) defaultConfig { // (省略) minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName } }
このファイルで、最低バージョンを26(Android8以降)、ターゲットバージョンを33(Android13以降)とする場合には、リスト4のように書き換えます。ただし、ターゲットバージョンを34(Android14以降)を変える必要があるケースは多くないでしょう(その場合にはデフォルトのままで問題ありません)。
android { // (省略) defaultConfig { // (省略) minSdk = 26 targetSdk = 33 versionCode = flutter.versionCode versionName = flutter.versionName } }
また、ここで先ほどのバージョン名とビルド番号の指定が出てきています。
もちろん、この部分を直接書き換えてもバージョン名とビルド番号は設定可能です。しかし、Flutter側での設定(pubspec.yaml)での変更は反映されなくなるため注意してください。