使用EAS构建React Native Expo iOS项目失败:pod install报错代码1
Expo React Native iOS构建失败:pod install exited with non-zero code: 1 解决方案
错误核心分析
从日志看,两个关键问题导致构建失败:
- 方法未定义错误:
undefined method __apply_Xcode_12_5_M1_post_install_workaround,这是旧版Expo针对Xcode 12.5和M1芯片的兼容补丁,新版本Expo已移除该方法,但Podfile仍在调用。 - 构建配置冲突:多个Pod(expo-dev-menu、Main等)的
DEFINES_MODULE设置值不一致,导致无法合并配置。
解决步骤
1. 清理远程构建缓存
先清除EAS远程构建缓存,避免旧依赖或配置干扰:
eas build:clear
2. 升级Expo核心依赖
确保Expo及相关核心包为最新稳定版,运行:
npx expo upgrade
若不想全量升级,至少保证expo、expo-dev-client(若使用)等核心包版本与当前Expo SDK兼容。
3. 修复Podfile配置
如果项目允许生成本地iOS目录(非纯托管工作流),执行以下操作:
- 生成本地iOS工程文件:
npx expo prebuild --platform ios - 打开
ios/Podfile,找到调用__apply_Xcode_12_5_M1_post_install_workaround的代码行(日志显示在第66行),直接删除该行。 - 在Podfile的
post_install钩子中添加统一配置,解决DEFINES_MODULE冲突:post_install do |installer| # 统一设置DEFINES_MODULE为YES installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['DEFINES_MODULE'] = 'YES' end end # 保留原有的React Native相关post_install配置 react_native_post_install(installer) end - 本地测试Pod安装:
确认无错误后,重新执行远程构建:cd ios && pod installeas build --platform ios
4. 排查第三方依赖
若上述步骤无效,检查package.json中的第三方原生依赖,更新到最新版本——部分旧库可能设置了冲突的DEFINES_MODULE值,新版本通常会修复这类问题。
5. 对齐CocoaPods版本
远程构建使用CocoaPods 1.14.3,本地测试时建议安装相同版本避免差异:
gem install cocoapods -v 1.14.3
内容的提问来源于stack exchange,提问作者Umar Dayyabu
相关产品推荐
相关产品推荐

