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

Android:为不同Flavor与Build Type生成差异化Gradle常量

解决Android Flavor + Build Type组合生成差异化Gradle常量的问题

我来帮你搞定这个配置问题!你当前的APP_INFO只区分了Build Type(Debug/Release),没有结合Flavor的差异,其实通过Gradle的变体遍历功能,就能轻松实现每个Flavor+Build Type组合的专属常量。

核心实现思路

我们可以遍历所有生成的Application变体,针对每个变体(比如originalDebug、blackRelease),拼接Flavor和Build Type的名称,生成对应的APP_INFO常量。

具体代码实现

根据你使用的Gradle脚本语言(Groovy或Kotlin DSL),选择对应的配置方式:

方式1:Groovy脚本(build.gradle)

android {
    // 定义你的Flavors
    productFlavors {
        original {
            // 如果有维度需求可以添加,没有则去掉
            dimension "appVariant"
        }
        black {
            dimension "appVariant"
        }
    }

    buildTypes {
        debug {
            // 保留你的Debug构建配置(比如minifyEnabled false等)
        }
        release {
            // 保留你的Release构建配置(比如minifyEnabled true等)
        }
    }

    // 遍历所有Application变体,生成组合式APP_INFO
    applicationVariants.all { variant ->
        // 将Flavor和Build Type名称转为大写,拼接成常量值
        def flavorUpper = variant.flavorName.toUpperCase()
        def buildTypeUpper = variant.buildType.name.toUpperCase()
        def appInfoValue = "\"${flavorUpper}_${buildTypeUpper}\""

        // 生成BuildConfig.APP_INFO常量
        variant.buildConfigField("String", "APP_INFO", appInfoValue)
    }
}

方式2:Kotlin DSL(build.gradle.kts)

android {
    productFlavors {
        create("original") {
            dimension = "appVariant"
        }
        create("black") {
            dimension = "appVariant"
        }
    }

    buildTypes {
        getByName("debug") {
            // 你的Debug构建配置
        }
        getByName("release") {
            // 你的Release构建配置
        }
    }

    applicationVariants.all {
        val flavorUpper = flavorName.uppercase()
        val buildTypeUpper = buildType.name.uppercase()
        val appInfoValue = "\"${flavorUpper}_${buildTypeUpper}\""

        buildConfigField("String", "APP_INFO", appInfoValue)
    }
}

配置说明

  • 这段代码会为每个变体生成对应的APP_INFO:
    • originalDebug → BuildConfig.APP_INFO = "ORIGINAL_DEBUG"
    • originalRelease → BuildConfig.APP_INFO = "ORIGINAL_RELEASE"
    • blackDebug → BuildConfig.APP_INFO = "BLACK_DEBUG"
    • blackRelease → BuildConfig.APP_INFO = "BLACK_RELEASE"
  • 如果之前你在buildTypes中单独设置过APP_INFO,请删除那行配置,避免冲突(变体级别的配置优先级更高)。

后续操作

配置完成后,点击Android Studio右上角的Sync Now同步Gradle,然后重新构建项目(Build → Make Project),新的BuildConfig就会生成并生效了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:28:17