苹果在Xcode 8中引入了Xcode源代码编辑器扩展。Xcode 8是否仍会支持通过Alcatraz提供的插件?
Xcode 8为了安全起见禁止了代码注入(之前插件的载入方式)。您可以通过移除Xcode上的代码签名来避免此问题。以下两种工具都可以简化此过程:
https://github.com/inket/update_xcode_plugins
https://github.com/fpg1503/MakeXcodeGr8Again
如果要在Xcode 8+ 上使用插件而不移除代码签名,则必须将插件重写为 Xcode Source Editor Extensions。不幸的是,这些扩展的API目前只允许进行文本替换,因此它们并不能成为完美的替代品。
我已经在rdar上提交了一份报告,请毫不犹豫地表达你的想法:
Xcode是所有苹果平台开发的主要工具。人们可能会喜欢或讨厌它,事实是它仍然是最强大的开发工具。许多第三方插件通过Alcatraz项目实现了它的强大和有用性,它是Xcode的扩展管理系统中最重要和必需的部分,就像npm对于Node.js一样重要。这一切都基于一个公正、意识到自己作为有用的开源附加组件的社区,并在GitHub上发布它们。它不是针对感染代码注入的贫民窟。它是一个社区内的社区。Xcode 8倾向于放弃对这些插件的支持,通常被描述为防止注入内容的安全措施。这是错误的;你根本不能阻止这种情况,因为总有人会找到方法。这一步只是使Xcode变得不那么易用、复杂和功能不那么丰富。有许多重要的插件,开发者喜欢并为之做出贡献,推动Xcode变得更好,说实话,比你在短时间内能做得更好。社区需要强大的东西。远比基本的源代码编辑魔法强大。请在社区精神和对开发者的支持下重新考虑这一步。在过去几年中,有一个向关闭平台的趋势。首先是关闭Spotlight插件及其伟大的Flashlight插件管理器,它非常棒,现在我需要禁用Rootless才能使用它。现在是Xcode插件。你们正在做越来越多的事情,让开发者和高级用户感到难过,没有掌控他们的计算设备。在Alcatraz repo上有一份详细的讨论,它说了一切:https://github.com/alcatraz/Alcatraz/issues/475。我附上了一个我简直无法度过一天的伟大插件列表: AxeMode-Xcode问题修补Backlight-活动线突出显示ClangFormat-代码格式化DerivedData Exterminator-每天需要摆脱糟糕的东西FuzzyAutocomplete-名字说了一切,仍然比Xcode完成更强大HighlightSelectedString MCLog-控制台日志过滤,包括正则表达式OMColorSense Polychromatic-变量着色,可爱的东西RSImageOptimPlugin-处理PNG文件之前提交SCXcodeMinimap-喜欢这个SublimeText-thingy! XCFixin_FindFix-修复查找功能XcodeRefactoringPlus-修补重构功能,仍然有缺陷,但比没有插件的Xcode少XToDo-TODOs集合ZLGotoSandbox-因为处理你的文件夹没有它会很糟糕。其中大多数与源代码无关,因此值得像魔术一样再次加载和正常工作。由于苹果尚未准备好可以执行插件之前所做的API(扩展程序),因此Apple决定关闭Alcatraz软件包管理器周围的生态系统,也没有任何支持可供期望。目前,这些扩展程序仅限于文本框架,无法实现太多功能。
苹果公司宣布的主要原因是安全性问题,我们现在可以通过努力禁用代码签名,以恢复Xcode中缺失的最重要的功能。对于社区来说,这是糟糕的一天,是苹果做出的错误决定。
我还建议在这里讨论Alcatraz:https://github.com/alcatraz/Alcatraz/issues/475如果您想支持Alcatraz,请在http://bugreport.apple.com上提交漏洞报告,以使他们意识到许多人正在遭受这种变化的影响
我也这样做了(openradar.appspot.com/28423208):
Xcode是所有苹果平台开发的主要工具。人们可以喜欢或讨厌它,事实是它仍然是最强大的开发工具。它的许多功能和用途是通过第三方插件实现的,后来被Alcatraz项目所覆盖,这是Xcode的扩展管理系统中的第一号,就像Node.js需要npm一样必不可少。它全部基于一个公正、明智的社区,开发其有用的开源附加组件并在GitHub上发布它们。它不是针对感染东西的注入代码贫民窟。它是一个社区内的社区。看起来这应该可以运行。在这里找到了一些答案: https://github.com/alcatraz/Alcatraz/issues/475 关键似乎是要删除代码签名,以使现有插件正常工作。