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

Pet*_*ter 10 macos frameworks codesign osx-gatekeeper

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

codesign -f -v -s "Developer ID Application: MY AG" "My.app/Contents/Frameworks/4DJavaScript.framework"  
Run Code Online (Sandbox Code Playgroud)

然后发生错误:

My.app/Contents/Frameworks/4DJavaScript.framework: bundle format is ambiguous (could be app or framework)  
Run Code Online (Sandbox Code Playgroud)

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

Bundle OS Type code FMWK  
Run Code Online (Sandbox Code Playgroud)

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

htz*_*fun 11

你的回答对我不起作用,所以我发布了我的。

如果您之前使用cp -r命令复制框架,则会遇到此问题。随着cp -a这个问题不会出现。这是因为在这两个选项中解析符号链接的方式不同。

  • 这是正确答案!当符号链接解析为目录时,协同设计中断。在框架中,顶级文件夹必须是指向 Versions/Current 的符号链接,而 Current 必须是指向实际版本的符号链接。通常为“A”。如果您无法修复结构,则签署“版本/当前”可能是一种解决方法。Apple,请修复您的 codesigner,说一些关于坏符号链接结构的信息,而不是“捆绑格式不明确”。 (6认同)

And*_*sen 8

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

codesign -f -v -s "Developer ID Application: My Dev ID" MyFramework.framework/Versions/Current
Run Code Online (Sandbox Code Playgroud)