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

如何在Android目录下的JSON文件中使用react-native-config定义的环境变量

实现方案

方案1:Gradle构建时占位符替换(推荐,无需修改业务代码)

这是最常用的实现方式,不会修改源文件,完全兼容MSAL默认读取assets配置文件的逻辑:

  • 先修改android/app/src/main/assets/msal_config.json,把需要注入变量的位置改成自定义占位符,示例:
    {
      "client_id": "{{AZURE_CLIENT_ID}}",
      // 其他配置项保留不变
    }
    
  • 打开android/app/build.gradle文件,添加如下gradle任务:
    project.afterEvaluate {
        preBuild.dependsOn(replaceMsalConfigPlaceholders)
    }
    
    task replaceMsalConfigPlaceholders(type: Copy) {
        from 'src/main/assets/'
        into "${buildDir}/intermediates/merged_assets/${variantDirName}/merge${variantName}Assets/out"
        include 'msal_config.json'
        // 替换占位符,直接从react-native-config注入的BuildConfig中取值
        filter { line ->
            line.replace("{{AZURE_CLIENT_ID}}", BuildConfig.AZURE_CLIENT_ID)
            // 有其他需要替换的环境变量,在此处追加replace逻辑即可
        }
    }
    
  • 构建APP时会自动执行替换逻辑,最终打包进APK的msal_config.json会自动填充对应环境的变量值,源文件不会被修改,不影响Git提交。

方案2:运行时动态加载替换

如果不想修改构建脚本,可以通过原生代码手动处理配置:

  • 安卓原生层先读取assets下的msal_config.json原始内容
  • 读取BuildConfig.AZURE_CLIENT_ID等react-native-config注入的变量,替换JSON中对应的字段
  • 把修改后的JSON内容直接传给MSAL SDK的初始化接口,不使用SDK默认读取assets静态文件的逻辑即可

注意事项

静态JSON本身不支持直接读取环境变量,所有注入逻辑都需要通过构建时替换或运行时修改实现,方案1适配成本更低,优先选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:30:03