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"
}
みたいな感じになっています。flutterVersionCode
と flutterVersionName
は local.properties
で定義されています。
flutter.versionName=1.0.0
flutter.versionCode=1
flutter.buildMode=debug
なるほどこれを書き換えればいいのか、と思ったら違いました。 local.properties
は自動生成されるので手で弄ってはいけない(弄っても上書きされる)ようです。
pubspec.yaml
の version
が自動的に反映されるようになっているんですね。
version: 0.1.0+1
と指定するとVersionNameは0.1.0
に、VersionCodeは1
になります。+
の前がVersionName、後がVersionCodeになるわけです。
昨今の64bit対応必須化に伴って出番が増えた --split-per-abi
を指定している場合はどうなるかも試してみました。
version | armeabi-v7a | arm64-v8a |
---|---|---|
0.1.0+1 | 1001 | 2001 |
0.1.0+3 | 1003 | 2003 |
0.1.0+1005 | 2005 | 3005 |
armeabi-v7a は+1000、arm64-v8a は+2000 される模様。自動で足される数を変える方法は見つからなかったので、とりあえずそういうものだと覚えておくのがよさそうです。
ちなみに pubspec.yaml
の設定はコマンドラインで上書きできます。
> flutter build apk --build-name=1.0.0 --build-number=2
CIと組み合わせるときなんかはこっちのほうが便利かもですね。
参考URL
関連(するかもしれない)記事
おススメ