Xcode 13 默认SwiftUI文件无法启动预览 提示previewInstances消息发送失败
问题根因
这个报错确实是代码签名校验不通过导致的,和你写的SwiftUI代码没有关系——你使用的默认生成ContentView代码完全合法,应用能正常构建运行也能印证这一点。
核心故障点:Xcode为SwiftUI预览生成的临时动态库(后缀为.preview-thunk.dylib)被做了临时adhoc签名,没有关联合法的开发Team ID,macOS的系统安全机制拦截了这个动态库加载到预览代理进程中,直接导致预览功能崩溃。你之前尝试的清理普通build文件夹、重启Xcode/设备都没有触及签名配置和预览专属缓存,所以无法解决问题。
修复步骤
按操作成本从低到高依次尝试:
- 修正Debug配置下的签名设置
SwiftUI预览默认使用Debug构建配置,绝大多数人出问题都是只改了Release配置的签名,漏了Debug配置:- 打开项目设置,选中你当前的macOS应用Target(即报错中提到的Layer Cake)
- 切换到Signing & Capabilities标签页,在顶部的构建配置选择器切到Debug
- 勾选Automatically manage signing,在Team下拉框选一个你已经登录Xcode的Apple ID对应的开发团队(免费个人账号的团队也可以用)
- 确认Signing Certificate选项选择的是Apple Development,不要选Sign to Run Locally或者Ad Hoc
- 清理预览专属缓存
普通清理Build文件夹不会删除预览生成的坏签名临时文件,需要手动清理:- 完全退出Xcode
- 打开访达,按
Cmd+Shift+G呼出路径跳转,输入~/Library/Containers/回车,找到和报错信息中UUID一致的文件夹(即C62869A9-4B70-4E37-8214-47A4E1A1AB38)直接删除 - 再次呼出路径跳转,输入
~/Library/Developer/Xcode/DerivedData/回车,删除名字和你的项目Layer Cake对应的整个文件夹 - 重新打开Xcode,等项目索引完成后再尝试启动预览
- 检查系统安全拦截规则
打开macOS系统设置→隐私与安全性,拉到页面最底部,查看是否有“已阻止来自开发者的软件加载”的提示,如果有就点击允许,之后重启Xcode重试。如果设备上安装了第三方安全、杀毒类软件,先临时退出,这类软件经常会拦截无正规签名的动态库加载。 - 重置Xcode预览状态(以上方案都无效时使用)
打开终端应用,依次执行下面两条命令,重置Xcode预览的全局状态:
执行完成后重启Xcode即可。defaults delete com.apple.dt.Xcode xcrun simctl --set previews delete all
内容的提问来源于stack exchange,提问作者Ter Maxima
相关产品推荐
相关产品推荐

