如何在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
相关产品推荐
相关产品推荐

