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

Expo分离后iOS Release构建失败:Command /bin/sh/退出码1错误求助

解决Expo Eject后Xcode Archive报错“Command /bin/sh failed with exit code 1”的方案

我之前在处理Expo eject后的iOS项目时也碰到过几乎一模一样的问题,结合踩过的坑,给你几个实用的排查和解决方向:


1. 先排查Expo配置文件的完整性

你看到的[exp] Unable to read ex...截断错误,大概率是Expo无法正确读取项目的配置文件(比如根目录的app.json/app.config.js,或者iOS目录下自动生成的Expo.plist)。

  • 先在项目根目录终端运行expo config命令,如果这个命令报错,那肯定是配置文件有语法问题(比如JSON格式错误、缺了逗号、键名写错),先把配置文件的问题修复好。
  • 检查iOS目录下的Expo.plist是否存在,如果不存在,试着重新运行expo eject(记得先备份好现有原生代码)。

2. 彻底清理缓存并重新安装依赖

缓存问题是这类报错的重灾区,按顺序执行以下操作:

  • 进入iOS目录,删除Pods文件夹和Podfile.lock文件
  • 运行pod deintegrate命令彻底卸载现有pod依赖
  • 重新执行pod install
  • 打开Xcode,用快捷键Cmd+Shift+K清理Build Folder
  • 删除项目根目录的.expo文件夹,然后重启Xcode再尝试Archive

3. 检查Xcode里的Expo脚本配置

这个/bin/sh错误一般是Build Phases里的Expo脚本执行失败:

  • 打开Xcode项目,进入Build Phases标签页,找到[expo] Configure project这个脚本
  • 把脚本里的命令复制到终端(先cd到iOS目录)手动运行,比如如果脚本内容是../node_modules/expo/scripts/autolinking-configure.sh,就执行这个命令,这样能看到完整的错误信息,而不是截断的Unable to read ex...,方便定位具体问题。

4. 确认版本兼容性

Expo、React Native和第三方库的版本不匹配也会导致eject后出现各种奇怪问题:

  • 检查package.json里expo、react-native、expo-camera的版本是否兼容,对照Expo官方的版本兼容列表调整(比如如果你的Expo版本是48,React Native应该对应0.71.x)
  • 如果版本差距较大,建议升级/降级到兼容的版本后重新eject和安装依赖

5. 替代方案:不用eject直接生成无签名IPA

如果你的核心需求只是生成无签名iOS IPA,其实可以不用走eject流程,直接在项目根目录运行:

expo build:ios --no-sign

这个命令会直接在Expo服务器上构建无签名的IPA,下载下来就能用,省去了处理原生项目的麻烦。


内容的提问来源于stack exchange,提问作者Abrar A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:07:58