osx 10.9.5代码签名V2 - 签署框架:bundle格式不明确

时间:2014-09-22 08:46:31

标签: macos frameworks codesign osx-gatekeeper

我正在尝试使用格式v2对osx mavericks 10.9.5上的应用程序包进行编码。在之前的测试中,10.9.5(13F12)的签名一切顺利,所有框架都可以无错误地签名。 现在,在13F34,框架无法再签名了。当我尝试用第一个框架签名时:

codesign -f -v -s "Developer ID Application: MY AG" "My.app/Contents/Frameworks/4DJavaScript.framework"  

然后发生错误:

My.app/Contents/Frameworks/4DJavaScript.framework: bundle format is ambiguous (could be app or framework)  

当我尝试编码签署框架的唯一版本(A)时,签名成功,但在签署主应用程序时,框架上的错误重新出现。 在查看框架的info.plist文件时,(在我看来)是类型集的正确条目:

Bundle OS Type code FMWK  

有关如何在10.9.5-13F34上正确编码签名的任何建议?
谢谢,彼得

4 个答案:

答案 0 :(得分:7)

在这个问题上发布赏金之后,我立刻想出来了。直接签署框架的当前版本可以解决问题:

codesign -f -v -s "Developer ID Application: My Dev ID" MyFramework.framework/Versions/Current

答案 1 :(得分:2)

你的回答对我没有用,所以我发帖了。

如果您之前使用cp -r命令复制了框架,则会出现此问题。使用cp -a时,此问题不会出现。由于在这两个选项中解析符号链接的方式不同,这种情况正在发生。

答案 2 :(得分:0)

我正在使用电子包装程序,需要使用--no-deref-symlinks标志和bam为我工作

答案 3 :(得分:0)

我遇到了同样的问题。就我而言,问题是我尝试{。{1}}的.app文件被存储在保管箱文件夹中。

很明显,默认情况下,dropbox解析符号链接,即符号链接完全由它们指向的数据替换。阅读here

在保管箱解析符号链接后,codesign命令无法识别捆绑软件的格式。

解决方案是不要将要尝试codesign的分发包存储在保管箱文件夹中。