iOS 8+框架,嵌套嵌入式框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 8+框架,嵌套嵌入式框架相关的知识,希望对你有一定的参考价值。

我创建了一个自定义ios框架LoginKit。它反过来将Alamofire框架嵌入其中。在模拟器中,一切正常,但在尝试在设备上运行时,我收到错误:

Dyld错误消息:

  Library not loaded: @rpath/Alamofire.framework/Alamofire
  Referenced from: /Users/USER/Library/Developer/CoreSimulator/Devices/506B47DE-804F-477F-AA90-69DF039E07FA/data/Containers/Bundle/Application/26D0CA8F-7284-42B5-8091-E5915736DCDB/Bingo.app/Bingo
  Reason: image not found 

在父应用程序中,在嵌入式二进制文件部分中,我只有LoginKit.framework。现在,如果我还嵌入了Alamofire.framework(取自LoginKit下面),那么错误就会消失。这种行为有望吗?它不会破坏封装的整个目的吗?

答案

您要创建的内容称为“伞框架”。通过一些hacks和自定义bash脚本的使用,您可以使用嵌套框架创建这样的框架,如here所述。

但是,Apple highly discourages创建伞形框架,因为这种方法可以创建奇怪的运行时和/或链接错误的所有国王。此外,很明显,如果您的应用程序包含多个框架,这些框架在不同版本中嵌入相同的框架甚至相同的框架,那么它将变得更大,更难维护。 here可以找到对这些问题的一个很好的解释。

目前,包含框架的框架仍然是应用程序开发中的一个大问题,因为Apple不提供良好的框架处理。在这个问题最终解决之前,我强烈建议将所有框架和子框架直接嵌入到应用程序中。

以上是关于iOS 8+框架,嵌套嵌入式框架的主要内容,如果未能解决你的问题,请参考以下文章

ITMS 90539:无效的嵌套包 - 嵌套框架太多

仅 iOS 8.0 及更高版本(@rpath/libswift_stdlib_core.dylib)支持可重定位的 dylib(例如嵌入式框架)

避免子框架嵌入iOS

如何让 Cordova 通过插件自动嵌入自定义 iOS 框架?

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

iOS 静态与动态框架说明