我们有一套多平台的命令行可执行文件和库,可以移植到 Mac。文件布局是
这是在一个经过代码签名的 DMG 中提供的,就像应用程序一样。这在 Catalina 之前工作正常。
现在在 Catalina 上,我们已经对所有可执行文件、dylib、应用程序(包括嵌套在顶级应用程序框架中的那些)、框架和 DM 本身进行了代码签名。当我们对其进行公证时,生成的 JSON 日志没有列出任何问题。但是,当我运行我们的任何可执行文件时 这取决于我们的 dylib 之一 我收到一个弹出窗口,告诉我“无法识别开发人员”。即使它已经签署和公证了。使用 -dvvv 选项运行 codesign 包括以下内容:
问题 我该如何解决这个问题,或者至少让 Gatekeeper 告诉我为什么它不接受这个文件?也许是一个日志,或者相当于 spctl --assess 的文件而不是应用程序?
观察
最佳答案
苹果还没有添加到他们的文档中的另一个花絮;如果您分发的是 dylib 而不是完整的应用程序包,则无法将公证结果装订到其中。到目前为止,所以documented , Catalina 应在安装软件时在线验证公证。
但是,经过公证的 dylib 将在构建机器上被拒绝 除非您将其添加到容器(即 zip/dmg)中,否则请删除原始副本,然后在公证被完全接受后再次从 zip 中提取它(即您已收到成功电子邮件)。似乎只有在创建文件时才检查公证。
您始终可以在 XCode 中运行它,但不能单独运行它,而无需删除和替换二进制文件。
关于macos - 如何确定 Gatekeeper 拒绝签名的可执行文件的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58749789/