🔥

ビルドバリアントについて少し調べてみた

2024/10/20に公開

概要

ビルド可能なさまざまなバージョンのアプリを表す。(無料版、有料版)

API レベルまたは他のデバイスのバリエーションに基づいて、異なるデバイスをターゲットとするアプリの異なるバージョンをビルドすることも可能。

ビルドタイププロダクトフレーバーを構成することで形成される。

ビルドタイプ

詳細:https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/dsl/BuildType?authuser=1

サンプル

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 を変更してみる

参考

https://developer.android.com/build/build-variants?hl=ja#change-app-id

サンプル

koltin(build.gradle.kts)

android {
    defaultConfig {
        applicationId = "com.example.myapp"
    }
    productFlavors {
        create("free") {
            applicationIdSuffix = ".free"
        }
        create("pro") {
            applicationIdSuffix = ".pro"
        }
    }
}

Discussion