嵌入式框架的代码签名问题

Posted

技术标签:

【中文标题】嵌入式框架的代码签名问题【英文标题】:Code signing issue with embedded frameworks 【发布时间】:2016-05-02 17:28:17 【问题描述】:

我的 ios 企业签名应用有时无法在设备中安装。来自设备控制台的日志显示其中一个嵌入式框架的代码签名是问题所在。

<Error>: 0x16e3eb000 __MobileInstallationInstallForLaunchServices_block_invoke222: Returned error Error Domain=MIInstallerErrorDomain Code=13  
 "Failed to verify code signature of /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.joar7U/extracted/Payload/MyApp.app/Frameworks/MyAppFramework.framework : 0xe8008001 (An unknown error has occurred.)"   
UserInfo=LibMISErrorNumber=-402620415, LegacyErrorString=ApplicationVerificationFailed, SourceFileLine=142, FunctionName=+[MICodeSigningVerifier _validateSignatureAndCopyInfoForURL:withOptions:error:],   
NSLocalizedDescription=Failed to verify code signature of /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.joar7U/extracted/Payload/MyApp.app/Frameworks/MyAppFramework.framework : 0xe8008001 (An unknown error has occurred.) 

这个问题并不总是出现,但是当这种情况发生时,我注意到框架的 ipa 内的 _codesignature 文件夹包含 4 个文件。 (codeDirectory、codeResources、codeSignature 和 codeRequirements)。在正常情况下,我只看到 CodeResources。我还注意到 info.plist 文件中的变量没有展开。

我尝试使用“codesign -vvv”通过代码签名工具进行验证,我得到代码签名有效。它在构建之前尝试过清理,但之后也会出现问题。

非常感谢任何帮助或指针。

【问题讨论】:

【参考方案1】:

更改任何嵌入式框架的包标识符似乎确实可以解决问题。我什至不确定你把它改成什么重要,只要它已经设置好了。

【讨论】:

【参考方案2】:

我的问题是空的“PRODUCT_BUNDLE_IDENTIFIER”。即使设置了CFBUNDLE_IDENTIFIER,xcodebuild 在嵌入式框架的情况下也期望它(PBI)。

但奇怪的是只有少数构建被破坏。

【讨论】:

以上是关于嵌入式框架的代码签名问题的主要内容,如果未能解决你的问题,请参考以下文章

“不嵌入”、“嵌入并签名”、“不签名嵌入”。这些是啥?。他们做啥?

引用的框架需要 Xcode6 代码签名吗?

代码签名框架失败,出现“权限被拒绝”错误

如何运行导致框架运行时错误“代码签名无效”的 iOS 应用程序

应用程序代码签名失败并出现错误“代码对象根本没有签名”

Xcode 5 + Sparkle + 代码签名