React Native应用iOS模拟器可运行但真机构建失败求助
问题原因与解决办法
核心问题定位
报错中的errSecInternalComponent是代码签名权限异常的典型表现,结合你的环境(M1 Mac + Xcode14.3 + RN0.69.7),问题根源主要集中在三个方向:
- 钥匙串访问权限不足,导致
codesign无法调用签名证书 - Xcode14.3对RN旧版本的Pod框架签名逻辑存在兼容性问题
- M1架构下的终端运行模式、node路径配置异常
具体解决步骤
1. 修复钥匙串签名权限
- 打开钥匙串访问,找到你的「Apple Development」开发证书
- 右键证书 → 显示简介 → 「信任」选项卡,将「使用此证书时」设置为始终信任
- 执行命令手动解锁钥匙串,避免构建时权限拦截:
security unlock-keychain ~/Library/Keychains/login.keychain-db - 重启Xcode后再尝试构建
2. 调整Xcode签名配置
- 打开RN项目的Xcode工程,选中主App Target → 「Signing & Capabilities」
- 确认「Team」选择了正确的开发者团队,Bundle ID与证书绑定一致
- 先关闭「Automatically manage signing」,等待配置刷新后重新打开,让Xcode自动重新生成签名配置
- 进入Pods子项目,检查
double-conversion等第三方框架的签名设置:将其「Code Signing Identity」设置为Don't Code Sign(第三方框架无需单独签名)
3. 适配Xcode14.3与RN0.69.x的兼容性
RN0.69.x默认的Pod脚本在Xcode14.3下存在签名逻辑冲突,需修改Podfile:
- 打开项目根目录的
Podfile,在末尾添加以下代码:post_install do |installer| installer.pods_project.targets.each do |target| # 禁用指定第三方框架的签名要求 ['double-conversion', 'glog', 'Folly'].each do |pod_name| if target.name == pod_name target.build_configurations.each do |config| config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' end end end end end - 执行
pod install重新安装Pods依赖
4. 优化M1环境下的终端与node配置
- 右键终端 → 显示简介 → 勾选「使用Rosetta打开」,避免ARM架构与旧RN脚本的兼容性问题
- 修改
.xcode.env.local文件,动态设置node路径(替代硬编码路径):export NODE_BINARY=$(which node) - 重新执行
yarn install确保依赖适配当前环境
5. 清理构建缓存
- Xcode中按
Command+Shift+K清理项目缓存,手动删除DerivedData目录(路径可在Xcode偏好设置→Locations中查看) - 执行RN缓存清理命令:
yarn cache clean watchman watch-del-all rm -rf node_modules && yarn install - 重新运行构建命令:
yarn react-native run-ios --device
内容的提问来源于stack exchange,提问作者Vincensiu
相关产品推荐
相关产品推荐

