Codeign:什么是未密封的内容?

时间:2014-09-20 15:50:31

标签: macos cocoa xcode6 code-signing

我刚刚升级到XCode 6,并尝试构建我的开发者ID签名的Mac应用程序。 但是,我现在得到以下代码签名错误:

unsealed contents present in the root directory of an embedded framework

这适用于我使用的Dropbox.framework。显然无法签署。错误是什么意思?怎么了?

11 个答案:

答案 0 :(得分:10)

问题是位于version.txt的{​​{1}}文件。虽然这对于了解框架的版本是有用的,但似乎不再适用于协同设计。

当我删除文件时,一切正常。

答案 1 :(得分:9)

查看OS X Code Signing In Depth

从OS X版本10.9.5开始,OS X识别签名应用程序的方式将有所变化

Structure your bundle根据OS X 10.9或更高版本的预期:

  • 仅在应包含signed的目录中包含已签名的代码 码。
  • 仅包含应包含
    的目录中的资源 资源。
  • 请勿使用--resource-rules标志或ResourceRules.plist。他们 已被淘汰,将被拒绝。

答案 2 :(得分:7)

今天有几个小时出现同样的问题,因为我试图让Yosemite .framework捆绑到优胜美地。最后,问题是我制作的符号链接,而不是目录中的严格文件。

最初,该程序包的根目录中有一个符号链接已损坏。我修好了。

我添加的符号链接:

Headers -> Versions/Current/Headers/

需要做什么:

Headers -> Versions/Current/Headers

额外的斜线是杀手。

请注意,这在两个不同的位置上给我两次:我也有

Current -> 1.8.0/

我需要的地方

Current -> 1.8.0

我不是一个* nixer,所以也许这是常识,但希望它能帮助像我这样的其他Windows开发者。

答案 3 :(得分:2)

我今天遇到了类似的问题...我的错误是"捆绑根目录中存在未密封的内容"。我的修复是删除我的应用程序上的自定义图标。 AppName.app/Icon?以某种方式腐败......

答案 4 :(得分:1)

我今天研究了一段时间并没有找到任何建议,我的sdl_mixer.framework有五个嵌入式框架,我无法通过iTunesConnect。我的解决方案是删除其中三个我实际上并不需要的东西,另外两个作为独立框架添加到我的项目中,而不是嵌入在sdl_mixer中。希望这对某人有所帮助,我花了好几个小时。

答案 5 :(得分:0)

我现在已经打了两次,所以我添加了原因,因为codesign非常不透明,并且通常拒绝告诉你有问题的资源是什么。

有一次,我有一个无符号的二进制可执行文件。每个可执行文件和框架都需要单独签名才能作为一个整体唱歌。

然后我打了另一个案子。我将代码签署为发布过程的一部分,重新​​签署每个可执行文件和框架。但是Xcode也签署了捆绑包,结果证明这是在_CodeSignature文件夹中留下的。所以现在,在签署每个可执行文件和框架然后签署捆绑包之前,我预先删除了Xcode生成的_CodeSignature文件夹,其中包括:

find MyApp.app -name _CodeSignature -type d -exec rm -rf {} +

希望这些来之不易的信息能在某一天节省一些时间。

答案 6 :(得分:0)

我有同样的问题,有用的是删除DerivedData文件夹的内容。 Xcode没有说哪个资源导致了这个问题,所以我从头开始重建所有东西。干净也不起作用。

答案 7 :(得分:0)

在我的情况下,我试图用一些旧框架签署一个应用程序。这些建议都没有帮助。原来我必须从框架内删除PkgInfo文件才能让这条消息消失。

答案 8 :(得分:0)

当我尝试签署另一个框架时,我遇到了问题,这里的答案非常鼓舞人心,这里一定是框架结构的一些问题,但我确实找到了它们。结构似乎是正确的,符号链接没有收费" /",没有额外的文件(用ls检查)...

经过大量的尝试,我终于意识到框架中有一个额外的.DS_Store,这真的很烦人:(

因此,如果您仍然遇到错误,请尝试检查是否有任何隐藏文件。

答案 9 :(得分:0)

此问题的另一个可能原因:如果您正在构建具有相同名称和相同安装位置的iOS和macOS应用程序,您可能会发现它们都写入同一个应用程序包中。首先,iOS应用程序构建将其内容直接放在应用程序包根目录中,然后macOS应用程序构建将其内容放入应用程序包中的“Contents”文件夹中,然后编码对iOS资源的抱怨。

答案 10 :(得分:0)

我有这样的错误:

<some_path>: unsealed contents present in the bundle root
Command CodeSign failed with a nonzero exit code

问题是我使用了自定义 CONFIGURATION_BUILD_DIR[About]。经过一些更改(更改 macOS 和 iOS 平台)后,它发生了

当您清理项目时,不会清理此自定义位置构建(如派生数据)。要解决此问题手动删除此文件夹的内容