You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gradle Kotlin DSL中定义Android Product Flavors?

在Gradle Kotlin DSL中定义Android Product Flavors

问题背景

我最近把Android项目的Gradle配置从Groovy迁移到了Kotlin DSL,项目能正常运行,但在定义Product Flavors的时候卡壳了。我的现有配置大致如下:

android {
    compileSdkVersion(Config.Android.compileSdkVersion)
    buildToolsVersion(Config.Android.buildToolsVersion)
    defaultConfig {
        minSdkVersion(Config.Android.minSdkVersion)
        targetSdkVersion(Config.Android.targetSdkVersion)
        versionCode = Config.Version.code
        versionName = Config.Version.name
    }
    buildTypes {
        getByName("release") {
            isMinifyEnabled = false
        }
    }
    flavorDimensions("dimension")
    productFlavors {
        // 不知道这里怎么写Product Flavors
    }
}

解决方案

经过一番摸索,我发现Kotlin DSL和Groovy DSL在这里的语法有明显差异——在Kotlin里需要用create()方法来创建Product Flavors,而不是像Groovy那样直接写名称。修改后的可运行配置如下:

android {
    // ... 其他原有配置保持不变 ...

    flavorDimensions("dimension")
    productFlavors {
        create("flavor1") {
            // 这里配置flavor1的专属参数,比如应用ID后缀、版本名后缀等
            applicationIdSuffix = ".flavor1"
            versionNameSuffix = "-flavor1"
        }
        create("flavor2") {
            applicationIdSuffix = ".flavor2"
            versionNameSuffix = "-flavor2"
        }
    }
}

补充说明

Kotlin DSL是强类型的,所以不能像Groovy那样通过动态属性的方式直接定义Flavor,必须调用create()方法来显式创建每个Product Flavor实例。你还可以在每个Flavor的闭包里配置更多专属逻辑,比如资源覆盖、签名配置、依赖差异等,核心逻辑和Groovy DSL一致,只是语法上更严谨。

内容的提问来源于stack exchange,提问作者kukuh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:24:44