Mac 应用公证成功但 spctl 评估因 Qt 框架拒绝应用

Mac app notarization successful but spctl assessment rejects app because of Qt Frameworks

我们目前正在尝试验证我们的应用程序,以便将其分发到应用程序商店之外。我们在应用程序包中包含 OpenSceneGraph 库和 Qt 框架。

到目前为止我们是这样做的:

可执行文件、库和框架签名是使用 codesign 命令手动完成的,要对整个 .app 进行签名,我们执行以下操作:

codesign --force --verify --verbose=3 --options runtime --timestamp --entitlements App.entitlements -s "Developer ID Application: Our Dev Id" App.app

当我们发送压缩的 .app 进行公证时,我们通常会收到一个快速回复,通知我们公证已成功,但如果我们尝试 运行 spctl --verbose --assess --type execute -v App.app 我们收到以下错误:

App.app: 被拒绝(嵌入式框架根目录下存在解封内容)

同时使用公证输出检查 json 文件,我们注意到相同的错误,但它被标记为警告并使用代码签名检查没有返回错误。

经过一番挖掘,我们意识到这个问题与 Qt 框架有关:作为反证,我们尝试在没有 Qt 框架的情况下提交相同的应用程序,这次当包成功公证时 spctl 也接受了它. 因此,我们删除了根目录中的所有符号链接,将 .prl 文件移至 Resources/ 文件夹,并按照几篇论坛帖子的建议在 Versions/ 子文件夹中为 A/ 创建了一个别名,但我们无法拥有spctl 接受我们与 Qt 框架的捆绑。现在,在每个框架的根目录下,只有 Versions 文件夹,没有其他任何东西(我们用 ls-lha 进行了确认)

我们在这方面缺少什么?有没有办法至少得到一些提示,让验证工具感到不安的未密封内容在哪里?

提前致谢

最后,结果证明 macdeployqt 是可行的方法,因为它会以一种可以无误地签署捆绑包的方式自动安排框架。

当我们从 Qt 5.12.2 升级到 Qt 5.14.1

时,macdeployqt 未添加某些框架的问题消失了