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

如何在其他模块中使用app模块BuildConfig定义的配置值

跨模块共享BuildConfig配置实现方案

Android 中 app 模块的 BuildConfig 默认不允许其他模块直接访问,你可以通过以下两种方案实现配置共享:

方案1:抽取公共配置到全局Gradle文件统一管理

该方案无需新增模块,适合共享配置较少的场景:

  1. 在项目根目录新建config.gradle文件,存放所有全局公共配置:
ext {
    // 公共静态配置
    URL_PRIVACY_POLICY = "https://www.google.com/privacy-policy"
    URL_TERMS_OF_USE = "https://www.gogle.com/terms-of-service/"

    // 分环境配置
    envConfigs = [
        "development": [
            BASE_URL: "https://api.dev.google.com/",
            COUNTRY_CODE: "+63"
        ],
        "staging": [
            BASE_URL: "https://api.stage.google.com/",
            COUNTRY_CODE: "+0000"
        ],
        "production": [
            BASE_URL: "https://api.google.com/",
            COUNTRY_CODE: "+000"
        ]
    ]
}
  1. 在项目根目录的build.gradle头部添加以下代码,引入全局配置:
apply from: "config.gradle"
  1. 修改app模块的build.gradle配置,替换硬编码的配置值为全局引用:
applicationVariants.all { variant ->
    variant.buildConfigField "String", "URL_PRIVACY_POLICY", "\"${rootProject.ext.URL_PRIVACY_POLICY}\""
    variant.buildConfigField "String", "URL_TERMS_OF_USE", "\"${rootProject.ext.URL_TERMS_OF_USE}\""

    def currentEnv
    if (variant.name.startsWith("development")) {
        currentEnv = rootProject.ext.envConfigs.development
    } else if (variant.name.startsWith("staging")) {
        currentEnv = rootProject.ext.envConfigs.staging
    } else {
        currentEnv = rootProject.ext.envConfigs.production
    }
    variant.buildConfigField "String", "BASE_URL", "\"${currentEnv.BASE_URL}\""
    variant.buildConfigField "String", "COUNTRY_CODE", "\"${currentEnv.COUNTRY_CODE}\""
}
  1. 修改profile模块的build.gradle配置,添加对应配置字段生成规则(Library模块使用libraryVariants替代applicationVariants):
android {
    // 原有配置保持不变
    libraryVariants.all { variant ->
        variant.buildConfigField "String", "URL_PRIVACY_POLICY", "\"${rootProject.ext.URL_PRIVACY_POLICY}\""
        variant.buildConfigField "String", "URL_TERMS_OF_USE", "\"${rootProject.ext.URL_TERMS_OF_USE}\""
    }
}

配置完成后,你就可以在profile模块中直接通过BuildConfig.URL_PRIVACY_POLICY、BuildConfig.URL_TERMS_OF_USE调用对应配置值。

方案2:创建公共基础模块共享配置

如果需要共享的配置较多,推荐该方案,避免重复配置:

  1. 新建一个名为common_base的Android Library模块
  2. 在common_base模块的build.gradle中按照上述方法生成所有需要共享的BuildConfig字段
  3. 在app模块和profile模块的build.gradle中都添加对common_base模块的依赖:
dependencies {
    implementation project(':common_base')
}
  1. 所有模块都直接引用common_base模块的BuildConfig即可获取统一的配置值。

注意事项

需要确保所有模块的构建变体(development/staging/production)保持一致,避免出现配置不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:04