如何在Xcode 8.2.1中构建Safari Extension Companion?模板丢失了

时间:2017-02-12 17:23:00

标签: xcode macos safari

我想创建一个Safari Extension Companion,但创建Safari扩展程序的选项不会出现。

创建扩展程序的正确方法是什么?

enter image description here

2 个答案:

答案 0 :(得分:7)

要创建Safari应用扩展程序,您将新目标添加到Xcode中的现有项目。 - 在文档中提到。

  1. 启动Xcode并打开包含OS X应用程序的现有项目,或者创建一个新项目。

  2. 选择文件>创建新目标新>目标

  3. 在新目标表中,查看左侧边栏并选择OS X Application Extension。

  4. 从右侧的模板列表中选择Safari Extension,然后单击“下一步”。

  5. enter image description here

    1. 输入扩展程序的产品名称,例如“我的扩展程序”。

    2. 确保在“项目”菜单中选择了应用程序项目,并在“嵌入”中选择了OS X应用程序目标 在应用程序菜单中。

    3. 单击“完成”。

    4. 当Xcode询问您是否要为新分机激活新方案时,请单击“取消”按钮。

    5. Xcode在项目中添加了一个新组,其中包含几个新文件,包括Info.plist文件,各种支持源文件,Interface Builder文件,JavaScript文件和工具栏图像PDF。

      *可能还有一些步骤,虽然我很确定你可以处理它......

      Add a Safari App Extension Target in Xcode

答案 1 :(得分:2)

最简单的方法是只使用Xcode 8并排安装Xcode 7 - 这样可以正常工作 - 并在7中加载您的项目。创建扩展随播目标,但不要对它做任何事情。关闭Xcode 7并将Xcode 8打开到同一项目/工作区,您将看到该伴侣。如果你使用Swift,你需要对语言进行现代化处理(Xcode 7使用Swift 2,Xcode 8使用Swift 3);当您尝试编译时,IDE会直接建议一些更改,但是您可能需要手动更改其他更改。

或者/更尴尬的是,您可以在Xcode 8中创建一个新目标(例如Safari扩展),然后删除无关文件(例如用于内容注入的JavaScript)并编辑/替换扩展中的plist到扩展随播广告的plist。 NSExtensionPointIdentifier的关键属性为NSExtensionPrincipalClass;还要确保NSExtension实现扩展随播协议(这两个密钥都在I am using MSSQL shared database for my sonarqube. 下)。

请注意,这种方法的结果好坏参半。有时它有效,有时Safari假装它根本看不到扩展伴侣,有时扩展无法看到同伴,直到你重新加载它然后它可以...如果你能看到扩展伴侣,它应该工作(但请注意关于同伴崩溃的警告here)并且我没有找到任何有助于解决这些问题的日志记录。尝试使用Xcode 8调试扩展随播广告对我来说也不起作用。

我真的希望Apple没有坚持“思考不同”并且只支持Native Messaging,例如 每一个 现代浏览器。