FlutterでAndroidアプリのバージョンを指定する


FlutterでAndroidアプリのバージョンを設定しようとしてちょっと混乱したので覚書き。

build.gradleは標準だと

defaultConfig {
    applicationId "com.example.foobarapp"
    minSdkVersion 16
    targetSdkVersion 28
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

みたいな感じになっています。flutterVersionCodeflutterVersionNamelocal.properties で定義されています。

flutter.versionName=1.0.0
flutter.versionCode=1
flutter.buildMode=debug

なるほどこれを書き換えればいいのか、と思ったら違いました。 local.propertiesは自動生成されるので手で弄ってはいけない(弄っても上書きされる)ようです。

pubspec.yamlversion が自動的に反映されるようになっているんですね。

version: 0.1.0+1

と指定するとVersionNameは0.1.0に、VersionCodeは1になります。+の前がVersionName、後がVersionCodeになるわけです。

昨今の64bit対応必須化に伴って出番が増えた --split-per-abi を指定している場合はどうなるかも試してみました。

versionarmeabi-v7aarm64-v8a
0.1.0+110012001
0.1.0+310032003
0.1.0+100520053005

armeabi-v7a は+1000、arm64-v8a は+2000 される模様。自動で足される数を変える方法は見つからなかったので、とりあえずそういうものだと覚えておくのがよさそうです。

ちなみに pubspec.yaml の設定はコマンドラインで上書きできます。

> flutter build apk --build-name=1.0.0 --build-number=2

CIと組み合わせるときなんかはこっちのほうが便利かもですね。

参考URL




関連(するかもしれない)記事


おススメ