一, 动态库与静态库
动态库: 动态库在程序编译时并不会被连接到目标代码中, 而是咋爱程序运行时才被载入, 因此在程序运行时还需要动态库存在.
.dylib 和. framework
.framework 可静可动, 取决于配置
静态库: 静态库在程序编译时会被连接到目标代码中, 程序运行时将不再需要该静态库.
.a 和. framework
二,.a 静态库的制作
1, 新建工程, 选择 Static Library
新建工程
2,Build Active Architecture Only 设置为 NO(不同机型的架构不一样, 设置为 NO 适配不同机型)
Build Active Architecture Only 设置
3, 设置最低支持版本和暴露头文件
设置最低支持版本
设置暴露头文件
4, 运行代码生成对应库 (模拟器和真机下分别在 debug 和 release 环境下运行代码, 总共是 4 次, 右键点击上图中的红框内库文件, Show in Finder 会发现 4 个人文件, 对应刚才 4 次运行结果)
5, 合并库文件
说明: 最终生成了两个合并好的库文件, debug 和 release. 使用时根据当前工程配置情况选用对应库文件.
生成 debug 库文件
终端: lipo -create debug 下模拟器库文件路径 debug 模式下真机库文件路径 -output 合并后库文件路径 + 合并后库文件名. a
生成 release 库文件
终端: lipo -create release 下模拟器库文件路径 release 模式下真机库文件路径 -output 合并后库文件路径 + 合并后库文件名. a
6, 验证
注:.a 静态库文件没有头文件, 需要自己手动添加, 找到刚才生成的四个文件, 任选一个, 拷贝 include 文件夹, 同合并好的库文件一起添加到工程中才能正常使用.
验证
三,.framework 静态库的制作
1, 新建 framework 工程
新建 framework 工程
2,Build Active Architecture Only 设置为 NO(不同机型的架构不一样, 设置为 NO 适配不同机型)
Build Active Architecture Only 设置
3, 暴露头文件
注意: framework 工程新建就有一个. h 文件, 其实就是一个主头文件. 我们在主头文件中导入需要导入的头文件, 后面我们在使用这个静态库的时候只需要导入这个主头文件即可. 就像我们使用很多第三方开源框架一样.
暴露头文件
4, 设置为静态库 (默认是动态库)
设置静态库
5, 合并库文件, 做法和. a 静态库一样.
注意: output 文件后缀为. lipo; 生成的. lipo 文件去掉后缀名, 改为与合并前文件一样的名称, 拖入开始运行生成的一个文件中, 替换原来的.
需要合并的文件
6, 验证
验证
参考的地址已忘记, 多谢大神
来源: http://www.jianshu.com/p/a952dacfda3a