Skip to content

构建变体 (Build Variants)

源:配置构建变体

构建变体(Build Variant)是 Build Type(构建类型)和 Product Flavor(产品风味)的结合体。

1. 构建类型 (Build Types)

通常用于定义编译属性,如是否混淆、签名等。

kotlin
android {
    buildTypes {
        getByName("debug") {
            applicationIdSuffix = ".debug"
            isDebuggable = true
        }
        
        getByName("release") {
            isMinifyEnabled = true // 开启混淆/R8
            isShrinkResources = true // 开启资源压缩
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
            signingConfig = signingConfigs.getByName("release")
        }
    }
}

2. 产品风味 (Product Flavors)

通常用于针对不同的客户、渠道或版本(免费版/收费版)配置不同的包名、资源或常量。

Flavor Dimension

所有的 Flavor 都必须属于一个“维度 (Dimension)”。

kotlin
android {
    flavorDimensions += "version"

    productFlavors {
        create("free") {
            dimension = "version"
            applicationIdSuffix = ".free"
            manifestPlaceholders["app_name"] = "免费版"
        }
        
        create("paid") {
            dimension = "version"
            applicationIdSuffix = ".paid"
            manifestPlaceholders["app_name"] = "尊享专业版"
        }
    }
}

3. 最终变体示例

基于上述配置,Gradle 会自动生成以下变体:

  • freeDebug
  • freeRelease
  • paidDebug
  • paidRelease

4. BuildConfig 常量

你可以为不同的变体定义不同的代码常量:

kotlin
android {
    productFlavors {
        create("free") {
            buildConfigField("String", "BASE_URL", "\"https://api.free.com\"")
        }
        create("paid") {
            buildConfigField("String", "BASE_URL", "\"https://api.paid.com\"")
        }
    }
}

在 Java/Kotlin 代码中访问:BuildConfig.BASE_URL