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

RN 64.0结合fastlane构建Android时react-native-config返回空对象问题

问题根因
  • 工作目录不匹配:react-native-config 会从Gradle任务执行的当前工作目录查找.env配置文件。你通过fastlane调用Gradle时指定了project_dir: 'android/',Gradle实际在android子目录下运行,而你的.env文件存放在项目根目录(android目录的上级),因此无法读取到对应配置,最终导入的配置对象为空。
  • 配置匹配错误:你贴出的fastlane配置仅包含build_staging lane,若未正确配置build_production lane的flavor参数为production,会导致flavor和buildType的组合无法匹配envConfigFiles中配置的key,也会出现配置为空的问题。
解决方案
  1. 统一.env文件路径规则,避免工作目录差异导致的读取失败。修改app/build.gradle中的envConfigFiles配置,通过项目根目录定位.env文件:
project.ext.envConfigFiles = [
    stagingdebug: "${rootDir}/../.env.staging",
    stagingrelease: "${rootDir}/../.env.staging",
    productiondebug: "${rootDir}/../.env.production",
    productionrelease: "${rootDir}/../.env.production",
]

其中${rootDir}指代安卓项目的根目录(也就是你代码中的android文件夹路径),../即可定位到RN项目的根目录,不管Gradle从哪个目录执行都能正确找到.env文件。

  1. 确认fastlane的build_production lane配置正确,示例如下:
desc 'Build the Production Android application.'
lane :build_production do
  gradle(task: 'clean', project_dir: 'android/')
  gradle(task: 'assemble', flavor: "production", build_type: 'release', project_dir: 'android/')
end
  1. 若修改后仍无法正常读取配置,可先清理构建缓存后重试:
# 清理Gradle构建缓存
cd android && ./gradlew cleanBuildCache
# 清理RN构建缓存
cd .. && rm -rf node_modules/.cache
  1. 补充检查:确认android/app/build.gradle文件顶部已经引入了react-native-config的gradle插件,引入代码必须放在android配置块之前:
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"

// 后续的android配置块
android {
  // ...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:57:03