如何打包一个依赖AFNetworking的静态framework

最近在接一个SDK开发的需求,计划打包成静态framework,制作静态framewok的博客网上一搜一大堆,但是真正能说清楚如何依赖AFNetworking的却很少,接下来我们就一起来看一下,如何制作一个依赖AFNetworking的静态库。

第一步,我们要创建一个静态库工程:打开Xcode ->File ->New->Project,会弹出图(1) 效果,我们选择Cocoa Touch Framework

图(1)

我们新建工程CLNetStaticFramework,那么问题来了,这个静态库如何依赖AFNetworking呢?

方法一:直接将AFNetworking 的源码导入到 CLNetStaticFramework 工程中,不过需要修改类名,不然,引用 CLNetStaticFramework 的工程中可能会造成类冲突。 这种方法不是很优雅,不推荐。

方法二:使用pod 来依赖AFNetworking,打出来的静态库,在引用的时候,引用静态库的工程也需要用pod 安装AFNetworking。这种方法虽然优雅,但是也有风险,比如说一些特别老的工程可能没有使用pod 来管理三方库,这就略微蛋疼了。But。。试问现在还要多少公司的工程不用pod来管理呢?如果采用 “方法一” 仅仅修改类名一项 也是够蛋疼的,而且库升级的话,也是无法自动支持的。说白了,要想没毛病,直接在系统网络的请求API的基础上去做静态库内部的网络请求接口,应该是最没毛病的。

不过,放着这么好的AFNetworking 不用,岂不是暴殄天物么。所以还是要研究一下,framework如何依赖AFNetworking。 好了废话不说了,接下来我们就开始探讨静态库如何依赖AFNetworking。也就是我们下面的第二步。

第二步:

我们cd 到 CLNetStaticFramework 目录下 vim 一个podfile 输入如图(3) :

图(3)

然后保存退出(esc+shift+: wq)。执行:pod install,关闭掉原来打开的工程,在当前目录下 执行:open . 重新打开工程选择图(4)的workspace


图(4)

然后新建一个引用AFNetworking 的的类 CLNetAPI。写一个测试代码如图(5)所示

图(5)

接下来把CLNetAPI的头文件CLNetAPI.h暴露出来如图(6)

图(6)

把将要暴露的头文件拖动到Public里面,然后把 CLNetAPI.h 引入到CLNetStaticFramwork.h中如图(7)

图(7)

然后我们要把framework工程修改为静态库framework,因为我们创建的工程默认是动态库工程,如图(8),将红框里面的Mach-o Type 修改为Static Library,这个一定要改,不改的话,打出来的framework 在引用的时候会报 image not found 错误。 

图(8)

接下来就可以打包了,我们这里只打包支持真机的framework

图(9)

选中device 执行cmd+b build 一下,这时候你会看到工程中product文件夹里面的CLNetStaticFramework.framework 由此前的红色变成了黑色。此时我们构建的framework 已经ok 了。

第三步,也是比较重要的一步,如何使用刚才打好的framework。

新建一个测试工程ABSDKDemo,该工程同framework工程一样,用pod来管理依赖,在podfile里面添加AFNetworking的依赖。将打包好的framework导入到测试工程中,并在viewcontroller里面引用CLNetAPI.h,配置好以后看起来是这个样子的:

图(10)

此时我们运行工程,并点击屏幕,查看Xcode 控制台打印的日志看是否调用了我们打包再framework里面的网络请求。

图(11)

结果如上图,和我们预期的一样,果然成功的调用了framework里面封进去的网络请求,到这里,如何打包一个依赖AFNetworking的静态framework 已经聊完了。欢迎大家勘误。

本文demo源码请看下一篇:

下一篇,将探讨如何打包一个依赖第三方库(如支付宝framwork)的framework,欢迎大家一起探讨。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容