1,static Library(.a)
静态库是能分享并隐藏实现代码的一种二进制文件,ios苹果是禁止使用动态库的,静态库的一些图片或者xib资源文件需要另外提供(可以打包成bundle)
2,static Library(.a)文件的生成
如下图创建Static Library工程,
创建工程后,根据你创建工程的名字,自动创建一个.h一个.m文件
libtest.a就是我们需要的静态库文件
设置:将Build setting里面找到Base SDK 选取 Latest iOS;然后找到Linking other Linker Flags 默认是-Objc的,但是我们在写SDK源码的时候可能不只是-Objc有可能会有分类等等。要修改为-all_load,要是不修改会崩溃的。
生成方法,根据你想要的静态库支持的指令集,运行相应的模拟器和真机。比如你想要你的静态库支持armv7,i386,x86_64,arm64四种指令集,就可以运行(Xcode9.2)模拟器iPhone5s(i386),iPhone 8p(x86_64),而armv7和arm64需要真机,以及设置Valid Architectures和Architectures 的交集详情可以查看Apple指令集及xcode相关设置
3,static Library(.a)文件的合并
用上述方式得到数个.a文件后,合并成一个的支持所有想要指令集的.a
通过终端合并,lipo -create 静态库路径1 静态库2 -output 静态库路径3 ,合并完的静态库3的大小=静态库1+静态库2
4,bundle资源文件打包
bundle也是类似static library一样,创建一个bundle的工程,在macOS中选bundle,
然后在Build setting里面找到Base SDK 选取 Latest iOS,把你想要配套提供给.a静态库的资源文件导入,运行就可以生成,static library+bundle这样一个完整的sdk就可以做出来。
记录积累!!!
网友评论