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

如何在React Native中为不同bundle identifier配置对应env文件?

问题根因
  • 问题1:XCode中拷贝.env的脚本执行顺序晚于react-native-config读取环境变量的时机,导致始终读的是旧的.env文件内容
  • 问题2:npx react-native run-ios 默认使用Prod对应的配置构建,没有指定Dev/QA的scheme和配置,所以bundle id为Prod的值
修复步骤

1. 调整XCode脚本执行顺序

  • 打开XCode对应项目,点击项目根目录 → 选中对应Target → 进入Build Phases标签页
  • 找到你之前添加的拷贝.env的脚本,将它拖动到 [CP] Copy Pods Resources 之前、所有react-native-config相关执行步骤的最前面(如果没看到react-native-config的步骤,就放在所有pod相关执行步骤的最开头)
  • 给脚本加上判断逻辑,无需为每个scheme单独写脚本,同一个脚本即可适配所有环境:
# 根据当前构建的configuration加载对应env文件
if [ "${CONFIGURATION}" == "Debug Dev" ] || [ "${CONFIGURATION}" == "Release Dev" ]; then
  cp "${PROJECT_DIR}/../.env.dev" "${PROJECT_DIR}/../.env"
elif [ "${CONFIGURATION}" == "Debug Qa" ] || [ "${CONFIGURATION}" == "Release Qa" ]; then
  cp "${PROJECT_DIR}/../.env.qa" "${PROJECT_DIR}/../.env"
else
  cp "${PROJECT_DIR}/../.env" "${PROJECT_DIR}/../.env"
fi

注意:上面的Debug Dev、Release Dev要替换成你自己在XCode里新建的Dev/QA配置的实际名称,大小写严格匹配

2. 配置scheme构建预处理(可选,避免缓存问题)

  • 点击XCode顶部scheme选择栏 → 选中Dev scheme → 点击Edit Scheme
  • 进入Build → Pre-actions,点击+号添加New Run Script Action,把上面的拷贝脚本再粘贴一遍,设置Provide build settings from选择你的项目target,避免变量读取不到
  • QA和Prod scheme做相同配置,对应不同env文件即可

3. 修复命令行构建的bundle id问题

运行run-ios时指定对应的scheme和configuration即可,Dev环境的运行命令修改为:
ENVFILE=.env.dev npx react-native run-ios --scheme "myapp.Dev" --configuration "Debug Dev"
替换scheme和configuration名称为你自己的实际命名即可,QA环境同理替换对应参数

4. 清理缓存生效

修改完成后先执行以下操作避免缓存影响:

  • 删除项目根目录下的.env临时文件
  • 执行cd ios && xcodebuild clean清理XCode构建缓存
  • 删除模拟器上已安装的三个旧版本应用
  • 重新运行项目验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:57:02