签署嵌入式框架在 Xcode 11.2.1 中不起作用
Posted
技术标签:
【中文标题】签署嵌入式框架在 Xcode 11.2.1 中不起作用【英文标题】:Signing embedded framework not working in Xcode 11.2.1 【发布时间】:2020-03-08 10:00:11 【问题描述】:我有一个小型概念验证应用程序,我试图在我的框架 (AequumPOCFramework.framework) 中嵌入(并签署)一个框架 (Alamofire),但是,当我尝试部署到我的设备时,它一直给我错误
....在使用库验证的过程中无效:映射文件没有 cdhash,完全未签名?代码必须至少是临时签名的。
如果我只是尝试部署自己的框架,而不在其中嵌入 Alamofire,那么一切正常。
部署到我的 iphone 时的完整错误是:
dyld:库未加载:@rpath/Alamofire.framework/Alamofire 引用自:/private/var/containers/Bundle/Application/EDB697EB-EA15-4301-B4B6-A8FE1F0212BE/Pocios.app/Frameworks/AequumPOCFramework.framework/AequumPOCFramework 原因:没有找到合适的图片。发现: /private/var/containers/Bundle/Application/EDB697EB-EA15-4301-B4B6-A8FE1F0212BE/PocIOS.app/Frameworks/AequumPOCFramework.framework/Frameworks/Alamofire.framework/Alamofire:代码签名在(/private/var/containers/ Bundle/Application/EDB697EB-EA15-4301-B4B6-A8FE1F0212BE/PocIOS.app/Frameworks/AequumPOCFramework.framework/Frameworks/Alamofire.framework/Alamofire) 在使用库验证的过程中无效:映射文件没有 cdhash,完全未签名?代码必须至少是临时签名的。
我做错了什么?
【问题讨论】:
这里有同样的问题。目前正在研究这个问题。如果您已经找到解决方案,请随时通知我! 很高兴看到我不是唯一一个......如果我发现了,我会告诉你的。另外,如果您取得任何进展,请告诉我。 我已经可以告诉你,它与框架的签名过程有关。所以问题是 Xcode 说嵌入式框架的签名是错误的,或者和你自己的框架不一样。我目前正在深入挖掘。查看这篇文章以获得对该主题的良好介绍:medium.com/@tally_b/more-unfolding-on-ios-signings-b6886236d7fc 是的,这个签名过程有问题...现在,我将我的 Alamofire 框架包含到我自己的框架中,在其中签名并嵌入它,然后在应用程序本身中签名并嵌入它。我知道这很糟糕,但这至少可以让我继续编码,希望很快就会有真正的修复。 感谢您提供非常全面的答案...我决定现在,我将在应用程序本身中签署“嵌入式/嵌入式”框架,希望另一个答案会出现在附近未来…… 【参考方案1】:iOS 不支持嵌套框架(请参阅technotes)。目前唯一合法的解决方案是将“嵌入式”框架直接链接到托管应用程序。
* XCFramework 主要是平台特定二进制文件的聚合,不幸的是与嵌入框架无关。
【讨论】:
有关于这个问题的消息吗?我面临同样的问题:我的框架 A 正在使用我的框架 B,我需要最终的应用程序只包含框架 A 而不能访问框架 B @Silvia 如果你绝对需要隐藏B,那么我相信你可以把它变成静态库。 我不得不将嵌入式框架复制到客户端应用程序的框架目录中-谢谢您的回答 感谢您拯救了我的一天。现在,我对如何在 iOS 中处理伞形框架有了清晰的认识【参考方案2】:您也必须将 Alamofire 嵌入到您的项目中。
例如,您正在使用 Carthage,并且您的框架的 Cartfile 具有 Alamofire 库。您也必须为您的主应用程序使用相同的 Carfile。此外,您必须为主应用程序执行其他 Carthage 操作(链接库、添加运行脚本)。
【讨论】:
是的,我也发现了这一点,但是,让我的所有框架都暴露给最终开发人员并不是我的目标。我希望将所有东西都很好地捆绑在一个框架(我的框架)中。谢谢..以上是关于签署嵌入式框架在 Xcode 11.2.1 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 10:代码签名我的App + Framework失败,因为签署第三方依赖框架(PromiseKit)失败。适用于Xcode 9