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

M1芯片Mac能否通过Rosetta运行Xcode/模拟器编译Intel专属库iOS项目?

结论

搭载M1系列芯片的macOS设备可以通过Rosetta转译运行Xcode与iOS模拟器,启动仅配置Intel(x86_64)架构依赖库的iOS项目。你遇到的模拟器编译失败、归档功能正常的问题,是因为仅勾选应用的Rosetta启动选项没有覆盖全编译链路的架构配置——归档面向真机arm64架构,不会触发模拟器架构的编译校验,因此不受Intel-only依赖的影响。

故障核心原因
  • 勾选Xcode的「使用Rosetta打开」仅能让Xcode应用本身运行在x86_64转译环境下,默认编译配置仍会优先构建arm64架构的模拟器产物,和仅支持x86_64的依赖库架构不匹配
  • 单独给模拟器app勾选Rosetta启动选项仅改变模拟器的运行架构,不会同步修改Xcode的编译目标架构参数,Xcode 14.3+版本下该操作反而会引发运行冲突
  • CocoaPods、SPM管理的第三方依赖不会随Xcode的Rosetta状态自动切换编译架构,容易出现架构冲突、符号找不到的报错
可落地解决方法

1. 配置全链路排除模拟器arm64架构

  • 打开主项目的Build Settings,搜索找到Excluded Architectures配置项
  • 针对所有iOS Simulator对应的Debug、Release配置,添加arm64到排除架构列表
  • 如果你使用CocoaPods管理依赖,需要在Podfile的末尾添加如下脚本,给所有Pod依赖同步配置相同的排除规则,避免依赖层的架构冲突:
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
    end
  end
end

添加完成后回到项目根目录执行pod install,重新生成依赖配置文件。

2. 正确配置Rosetta运行环境

  • 完全退出Xcode与所有模拟器进程,在访达的应用程序目录找到Xcode,右键选择「显示简介」,确认「使用Rosetta打开」处于勾选状态
  • 重新启动Xcode后可以打开活动监视器,找到Xcode进程查看「种类」列,显示为Intel即代表Rosetta转译状态正常生效
  • 取消单独给模拟器app勾选的「使用Rosetta打开」选项,需要运行Rosetta模拟器时,直接在Xcode顶部的运行目标下拉列表里,选择后缀标注为*(Rosetta)*的对应系统版本模拟器即可。

3. 异常排查校验

如果操作后仍报架构相关错误,可以在项目根目录执行如下命令,校验依赖库的实际架构:
lipo -info <你的依赖库路径/xxx.framework/xxx>
如果输出结果包含x86_64、未包含模拟器侧的arm64,说明依赖本身无问题,逐次检查主项目、扩展Target、三方依赖Target的Excluded Architectures配置是否都正确添加了模拟器侧的arm64排除项即可。


内容的提问来源于stack exchange,提问作者Alfonso Tesauro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:24:19