XCode 14.2(M2)IBDesignable预览失效,架构不兼容问题求助
问题描述
加载自定义NSView(
.../Base.lproj/MainMenu.xib Failed to render instance of : dlopen(....app, 0x0001): tried: '/...' (no such file), '....app' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS....app' (no such file), '....app' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))
此前M1推出时已有类似问题,常见的LD_RUNPATH_SEARCH_PATHS路径添加方案无效。当前临时解决办法是:打开项目报错后,在Terminal切换到Intel架构再切回Arm架构(保持窗口打开),IB预览恢复正常。该问题属于Xcode回归问题,Intel设备的Xcode 11可正常运行。
永久解决办法
1. 强制Xcode以Arm64架构运行
- 右键应用程序中的Xcode.app,选择「显示包内容」
- 进入
Contents/Info.plist,添加或修改LSArchitecturePriority数组,将arm64放在首位:<key>LSArchitecturePriority</key> <array> <string>arm64</string> <string>x86_64</string> </array> - 保存后重启Xcode,执行
Cmd+Shift+K清理项目后重新构建
2. 统一项目架构设置
- 打开项目Build Settings,搜索
Architectures:- 将
Architectures设置为Standard Architectures (arm64, x86_64) - 若存在
Valid Architectures选项,添加arm64和x86_64 - 确保
Build Active Architecture Only在Debug模式下设为YES,Release模式下可设为NO
- 将
3. 清理Xcode缓存与构建数据
- 关闭Xcode,删除
~/Library/Developer/Xcode/DerivedData目录下的所有内容 - 在Terminal执行
xcodebuild clean命令清理项目构建缓存 - 重启Mac后重新打开项目构建
4. 检查自定义View的依赖库
如果
原因分析
该问题本质是M系列Mac上Xcode的Interface Builder在渲染自定义视图时,错误加载了x86_64架构的应用二进制文件,而非适配arm64架构的版本。临时切换Terminal架构的操作,实际触发了系统架构优先级调整,让IB能正确找到arm64版本的二进制。
内容的提问来源于stack exchange,提问作者Lego Esprit

