创建一个依赖外部库的 iOS8 框架

Posted

技术标签:

【中文标题】创建一个依赖外部库的 iOS8 框架【英文标题】:Creating an iOS8 Framework dependent on external library 【发布时间】:2015-04-23 16:38:56 【问题描述】:

我正在创建一个内部依赖于 AFNetworking 的 ios8 Cocoa Touch 框架。我不想将 AFNetworking 编译到我的框架中,让框架的用户提供 AFNetworking。无论有没有 CocoaPods,我都找不到任何正确方法的指南,有什么想法吗?

我不想将 AFNetworking 编译到我的框架中的原因是: 1. 保持框架尺寸最小 2. 避免与使用我的框架的开发人员的现有代码发生任何冲突,例如如果用户已经在使用 AFNetworking 并且刚刚决定导入我的框架

【问题讨论】:

Cocoapods 不是已经处理这些冲突了吗? guides.cocoapods.org/using/the-podfile.html @MikeD 我只是在谈论一般的冲突,不管其他用户如何决定使用其他框架:使用或不使用 CocoaPods github.com/jverkoey/… 【参考方案1】:

如果您正在编译使用“OTHER”框架的“YOUR”框架,那么使用“YOUR”框架的人也应该在他们的项目中包含“OTHER”框架。

但是为了让你编译你的项目,你必须在你的项目中包含“其他”框架。所以,据我所知,你不能从你的项目中排除“其他”框架。希望对您有所帮助。

【讨论】:

就是这样,我正在寻找从“MY”框架中排除“OTHER”框架 据我所知,你不能这样做,从技术上讲,如何在不添加“其他”框架的情况下进行编译。不添加就不能调用“其他”框架方法。 这不就是编译和链接的区别吗? “MY”和“OTHER”可以分别编译然后链接起来 "OTHER" 框架已经编译,你不需要在你的项目中再次编译它,当你使用来自“OTHER”框架的方法时,你所做的只是在你的项目中链接它。所以,你必须链接“其他”框架来编译“你的”框架。 这就是我要找的东西:github.com/jverkoey/…

以上是关于创建一个依赖外部库的 iOS8 框架的主要内容,如果未能解决你的问题,请参考以下文章

Bazel - 如何处理外部 .so 库的传递依赖关系?

Java 工程打包成库需要依赖其它外部库的打包方式

通过 Grab 添加的外部库的可选依赖项不可用

CMake 包含路径 - 依赖于外部库的库

对外部库的编译器依赖路径的组织

本地 aar 库的传递依赖