M1 Mac上Xcode为何构建iOS Simulator-x86_64而非arm架构模拟器
问题原因
该报错属于典型的架构不匹配问题,触发原因如下:
- 当前Xcode在为模拟器构建x86_64架构的二进制包,但你引入的GoogleSignIn等依赖库编译生成的是arm64架构的模拟器文件,二者无法完成链接
- M1系列Mac上的模拟器本身确实支持arm架构,出现强制构建x86_64的情况通常有两类诱因:
- 项目或依赖的构建设置中,手动给模拟器配置了排除arm64架构的规则,这类规则大多是旧项目为适配Intel芯片Mac遗留的,迁移到M1设备后没有删除
- 依赖管理工具(如CocoaPods)版本过低,或者配置文件中存在强制指定模拟器架构为x86_64的逻辑,导致主项目和依赖的构建架构不一致
解决方法
步骤1:清理旧构建缓存
首先删除Xcode遗留的衍生数据,避免旧缓存干扰构建:rm -rf ~/Library/Developer/Xcode/DerivedData
步骤2:调整项目构建设置
打开Xcode项目,选中对应的target,进入「Build Settings」页面:
- 找到
Excluded Architectures配置项,删除所有为「Any iOS Simulator SDK」添加的arm64排除规则 - 找到
Build Active Architecture Only配置项,Debug模式设置为YES,Release模式设置为NO,Debug模式下Xcode会自动适配当前设备架构,M1设备上默认就会构建arm64版本的模拟器包
步骤3:修正CocoaPods配置(使用CocoaPods的项目需要执行)
打开项目的Podfile,在末尾添加如下配置:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = '' config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' end end end
保存后在终端项目目录下执行pod install,重新生成Pods项目配置。
步骤4:确认运行环境
检查选中的模拟器系统版本为iOS 14及以上,同时确认Xcode没有勾选「使用Rosetta打开」选项,重启Xcode后重新构建即可正常运行。
可选临时方案:如果需要快速运行调试,也可以右键Xcode图标,勾选「使用Rosetta打开」,重启后Xcode会运行在Intel转译环境下,默认构建x86_64架构的模拟器包,无需修改项目配置即可正常运行,缺点是编译速度会比原生arm64模式慢。
内容的提问来源于stack exchange,提问作者Konstantin Schubert
相关产品推荐
相关产品推荐

