我正构建一个iOS框架,我的框架将AFNetworking作为依赖。 那么包含AFNetworing的最佳做法是什么?阅读其他帖子(特别是这个问题here)我提出了三个选项:
将AFNetworing中的所有.h.m文件复制到我的项目中,并使用它编译我的框架。但根据this,可能会导致使用我的框架的某个第三方开发人员已经在使用AFNetworking并且会得到编译时错误,某些类被声明两次。
使用CocoaPods并将AFNetworking链接到我的框架。这导致此错误: -lPods不是目标文件(库中不允许)。
构建Aeris SDK之类的内容,使用我的框架的第三方开发人员将负责任地将AFNetworking添加到他们的项目中。
我认为选项3是最好的,但我不知道该怎么做。我如何设计我的框架调用AFNetworking类/方法,但不包括在最终框架产品中?
谢谢!
答案 0 :(得分:3)
在你的图书馆中使用第三方图书馆是一种非常糟糕的做法 理想情况下,你应该避免这样做。
但如果你真的需要它,你可以定义和添加类名前缀 请参阅此文Avoiding dependency collisions in iOS static library managed by CocoaPods
答案 1 :(得分:-1)
确定。我决定选择3。
刚刚将所有头文件从任何第三方库添加到我的框架项目中(您也可以添加.m文件,但不要将它们包含在静态库目标中)。
我还记录了所有内容,因此使用我的框架的开发人员将知道什么是依赖项以及如何在他们自己的项目中包含/安装它们(包括第三方lib版本,CocoaPods支持等)。
我决定不使用选项1,因为这会导致某些情况下项目将在最终应用程序上编译同一个lib的两个副本。即使更改我的框架代码上的libs的命名空间(以防止“重复的符号”错误)仍然会导致一些其他可能的问题,例如具有更大尺寸的APP,可能的错误与运行相同的lib的两个或更多个实例相关在一起等...