在iOS的开发过程中,我们常常用到第三方的库。像QQ、百度地图、广告等。下面将详细介绍如何生成静态库。
一、静态库的优点:
1.让自己的源码不被直接暴漏。
2.需要使用时,仅仅拷贝相应的.h文件和.a文件就好,不用在将源码一一拷贝。方便。
3.显得也比源码拷贝高端、大气一些。
二、建立静态库项目
生成如下的项目,即可在.h和.m文件编写相关代码。
三、生成静态库
生成第三方静态库时,也有两种模式可选,Debug和Release模式,默认是Debug模式,为了考虑上架苹果AppStore,这里我们修改为Release模式,修改方法如下所示:设置完毕后,修改运行设备,分别在测试机和真机运行一次。会生成.a文件,.a文件在项目的缓存中,目录如下。
此时,则生成了可以在真机和测试机上运行的第三方库。
四、合并静态库
将生成的第三方库,引入当前项目时,发现真机的第三方库只能在第三方库运行,测试机的第三方库只能在测试机上运行,为便于开发,需要合成能在所有平台上运行的第三方库。
打开终端运行下列操作:
// 进入文件夹
yangjundeMini:Products yangjun$ cd /Users/yangjun/Desktop/Products/
// 查看编译的可执行的CPU环境
yangjundeMini:Products yangjun$ lipo -info Release-iphoneos/libYJURLSessionTask.a
Architectures in the fat file: Release-iphoneos/libYJURLSessionTask.a are: armv7 arm64
yangjundeMini:Products yangjun$ lipo -info Release-iphonesimulator/libYJURLSessionTask.a
Architectures in the fat file: Release-iphonesimulator/libYJURLSessionTask.a are: i386 x86_64
// 合并
yangjundeMini:Products yangjun$ lipo -create Release-iphoneos/libYJURLSessionTask.a Release-iphonesimulator/libYJURLSessionTask.a -output libYJURLSessionTask.a
// 查看合并后的静态库支持的CPU环境
yangjundeMini:Products yangjun$ lipo -info libYJURLSessionTask.a
Architectures in the fat file: libYJURLSessionTask.a are: armv7 i386 x86_64 arm64
这样,就可以合并一个通用版本的静态库。唯一不爽的,就是体积要大一些。
并且新生成的静态库支持armv7、i386、x86_64和arm64至于为什么不用支持armv7s,因为:支持armv7s运行的设备只有iPhone 5(你懂的)