文档中使用的Xcode版本:Xcode8
考虑到安全和复用,如果一些代码已稳定,可以封装成库文件。
闭源库 主要分为:静态库、动态库两种
静态库: .a 和 .framework 后缀
动态库: .dylib 和 .framework
静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。
一、静态库
1.新建工程
2. 自动生成的类和 还没生成的库文件(红色)
3. 完事之后 选择要公开的头文件
4. 适配所以机型
6. 合并真机和模拟器库文件:(网上有用脚本执行的,但貌似是Xcode6,没试过)
桌面新建一文件夹M,再在文件夹中建两个文件夹M1,M2,将真机和模拟器的.a文件,分别粘贴到对应文件夹下。
cd到M 执行 lipo -info M1/库名 M2/库名 -output 库名 新生成的库真机和模拟器都可以用了
二、动态库
1.新建
3.选择公开的头文件,注意拖到 pulic下
4. 适配机型同 静态库一样
5. 合并 (要合并的是包名命名的白板文件 我的显示是可执行文件)
6. 合并的dylib 替换上一步 任意一个 ,最后要用的是.framework结尾的动态库
注:
1 . iOS设备的CPU架构
a. 模拟器:4s-5: i386 5s-7Plus: x86_64
b. 真机: armv7: iPhone 3GS ,4 ,4s ,iPad ,iPad2
armv7s: iPhone5 ,5c ,
armv64: iPhone 5s , 6 ,6Plus ,6s ,6s Plus ,iPad Air ,Air2 , mini2 ,mini3
2. 查看库支持的机型(CPU架构)
cd 到所在目录 lipo -info 库名
3. 把用到的.h 都import动态库的主头文件中 如要用到StaticLibray这个类 #import<dylib/StaticLibry.h>
4. 使用中报Image not found
如下把库添加进去
5. 使用动态库AppStore会拒,但发现包括苹果自身的framwork貌似也是动态库
应该是和这个选项有关,默认是Executable,可选值有动态和静态等,猜测动态库会转为静态库,没发AppStore试过。。。