🔥
ビルドバリアントについて少し調べてみた
概要
ビルド可能なさまざまなバージョンのアプリを表す。(無料版、有料版)
API レベルまたは他のデバイスのバリエーションに基づいて、異なるデバイスをターゲットとするアプリの異なるバージョンをビルドすることも可能。
ビルドタイプとプロダクトフレーバーを構成することで形成される。
ビルドタイプ
サンプル
koltin(build.gradle.kts)
android {
defaultConfig {
manifestPlaceholders["hostName"] = "www.example.com"
...
}
buildTypes {
getByName("release") {
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
}
getByName("debug") {
applicationIdSuffix = ".debug"
isDebuggable = true
}
/**
* The `initWith` property lets you copy configurations from other build types,
* then configure only the settings you want to change. This one copies the debug build
* type, and then changes the manifest placeholder and application ID.
*/
create("staging") {
initWith(getByName("debug"))
manifestPlaceholders["hostName"] = "internal.example.com"
applicationIdSuffix = ".debugStaging"
}
}
}
プロダクトフレーバー
defaultConfig
が実際に ProductFlavor
クラスに属しているため、プロダクト フレーバーは defaultConfig
と同じプロパティをサポートされている。
決まり
すべてのフレーバーは、名前の付いたフレーバー ディメンションに属していなければならない
フレーバー ディメンション:プロダクト フレーバーのグループ
サンプル
「version」という名前のフレーバー ディメンションを作成し、「demo」と「full」というプロダクト フレーバーを追加するサンプル
koltin(build.gradle.kts)
android {
...
defaultConfig {...}
buildTypes {
getByName("debug"){...}
getByName("release"){...}
}
// Specifies one flavor dimension.
flavorDimensions += "version"
productFlavors {
create("demo") {
// Assigns this product flavor to the "version" flavor dimension.
// If you are using only one dimension, this property is optional,
// and the plugin automatically assigns all the module's flavors to
// that dimension.
dimension = "version"
applicationIdSuffix = ".demo"
versionNameSuffix = "-demo"
}
create("full") {
dimension = "version"
applicationIdSuffix = ".full"
versionNameSuffix = "-full"
}
}
}
ビルド バリアント向けにアプリケーション ID を変更してみる
参考
サンプル
koltin(build.gradle.kts)
android {
defaultConfig {
applicationId = "com.example.myapp"
}
productFlavors {
create("free") {
applicationIdSuffix = ".free"
}
create("pro") {
applicationIdSuffix = ".pro"
}
}
}
Discussion