AndroidStudio 3.0 にアップデートしましたが,
こんな build.gradle で 以下のエラーです.
android {
// ...
}
productFlavors {
flavor1 {
// ...
}
}
buildTypes {
release {
// ...
}
debug {
// ...
}
}
Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
StackOverflowで調べてみると以下の記述で大丈夫と書かれている.
Android Studio 3.0 Flavor Dimension Issue - Stack Overflow
android {
// ...
flavorDimensions "default" // OK
//flavorDimensions "versionCode" // OK
}
productFlavors {
flavor1 {
// ...
}
}
buildTypes {
release {
// ...
}
debug {
// ...
}
}
これでビルドは通る.
なんだか気持ち悪いし意味が不明すぎますね.
試してみる
いろいろやってみましたが, 以下のような記述がOKです.
android {
// ...
flavorDimensions "a"
}
productFlavors {
flavor1 {
// ...
}
}
buildTypes {
release {
// ...
}
debug {
// ...
}
}
productFlavor を複数にする.
android {
// ...
flavorDimensions "a"
}
productFlavors {
flavor1 {
// ...
}
flavor2 {
// ...
}
flavor3 {
// ...
}
flavor4 {
// ...
}
}
buildTypes {
release {
// ...
}
debug {
// ...
}
}
flavorDimensions で productFlavor を2段階に分ける.
android {
// ...
flavorDimensions "a", "b"
}
productFlavors {
flavor1 {
dimension "a"
// ...
}
flavor2 {
dimension "a"
// ...
}
flavor3 {
dimension "b"
// ...
}
flavor4 {
dimension "b"
// ...
}
}
buildTypes {
release {
// ...
}
debug {
// ...
}
}
dimension で階層化された Build Variant が作成される.
まとめ
もともと productFlavor では以下のようなものが設定できました.
- applicationId
- versionCode
- minSdkVersion
- versionName/Suffix
- ソースコードやリソースの位置
- dependencies
これらを階層化させたい場合に使うのがいいように思います.
まずは, 開発時の時間短縮でしょうか.
flavorDimensions "minSdkVersion", "others"