【发布时间】:2011-12-03 14:14:59
【问题描述】:
最近一次提交后,我收到以下错误:
无效签名 - 嵌套应用程序包 (FooBar.app/Contents/Frameworks/GData.framework) 未签名、签名无效或未使用 Apple 提交证书签名。有关详细信息,请参阅代码签名和应用程序沙盒指南。
无效签名 - 嵌套应用程序包 (FooBar.app/Contents/Frameworks/Growl.framework) 未签名、签名无效或未使用 Apple 提交证书签名。有关详细信息,请参阅代码签名和应用程序沙盒指南。
无效签名 - 嵌套应用程序包 libcurl (FooBar.app/Contents/Frameworks/libcurl.framework) 未签名、签名无效或未使用 Apple 提交证书签名。有关详细信息,请参阅代码签名和应用程序沙盒指南。
所以我根据Technote 2206 签署了所有框架包:
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libcurl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libssh2.1.dylib
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./Growl.framework/Versions/A/Growl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./GData.framework/Versions/A/GData
技术说明 2206 说:
签名框架
将框架视为捆绑包,因此得出可以直接签署框架的结论似乎是合乎逻辑的。然而,这种情况并非如此。为避免在签署框架时出现问题,请确保签署特定版本而不是整个框架:
#这是错误的方式:
codesign -s my-signing-identity ../FooBarBaz.framework
#这是正确的方式:
codesign -s my-signing-identity ../FooBarBaz.framework/Versions/A
当我尝试验证结果时,它看起来不错:
% codesign -vvv FooBar.app/Contents/Frameworks/libcurl.framework
FooBar.app/Contents/Frameworks/libcurl.framework: valid on disk
FooBar.app/Contents/Frameworks/libcurl.framework: satisfies its Designated Requirement
% codesign -vvv FooBar.app/Contents/Frameworks/Growl.framework
FooBar.app/Contents/Frameworks/Growl.framework: valid on disk
FooBar.app/Contents/Frameworks/Growl.framework: satisfies its Designated Requirement
为了好玩,我确实尝试直接签署框架包,但仍然被拒绝。但这正是文档所说的不应该做的事情。
任何猜测为什么会被认为是无效的?我使用的证书与我对我的应用程序进行代码签名时使用的证书相同——过去曾使用过的证书。
我唯一的猜测是与现有的 plist(我需要拥有框架的 Info.plist 中的标识符吗?)或权利——有什么建议吗?
【问题讨论】:
-
我在提交应用程序时也发现了这一点。值得庆幸的是,Apple 没有拒绝它,但指出我们稍后将不得不签署框架。我认为最好在 Growl 谷歌代码问题页面上发帖,很快人们就会遇到同样的问题。
-
在使用 Growl 框架提交应用时也遇到了这个问题。我猜您必须将 growl.framework 捆绑标识符更改为您拥有的标识符,然后对其进行代码设计。
-
这很奇怪:我发布了一个应用程序,其中包括两个未签名的框架(CorePlot 和 MacRuby)。我只在应用程序包上运行了一次代码签名命令,并且该应用程序已被接受,并且没有对框架进行任何评论。现在,如果您查看应用程序包 (bit.ly/charterapp),两个框架似乎都已签名。您是否尝试过简单地签署整个应用程序?
-
@p4010,我做到了——他们以前没有签名。例如,咆哮只是他们分发的直接捆绑包。现在,我在商店里有这个应用程序有一段时间了,所以我认为这与新的沙盒技术有关。您何时提交应用?
-
@Andrew,更改捆绑包标识符对您有用吗?
标签: xcode app-store-connect codesign mac-app-store