如何在 Xcode 上为第 3 方 CLI 进行代码设计和启用强化运行时?

How to codesign and enable the hardened runtime for a 3rd-party CLI on Xcode?

我的项目需要 Ghostscript 来完成很多任务,所以我将 gs CLI 工具添加到我的项目资源中。但是,当我尝试对项目申请进行公证时,Xcode 向我显示:

我认为这可能是因为 ghostscript 可移植 CLI 是来自 Internet 的第 3 方程序并且没有代码设计,而且它还没有启用强化运行时。在最新的 MacOS Mojave 上,我必须对应用程序进行公证,以避免网守在用户打开 DMG 文件时显示警告。但是如果应用程序包含 3rd-party CLI,似乎公证很难通过。

有解决办法吗?

我终于找到了解决办法。以这种方式签署 CLI:

codesign --force --options runtime --sign "Developer ID Application: COMPANYNAME" ./CLITool

然后我成功归档了应用程序并上传到Apple进行公证。

启用强化运行时是通过--options runtime实现的。

我发现 this guide 对于 mac 商店外应用分发的公证和代码签名过程非常有帮助。

我的应用程序在为其启用强化运行时后崩溃了。这 comment and this other one 帮助我解决了当时的问题。