已签名Safari App Extension可在其他Mac运行,开发本机却异常?
解决Safari App Extension本机开发环境不显示的问题
这种情况我碰到过好几次,通常是开发环境的签名、调试配置或者Safari的开发模式设置导致的,给你几个排查和解决的步骤:
确保Safari开启了开发模式
打开Safari偏好设置,切换到「高级」标签,勾选最底部的「在菜单栏中显示“开发”菜单」。然后点击顶部菜单栏的「开发」,确认「允许未签名的扩展」或者「允许来自开发者的扩展」(不同系统版本表述可能有差异)是勾选状态。这一步是基础,很多时候就是没开这个导致本机看不到扩展。检查Xcode的签名和构建配置
- 在Xcode中选中你的项目,切换到「Signing & Capabilities」标签,确保主应用和扩展的签名都配置正确:开发环境下选择你的个人开发者ID,不要选「None」。
- 检查构建配置,确保你当前运行的是「Debug」配置(而非Release),并且扩展的「Embed App Extensions」选项已经开启。可以在主应用的「Build Phases」里查看「Embed App Extensions」是否包含你的扩展目标。
重置Safari的扩展缓存
有时候旧的缓存会干扰新扩展的加载,你可以试试:- 完全退出Safari和你的主应用
- 打开「活动监视器」,搜索并结束所有和「Safari」相关的进程(包括Safari本身、Safari Web Content等)
- 删除Safari的扩展缓存文件,路径是
~/Library/Caches/com.apple.Safari,直接把这个文件夹里的内容清空或者删除整个文件夹(重启后会自动重建)
验证扩展的Info.plist配置
打开扩展目标的Info.plist,确认以下几个关键配置是否正确:NSExtension->NSExtensionAttributes->SFSafariWebsiteAccess设置正确,比如是否允许所有网站,或者指定了正确的域名NSExtensionPrincipalClass指向了正确的扩展主类(比如$(PRODUCT_MODULE_NAME).SafariExtensionHandler)
重新构建并运行
做完上面的步骤后,在Xcode里先「Clean Build Folder」(快捷键Cmd+Shift+K),然后重新构建并运行主应用。启动后打开Safari,进入偏好设置的「扩展」面板,应该就能看到你的扩展了。如果还是不行,试试重启你的Mac,有时候系统的签名缓存需要重启才能生效。
内容的提问来源于stack exchange,提问作者Paul D. Waite




