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

M1芯片不使用Rosetta时Xcode无法构建React Native项目问题咨询

问题成因

该问题本质是Apple Silicon设备上的架构适配冲突,核心原因如下:

  • React Native项目中大量旧版本第三方原生依赖仅提供了x86_64架构的二进制切片,未适配Apple Silicon对应的arm64架构。Rosetta的作用是将x86_64指令转译为arm64指令,开启Rosetta运行Xcode时,会默认按x86_64架构构建项目,所有依赖的架构都能匹配,因此可以正常构建。
  • 直接打开Xcode构建时,默认会读取当前设备的原生架构(arm64),你之前配置的排除arm64操作大概率仅作用于主项目,未覆盖Pods依赖项目,或是配置未持久化,执行pod install后被重置,因此配置不生效。
  • npm run ios可以正常构建的原因是React Native官方CLI默认会在Apple Silicon设备上给xcodebuild命令注入ARCHS=x86_64参数,强制按x86_64架构构建,和开启Rosetta运行Xcode的构建逻辑完全一致。
无需Rosetta运行Xcode的解决方案

步骤1:修正持久化架构排除配置

  1. 打开项目的iOS工作空间文件(后缀为.xcworkspace,请勿直接打开.xcodeproj文件)
  2. 选中左侧导航栏最顶层的主项目,在右侧「构建设置」中找到Excluded Architectures配置项,给Debug、Release所有编译模式的Any iOS Simulator SDK选项添加值arm64
  3. 继续选中左侧导航栏的Pods项目,同样在「构建设置」中找到Excluded Architectures,给所有编译模式的Any iOS Simulator SDK选项添加值arm64
  4. 为了避免后续执行pod install覆盖Pods项目的配置,在项目根目录的ios/Podfile中添加如下post_install钩子:
post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end
end

配置完成后在ios目录下执行pod install使配置生效。

步骤2:全量清理缓存重试

关闭Xcode后,在项目根目录执行以下命令清理所有构建缓存:

rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ios/build
cd ios && pod deintegrate && pod install

完成后直接打开Xcode(不要勾选Rosetta启动选项),选择模拟器目标执行构建即可。

步骤3:极端情况适配

如果以上操作后依然构建失败,说明项目中存在完全未适配Apple Silicon模拟器的第三方依赖,可将对应依赖升级到适配Apple Silicon的最新版本,或是单独给该依赖配置Excluded Architectures排除arm64架构即可。

内容的提问来源于stack exchange,提问作者Haktan ERSOY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:15:03