现有watchOS项目添加Widget Extension预览崩溃问题求助
解决watchOS Widget Extension预览报错及崩溃问题
1. 撤销错误的Target Membership操作
先取消Widget Extension文件的「MyProject WatchKit Extension」Target Membership勾选——Widget Extension是独立的应用扩展,不能直接归属到WatchKit Extension的目标下,这是触发崩溃的直接原因。
2. 修正Embed目标配置
打开Widget Extension的Target设置 → 「General」标签,找到「Embed in Application」下拉菜单,确认选择的是Watch App目标(即带.app后缀的目标,而非WatchKit Extension)。watchOS的Widget/Complication扩展必须嵌入到Watch App中,而非WatchKit Extension。
3. 处理版本兼容性问题
你的主应用部署目标为watchOS 6.1,但Widget Extension要求最低watchOS 9.0,需做好以下配置:
- 确保Widget Extension的Target设置中,「Deployment Info」的「Target」为
watchOS 9.0; - 保持WatchKit Extension和Watch App的部署目标为6.1不变,同时确认Widget Extension的
Info.plist中MinimumOSVersion值为9.0; - 保留已添加的
@available(watchOS 9.0, *)修饰符,确保Widget仅在符合版本要求的设备上加载。
4. 修复预览配置与清理项目
- 调整预览代码,明确指定适配的watchOS设备,示例:
struct MyWidget_Previews: PreviewProvider { static var previews: some View { MyWidgetEntryView(entry: SimpleEntry(date: Date())) .previewContext(WidgetPreviewContext(family: .systemSmall)) .environment(\.previewDevice, PreviewDevice(rawValue: "Apple Watch Series 8 (45mm)")) } } - 执行清理操作:按
Cmd+Shift+K清理构建文件夹,再按Cmd+Option+Shift+K清理派生数据,重启Xcode后重新尝试预览。
5. 排查Info.plist配置错误
崩溃日志提到XPC服务字典问题,需检查Widget Extension的Info.plist:
- 确认
NSExtension字典下的NSExtensionPointIdentifier值正确:- 普通Widget:
com.apple.widgetkit-extension - Complication:
com.apple.watchkit.complication
- 普通Widget:
- 删除Info.plist中多余的XPC相关配置项(如果存在),避免干扰扩展加载。
内容的提问来源于stack exchange,提问作者Monica Granbois
相关产品推荐
相关产品推荐

