我一直遇到一个奇怪的问题,第二次运行我的 Safari 应用程序扩展时,它不会显示在 Safari 中。
- 打开 Xcode。
- 新>项目。
- 在"其他"下,选择"Safari扩展应用程序",然后单击"下一步"。
- 在此"产品名称"屏幕上输入您想要的任何内容,然后单击"下一步"。
- 点击"创建"。
- 通过单击 Xcode 左上角的"播放"图标来运行项目。
- 它将打开一个小应用程序,底部有一个按钮,上面写着:"在Safari扩展程序首选项中打开"。
- 它可能不会出现。如果是这样,请跳到 10。
- 转到Safari标题菜单中的开发,单击"允许未签名的扩展"。
- 出现后,选中该框以启用它。
- 通过单击左上角的停止图标来阻止 Xcode 运行。
- 更改插件的信息列表中的值,例如将
SFSafariWebsiteAccess.Level
从"一些"更改为"全部"。 - 点按 Xcode 中的"播放"图标。
- Safari 会告诉您扩展权限已更改。确认这些更改,扩展将不再显示。
如果我更改其他值,也会发生同样的事情。如果我保持扩展代码和设置完全不变,则不会出现问题。但是一旦我更改了一些值,即使我将这些设置更改回来,它也会完全中断。
这发生在两个不同的Mac上,10.13和10.14都带有最新的Xcode。
我在Mojave上的Xcode上遇到了这个确切的问题。我所要做的就是转到产品>清理构建文件夹。这可能与您正在做的事情相同,但容易一些。
我能够纠正此问题的唯一方法是转到您的构建目录并删除构建文件。
您首先必须停止项目,然后删除此目录: ~/library/Xcode/DerivedData/[YOUR_PROJECT_NAME]/Build/Projects/debug
YOUR_PROJECT_NAME
将是您的项目名称加上一堆随机字符,因此您需要自己搜索此文件夹的真实名称。
您可以编辑_____extension.appex
的方案,并将其可执行文件设置为Safari.app
。每次构建/运行扩展(而不是包装器)时,都会打开一个新的 Safari 实例。这还将让 Xcode 控制台显示扩展的输出。不过要小心;如果 Safari 崩溃,您可能会丢失打开的所有标签页。这样,您既不必清理构建文件夹(也不必手动删除 Finder 中的文件)。