iOS 之 制作第三方SDK静态库概述

2017-01-19  本文已影响70人  偏偏就是祢

概述

1、 静态库和动态库

注意:由于我们自制的动态库上传AppStore不能审核通过,故我们用静态库来制作第三方SDK。

2、.a 静态库 和 .framework静态库的异同

小结:通过上面两种方式的对比,我的建议是使用 .framework静态库的方式来制作第三方SDK。

3、静态库的使用场景

4、制作静态库的一般步骤

创建.framework或者.a(不包含第三方静态库)

1、 新建静态库工程。


屏幕快照 2017-01-19 下午2.08.16.png

2、导入已经创建好文件


屏幕快照 2017-01-19 下午2.19.06.png

3、暴露头文件

屏幕快照 2017-01-19 下午2.19.49.png 屏幕快照 2017-01-19 下午2.20.28.png 屏幕快照 2017-01-19 下午2.24.31.png 屏幕快照 2017-01-19 下午2.21.47.png

4、修改一些工程配置

屏幕快照 2017-01-19 下午2.25.07.png 屏幕快照 2017-01-19 下午2.28.09.png

5、分别在真机和模拟器下编译一次

编译前的状态 编译后的状态

注意:
模拟器:iPhone4s~5 : i386 iPhone5s~6plus : x86_64
真机:iPhone3gs~4s : armv7 iPhone5~5c : armv7s iPhone5s~6plus : arm64
如果第五步这里,设置为YES,那么编译出来的.a静态库就只包含当前设备的指令集。
举个例子:如果我们选择iPhone 5模拟器【Command+B】编译,则编译出来的.a静态库只能用iPhone4s5模拟器跑程序,用iPhone5s6plus,则会报找不到x86_64的libFMDB库。
设置为NO,则会把所有指令集的都打包合并。

6、编译后生成的文件


编译后生成的文件 执行的合成一个.a命令

注意: 上图在终端执行的命令是:
lipo -create 第一个.a文件的绝对路径 第二个.a文件的绝对路径 -output 最终的.a文件路径。

7、 如果创建的framework中使用了category类,则在使用framework的项目配置中【Other Linker Flags】需要添加参数【-ObjC]或者【-all_load】。

8、如果采用.framework的方式,基本操作和.a差不多,主要的不同之处在下图所示之处


不同之处

创建.framework或者.a(包含第三方静态库)

相对不包含第三方静态库的区别:

上一篇 下一篇

猜你喜欢

热点阅读