代码没有资源,但签名表明它们必须存在

Posted

技术标签:

【中文标题】代码没有资源,但签名表明它们必须存在【英文标题】:code has no resources but signature indicates they must be present 【发布时间】:2014-09-26 20:18:16 【问题描述】:

我有一个 Qt (5.3.1) 应用程序在 codesign 的最新更新之前运行良好,但现在看门人抛出此错误:

(我用来验证app bundle的命令是:spctl -at exec -vv path/to/.app)

部署脚本构建应用程序包,调用 macdeploy,复制所有丢失的 qt info.plist 文件,然后调用 codesign:

codesign --force --deep --verify --verbose --no-legacy-signing --sign "签名授权字符串" /path/to/.app

由于过时的资源信封错误,添加了 --no-legacy-signing。自上次运行以来,没有其他任何更改。

在 OS X Yosemite 上完成构建和协同设计,安装了 Xcode 6.0.1。这不是最新的 yosemite 版本,我不确定它到底是哪一个(我没有设置机器,但我确实看到更新中心正在提供对开发者预览版 8 的升级)。

有人遇到过这个错误吗?

【问题讨论】:

【参考方案1】:

我遇到了和你一样的问题。为了解决此问题,您需要执行以下操作:

    您需要在调用 macdeployqt 实用程序后更正框架结构。可以在这里找到所需的结构:Anatomy of Framework Bundles 某些 Qt 框架包含错误的 CFBundleExecutable 信息。可执行文件名称以_debug 结尾。 (特别是这些框架:QtPrintSupport、QtPositioning、QtQml 和 QtQuick)

你可以在这里找到我的完整解决方案:Unable to sign app bundle using Qt frameworks on OS X 10.10

【讨论】:

我检查了结构,发现在任何框架中都没有 _debug 可执行文件 - 但你的回答确实为我指明了正确的方向,原来我有一个过时的 sparkle 框架。

以上是关于代码没有资源,但签名表明它们必须存在的主要内容,如果未能解决你的问题,请参考以下文章

vue搭建的布局,资源全都存在,但页面上不显示,没有报错,是啥原因

命名空间错误中不存在类型资源

重用语句和结果集是不是会释放其先前使用的资源?还是我必须在重用之前明确关闭它们?

windows多线程编程

2017年php面试题汇总

Xcode 7 代码签名资源规则路径问题