ios打包.a和.framework

静态库

1.库的分类:1开源库,可以看见源代码.m文件2闭源库
2.静态库存在形式:1.a/.framework
3.动态库的存在形式:1.dylib/.framework
4,静态库和动态库的区别:
-1.静态库在连接时,会被完整的复制到可执行文件中,被多次使用就有多分拷贝
-2.动态库不会复制,只有一份,程序运行时动态加载到内存,系统只加载一次,多个程序公用.节省内存
-3.动态库不允许上架,但是wwdc2014上苹果开放动态加载dylib的接口,开放了动态库挂在(插件式开发)
-4.将MRC项目打包成静态库,可以在ARC环境下直接使用,不需要转换

静态库的制作

1.创建项目时,直接选择静态库
ios打包.a和.framework_第1张图片
Snip20160815_4.png
2.创建文件,将.h文件暴露出来
ios打包.a和.framework_第2张图片
Snip20160815_5.png
3.不同cpu环境下,对应不同的静态库架构
    -模拟器:4s-5 :i386/ 5s-6splus :x86_64
    -真机:3s-4s:armv7/ 5-5c:armv7s/ 5s-6splus:arm64
4.获取静态库支持的架构信息
-1.打开终端,lipo -info .a文件路径,可以获取静态库对应的支持架构
-2.支持多个架构
ios打包.a和.framework_第3张图片
Snip20160815_6.png
5.支持真机架构
-1.将运行的模拟器改成真机站位,编译,生成可以运行在真机架构下的静态库
6.Release版本和Debug版本
-1.调试版本直接通过编译来获取Debug版本的静态库
-2.Debug模式下,有调试信息,Release模式下,没有调试信息
-3.Release版本,直接调整到Release模式下编译
7.静态库的合并
-1.`cd`文件
-2.`lipo -create Release/Debug版本下的支持模拟器的.a静态库路径 Release/Debug版本下支持真机调试下的.a文件路径 -output 文件名.a`
-3.生成一个支持Release/Debug版本下支持模拟器和真机的.a静态库

.framework(静态和动态)的制作和使用

1.暴露头文件
ios打包.a和.framework_第4张图片
Snip20160815_7.png
2.监测.frameword的支持的架构lipo info framework文件路径
3.支持多个架构,和.a静态库文件支持多个架构一致
4.合并模拟器和真机版本下的.framework和合并.a静态库一致lipo -create 路径 路径 -output 文件名
-注意,文件路径不是指.framework文件的路径,而是.framework包中生成的文件路径
ios打包.a和.framework_第5张图片
Snip20160815_21.png
5.使用.framework报错image not found,因为该.framwork不能确定是静态库还是动态库
6.解决:
1..framework(动态库的使用)
ios打包.a和.framework_第6张图片
Snip20160815_8.png
2..framework(静态库的使用)
ios打包.a和.framework_第7张图片
Snip20160815_10.png

静态库的制作与调试

1.创建新工程,在工程中创建静态库并添加
ios打包.a和.framework_第8张图片
Snip20160815_16.png
2.在工程中导入静态库暴露的头文件
3.编译直接报错
ios打包.a和.framework_第9张图片
Snip20160815_17.png
4.报错原因需要添加依赖工程
ios打包.a和.framework_第10张图片
Snip20160815_18.png
5.连接静态库,对添加的静态库进行编译
ios打包.a和.framework_第11张图片
Snip20160815_20.png

barryhippo的原创

你可能感兴趣的:(ios打包.a和.framework)