M1芯片Mac下Xcode构建Designables时报mach-o文件架构不兼容错误
M1芯片Mac Xcode构建Designables架构不兼容报错排查方案
该报错的核心原因是:Xcode在渲染@IBDesignable组件时会启动本地预览进程,该进程在M1芯片设备上默认运行arm64原生架构,若项目引入的第三方依赖库、自定义静态库/Framework仅包含x86_64架构切片,未适配Apple Silicon架构,就会触发该不兼容提示。
1. 验证依赖库的架构支持
- 打开终端,cd到对应依赖库所在的目录,执行命令
lipo -info 库名称.framework/库名称查看已包含的架构切片:- 如果输出结果中没有
arm64,说明该库本身不支持Apple Silicon,需要升级到官方支持arm64的版本,或要求库维护方重新编译包含arm64切片的版本。 - 如果是自行编译的静态库/Framework,编译时需要将
Architectures设置为标准架构,同时选择Any iOS Simulator and Any iOS Device编译为通用xcframework再引入项目。
- 如果输出结果中没有
2. 修正项目架构配置
- 检查主项目、所有子target、依赖的子项目/Pods项目的
Build Settings配置:- 确认
Excluded Architectures下,所有配置项都没有将arm64列入排除列表,尤其注意Any iOS Simulator SDK对应的排除架构配置,CocoaPods生成的Pods项目默认会在该配置下排除arm64,可手动删除该配置,也可在Podfile中添加如下post_install钩子统一修改,修改后执行pod install重新生成项目:
- 确认
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 移除模拟器架构下对arm64的排除规则 config.build_settings.delete 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' end end end
- 确认
Build Active Architecture Only配置,Debug模式设置为Yes,Release模式设置为No。
3. 临时兼容方案
如果依赖库短期内无法完成arm64适配,可强制Xcode运行在Rosetta模拟模式下:
- 退出Xcode,打开启动台找到Xcode图标,右键选择「显示简介」,勾选使用Rosetta打开,重启Xcode后重新构建即可正常运行。该方案无需修改项目配置,但会降低Xcode的运行响应速度。
4. 清理缓存生效配置
修改配置后如果报错依旧存在,大概率是旧构建缓存导致的,执行以下操作清空缓存:
- 打开Xcode按下
Command + Shift + K清理当前项目的构建目录 - 退出Xcode,执行终端命令
rm -rf ~/Library/Developer/Xcode/DerivedData清空全局构建缓存 - 重新打开Xcode执行构建操作
内容的提问来源于stack exchange,提问作者Shimak
相关产品推荐
相关产品推荐

