React Native项目Xcode归档失败:自定义Shell脚本执行报错
React Native项目Xcode归档失败:Command PhaseScriptExecution报错
报错信息
Command PhaseScriptExecution failed with a nonzero exit code
错误发生在「Run custom shell script 'Bundle React Native code and images'」阶段
环境详情
- Xcode版本:16.0 (16A242d)
- Node版本:
/opt/homebrew/bin/node(which node命令输出) - React Native版本:0.74.3
- macOS版本:15.0.1 (24A348)
已尝试的解决方法
- 检查
node_modules/react-native/scripts路径,发现scripts文件夹缺失 - 执行
npm install/yarn install重新安装依赖,无变化 - 验证发现
$REACT_NATIVE_PATH变量为空 - 修改脚本为直接调用
react-native-xcode.sh,未解决问题 - 清理Xcode构建文件夹和DerivedData
- 在ios目录执行
pod install --repo-update - 已完成Stack Overflow常见修复:更新所有
...-frameworks.sh文件,在readlink调用中添加-f参数
补充信息
- 仅归档过程报错,常规Debug构建无异常
- 查阅React Native 0.74.3官方文档未找到明确解决方案
解决方案
1. 彻底修复React Native依赖缺失问题
scripts文件夹缺失通常是依赖安装不完整或缓存异常导致,执行以下步骤:
- 删除依赖目录和锁定文件:
rm -rf node_modules # npm用户执行: rm package-lock.json # yarn用户执行: rm yarn.lock - 清理包管理器缓存:
# npm npm cache clean --force # yarn yarn cache clean - 重新安装依赖并更新Pods:
npm install # 或 yarn install cd ios && pod install --repo-update - 验证scripts文件夹是否恢复:
ls node_modules/react-native/scripts
2. 修正归档阶段的Shell脚本
由于$REACT_NATIVE_PATH为空,使用绝对路径确保脚本能被正确找到,替换「Bundle React Native code and images」阶段的脚本为:
set -e # 配置Node路径和系统环境变量 export NODE_BINARY=/opt/homebrew/bin/node export PATH="/opt/homebrew/bin:$PATH" # 从项目根目录调用React Native打包脚本(Xcode工作目录为ios文件夹) "$(dirname "$PROJECT_DIR")/node_modules/react-native/scripts/react-native-xcode.sh"
3. 检查Xcode归档构建配置
- 打开Xcode项目,进入Target的Build Settings,搜索
Shell Script Execution,确保Run script only when installing未勾选 - 确认「Bundle React Native code and images」阶段在
Copy Bundle Resources之前执行(在Build Phases中拖拽调整顺序)
4. 适配macOS 15和Xcode 16
macOS 15和Xcode 16对路径解析权限更严格,补充以下操作:
- 验证Node可执行权限:
chmod +x /opt/homebrew/bin/node - 若仍有路径歧义,可临时在脚本中硬编码项目根目录(例如
/Users/xxx/your-project/node_modules/react-native/scripts/react-native-xcode.sh)测试
内容的提问来源于stack exchange,提问作者Sohaib Bin Mohsin
相关产品推荐
相关产品推荐

