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

React Native应用iOS模拟器可运行但真机构建失败求助

问题原因与解决办法

核心问题定位

报错中的errSecInternalComponent是代码签名权限异常的典型表现,结合你的环境(M1 Mac + Xcode14.3 + RN0.69.7),问题根源主要集中在三个方向:

  1. 钥匙串访问权限不足,导致codesign无法调用签名证书
  2. Xcode14.3对RN旧版本的Pod框架签名逻辑存在兼容性问题
  3. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:05:38