接上篇cocoapods打包静态库(静态库引用.a,.Framework, .bundle文件,本文讲解再引入AFNetworking等的情况。上篇文章中,我们讲的是SDK中引入了其它三方库,这些三方库是直接拖入代码管理的。而本文讲的AFnetworking这些库,并不需要拖入代码。下面讲解步骤:
1、修改Podfile,引入你需要的三方库,最好指定版本,以免每次重新pod install的时候,三方库更新,影响代码。
2、修改xxx.podsepc文件
3、命令行进入到Example目录下,执行pod install,会发现在工程目录的pods目录下出现你需要的那个库:
4、安装好之后,就可以在代码中使用AFnetworking了,当然这里是SDK的文件使(也就是Classes目录下的文件使用)。
5、开发完成后,再次进入Example目录下,pod install,然后选中Example工程,就可以跑起来了。
6、打包和前面的一样,不再赘述,这里要说的一点是,当在其它的app工程中使用打包出来的静态.framework时,并不需要再次导入AFNetworking,因为打包出来的库中已经包含了AFNetworking(AFNetworking是静态库,sdk中已经包含了它的二进制代码),这一点与上篇的活体检测sdk也不同。
如果引用该sdk的其它工程里也需要使用AFNetworking这个三方库,这个时候,其它工程也需要再次引入AFNetworking库,那么引用两次相同的库,就会冲突,如何解决这个冲突呢?
1)最笨的办法就是,对sdk使用的所有三方库的头文件和宏定义,修改文件名,这个是不得已的办法
2)cocopods-package这个插件,很好的解决上面的问题,这个插件 在打包的时候,类库里的头文件会被重命名为项目+原类库名的前缀。这样就很好的解决了相同类库冲突的问题
3)使用动态库,这里的使用动态库,最好是AFNetworking这个三方库做成动态库,这样sdk工程中就不会包含三方库的代码;而使用sdk的工程,只需要引入一个动态库就好了,这种方法,要重新编译AFNetworking代码生成动态库,对于客户(也就是使用我们sdk的人)来说,太繁琐了;还有一种理解是,我们sdk里边使用的AFNetworking还是静态库;但是我们自己的sdk最后打包成动态库。
以上分析纯属个人理解,记录下来以后自己翻看的,可能存在不对的地方!