试图为我的客户准备一个动态框架.我的框架(A.framework)使用第三方识别静态框架(B.framework).我无法向客户提供单独的A和B框架.理想情况下,应该构建B.framework并将其包含在我的A.framework的二进制文件中,因此客户的应用程序只会嵌入A.framework,而无需任何其他操作来链接该第三方应用程序.
我做了什么:
- 为项目添加了B.framework.
- 将B.framework添加到相应目标中的"链接框架和库".
- 内置A.framework.
- 创建了一个演示应用程序,并将A.framework包含在项目中.
- 将A.framework添加到"嵌入式二进制文件".
- 演示应用程序的构建失败,并显示消息"Missing required module'B'"(尽管它仅在A.framework中使用).
注意:
- 我既没有为B.framework创建任何模块映射文件,也没有为其他运行脚本创建
- 使A.framework静态是不可接受的,因为它包含一些资源(故事板,图标和一些其他文件)
- 试图制作不推荐的"伞"框架,但在演示应用程序中加载B.framework的包
- 试图通过在A.framework中简单地复制B.framework来制作虚假的"伞形"框架,但是在导出演示应用程序时出现了2个问题 - 大小的A.framework和Mach-O错误(因为动态A之间的Mach-O差异)和静态B框架)
任何想法都将受到高度赞赏!
UPD 1:这不是关于伞框架,因为正确的伞框架实现需要从bundle加载子框架,这是不好的.由于不同的Mach-O值(动态和静态),虚假框架实现(子框架简单地复制到伞)将不适用于发布.假伞框架具有巨大的尺寸,因为子框架被完全复制到伞内.
UPD 2:创建了一个小型测试项目:StaticFrameworkTest,它有3个子项目:
- 具有动态框架依赖性的演示应用程序(框架A),并且不应该对框架B有任何了解
- 具有静态框架依赖性(框架B)的动态框架,理想情况下应包含在框架的二进制文件中.
- 静态框架B.