iOS打包之静态库

引言

刚开始接触打包静态库的时候,没有思路,开发中接触到过不少库,一直都是集成调用,并没有深究。现在研究过一段时间,在这里总结一下,有所记录亦有迹可循。

一、库的介绍

  • 库是程序代码的一个集合。
  • 根据程序的开源情况可以分为开源库和闭源库。开源库的源代码是公开的,比如AFNetworking。闭源库不公开源代码,只留有接口,也就是一般公司会提供的SDK。
  • 库还有静态库和动态库。静态库一般是以“.a” 或 “.framework”为结尾的;动态库是以“. dylib”或“.framework”为结尾的。
  • 当然也避免不了接触iOS 设备的CPU架构。在这里做个小小的总结吧!需要注意的是在开发中会遇到导入静态库报错的情况,可以从支持真机还是模拟器的静态库以及设备的CPU架构情况进行分析,看是否匹配。
    模拟器:
    4s-5: i386
    5s-6s Plus: x86_64
    真机(iOS设备):
    armv6: iPhone、iPhone 2、iPhone 3G、iPod Touch(第一代)、iPod Touch(第二代)
    armv7: iPhone 3Gs、iPhone 4、iPhone 4s、iPad、iPad 2
    armv7s: iPhone 5、iPhone 5c (静态库只要支持了armv7,就可以在armv7s的架构上运行)
    arm64(注:无armv64): iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPad Air、iPad Air2、iPad mini2、iPad mini3

注: 开发中用到了静态库,所以目前对静态库做了研究,之后遇到动态库的情况会继续更新。

二、静态库的建立

  1. 新建工程。
iOS打包之静态库_第1张图片
新建一个工程.png

2.建立一个静态库。

iOS打包之静态库_第2张图片
选择建立静态库.png

3.在静态库里写方法,生成静态库。一开始新建的静态库.a文件是红色的,运行之后.a文件变成黑色的就表示静态库已经生成,可以右键在show in Finder中查看。如果运行时选择的是模拟器,生成的静态库就对应模拟器可以运行;如果运行时选择的是真机,那么生成的静态库就对应真机可以运行。兼容多种设备运行的话就用到设备的CPU架构了。匹配相对应的架构就可以实现兼容。

iOS打包之静态库_第3张图片
生成静态库.png

4.有的时候会用到同时支持真机和模拟器的静态库,这就需要合并了。

lipo -creat  xxx/iphoneos/xxx.a xxx/iphonesimulator/xxx.a -output xxx/new.a
其中,
xxx/iphoneos/xxx.a 是真机库的路径
xxx/iphonesimulator/xxx.a 是模拟器库的路径
xxx/new.a 是两个合并后生成的新的库的路径

5.在终端查看所生成的静态库支持的架构 。

cd+静态库文件路径  
lipo -info xxx.a

之后就会在终端输出所对应的架构了。

你可能感兴趣的:(iOS打包之静态库)