我需要在OSX上的应用程序中创建框架中的符号链接(Vers10.10.1)。我在XCode之外,因为应用程序是在Qt中开发的。它提供了框架,但它们需要一些修改才能完成新的协同设计规则。
我将其命名为"ln -s path_origin path_target_link“,很明显,它工作正常,链接被创建,它们将解析到正确的位置。
但是,当我协同设计应用程序时,我会得到一个错误:“嵌入框架根目录中的未密封内容”
(为了验证我的过程,我从下载的另一个验证协同设计的包中复制了一个框架,我可以成功地对它进行签名,当我创建一个符号链接时,我的codesign开始给出错误,所以我假设问题是我的符号链接创建)
我尝试了其他有同样结果的方法,所以我肯定遗漏了什么。有什么想法吗?
发布于 2015-01-10 14:36:14
对这个案子来说对任何人都有用。在我的例子中,问题在于我创建的链接与粗糙的路径。显然,它们应该是相对的:您移动到链接应该到达的目录,并创建相对于当前位置的链接。
发布于 2015-04-15 13:01:31
Version 1代码符号只记录在参考资料目录中的文件,而忽略其余的文件。但是,在默认情况下,版本2基本上记录了所有文件。因此,我们必须签署每个框架包的版本和应用程序二进制文件。
确保您的框架包结构符合苹果的要求。

根据苹果的文档,框架包没有“内容”文件夹。相反,每个版本文件夹都会得到一个“参考资料”文件夹,其中包含Info.plist文件,并且在顶层框架文件夹中也有符号链接。Qt5框架在SDK构建后有不正确的布局,所以这不仅仅是macdeployqt的问题,而是整个框架组装部分的问题。

因此,请确认,您的应用程序包中没有错误的布局。
如果Qt框架包中有一个*.prl (即QtCore.framework/QtCore.prl)。*.prl文件可能会给您带来麻烦,因为codesign只是在“嵌入框架的根目录中显示了未密封的内容”而没有确切地说明到底发生了什么。如果你有任何prl文件的话。
Info.plist必须有正确的CFBundleExecutable字段。目前它没有。调试版本的Info.plist将覆盖发布版本,而且它还碰巧包含无效的数据。特别是,CFBundleExecutable将包含_debug后缀库名称,这是它不应该包含的。如果您有这个问题,那么修改不正确的info.plist。
最后一步是,在签署整个应用程序包之前,您必须共同设计所有的框架。
发布于 2022-11-02 10:00:04
对于任何对此问题感到困惑的人,您可以参考苹果的文档bundle
它包含了macOS/iOS/macOS/watchOS/tvOS的所有细节.
https://stackoverflow.com/questions/27871099
复制相似问题