【发布时间】:2014-04-02 03:00:09
【问题描述】:
我有一个非常奇怪的代码设计问题。以前几乎相同的版本已通过验证并已提交到 App Store,因此我的代码签名没有损坏。
最近我一直在尝试使用iTunesLibrary 框架。此框架仅在您的应用程序经过代码签名时才有效。尝试初始化指示代码设计失败的框架时,我遇到了一个常见错误:
错误域=NSPOSIXErrorDomain 代码=100001 “无法加载。” UserInfo=0x100329d80 {NSLocalizedDescription=Could not load., NSUnderlyingError=0x10031a430 "操作无法完成。(OSStatus error 100005.)"}
我的应用被组织成多个框架,包括动态链接和插件。我一直在使用--deep 标志对我的应用程序进行递归签名,但显然这是wrong。现在我使用run script 构建阶段来签署我的每个框架和插件。这似乎有效,因为codesign 告诉我应用程序已签名。
我已经在调试模式下构建了应用程序,并将其存档并导出为开发人员 ID 签名程序并检查了签名——两种构建模式都通过了。当我运行它时,我从iTunesLibrary 收到上述错误。真正奇怪的部分是,如果我导出应用程序并自己重新签名,那么iTunesLibrary 会正常运行:
codesign --force --sign "MyIdentity" --deep MyApp.app
如果我使用spctl --assess 试图告诉我更多关于此的信息,我会了解到这个应用程序尽管工作正常但签名错误:
/Users/me/Desktop/MyApp.app: rejected
iTunesLibrary 不喜欢的应用程序通过spctl 审查:
/Users/me/Desktop/MyApp.app: accepted
source=Developer ID
origin=Developer ID Application: Me
【问题讨论】:
标签: macos xcode5 osx-mavericks codesign ituneslibrary