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

如何在Gradle Kotlin DSL中配置多模块Android项目的Flavor

解决方案

问题根源在于模块间的Flavor维度不匹配,导致Gradle无法自动关联:app和:data的对应Variant。以下是统一配置并解决依赖冲突的步骤:

1. 统一BuildSrc中的枚举定义

确保EndpointFlavor枚举的维度名称完全统一(注意大小写一致),并完善字段内容:

enum class EndpointFlavor(
    val key: String,
    val applicationIdSuffix: String,
    val endpointUrl: String,
) {
    Dev("dev", ".dev", "\"https://dev.example.com\""),
    Acc("acc", ".acc", "\"https://acc.example.com\""),
    Prod("prod", "", "\"https://prod.example.com\"");

    companion object {
        // 统一维度名称,所有模块必须使用这个值
        const val dimension = "endpoint"
    }
}

2. 配置:app模块

在:app中基于枚举创建Flavor,设置applicationIdSuffix,并正常依赖:data:

// app/build.gradle.kts
android {
    buildFeatures {
        buildConfig = true // 可选,若需要在app中用BuildConfig则开启
    }

    flavorDimensions.add(EndpointFlavor.dimension)
    productFlavors {
        EndpointFlavor.values().forEach { flavor ->
            create(flavor.key) {
                dimension = EndpointFlavor.dimension
                applicationIdSuffix = flavor.applicationIdSuffix
            }
        }
    }
}

dependencies {
    // Gradle会自动匹配与当前app Variant对应的data Variant
    implementation(project(":data"))
}

3. 配置:data模块

在:data中使用完全相同的Flavor维度和枚举定义,生成包含endpoint的BuildConfig:

// data/build.gradle.kts
android {
    buildFeatures {
        buildConfig = true // 必须开启,才能生成BuildConfig字段
    }

    flavorDimensions.add(EndpointFlavor.dimension)
    productFlavors {
        EndpointFlavor.values().forEach { flavor ->
            create(flavor.key) {
                dimension = EndpointFlavor.dimension
                buildConfigField("String", "endpointUrl", flavor.endpointUrl)
            }
        }
    }
}

4. 关键注意事项

  • 维度名称大小写必须完全一致:错误日志中出现的endPoint与你定义的维度名称可能存在大小写差异,这是导致Gradle无法匹配Variant的核心原因。
  • 仅在:app中设置applicationIdSuffix:Library模块(如:data)不支持修改applicationId,所以只能在Application模块配置该属性。
  • Gradle自动Variant匹配:当两个模块的Flavor维度、Flavor key完全一致时,Gradle会自动关联对应的Variant(如:app:devDebug会依赖:data:devDebug),无需额外配置。

内容的提问来源于stack exchange,提问作者Jan-Willem van Velzen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:20:45