iOS静态库的制作
背景知识
- 库可以分为静态库和动态库,通常使用制作的都是静态库,使用自己制作的动态库是不能上线的。
- 静态库每次使用都会加载一次,比较耗资源。动态库一般是系统公用的,只需要加载一次,也就是多个App使用的是同一个动态库。
- 静态库是由.a和.frameWork组成。动态库是由 .dylib和.frameWork组成。
- 自己制作的.frameWork 是静态库,系统使用的.framework是动态库。
- .a是一个二进制文件,是不能直接使用的。需要添加.h文件才能使用。
- .a + .h +sourcefile = .framework
制作流程
.a制作
-
创建Cocoa Touch Static Library
-
命名SDK的名称
-
删除.m文件
-
添加SDK的真正功能的类文件
-
编辑SDK头文件
-
设置编译所有架构 Build settings->Build Active Architecture Only --> NO
-
编译前切换成release模式
-
分别在模拟机和真机上build一次,获得.a文件
-
将真机获得的.a文件和模拟机获得的.a文件合并成一个新的.a文件
lipo -create
模拟器.a文件目录
真机.a文件目录
-output 输出目录/文件
-
将合并好的.a 文件和所有相关.h文件都放在同一个文件夹中,此时该文件夹就是一个可以使用的静态库了
-
测试,创建一个独立项目,将该文件夹导入项目中使用。
.framework制作
-
创建Cocoa Touch framework
-
添加SDK的真正功能的类文件
-
编辑SDK头文件
-
配置header
-
配置库连接类型
-
设置编译所有架构 Build settings->Build Active Architecture Only --> NO
-
编译前切换成release模式
-
分别在模拟机和真机的状态下build一下得到两个MyFramework.framework文件,每个MyFramework.framework文件里面包含MyFramework文件
-
合并两个MyFramework文件
lipo -create
模拟机的MyFramework.framework下的MyFramework路径
真机的MyFramework.framework下的MyFramework路径
-output 输出目录/文件
- 将合并生成的MyFramework 替换掉真机MyFramework.framework下的MyFramework。此时真机下的MyFramework.framework就是制作完成了。
- 测试,创建一个独立的项目,将MyFramework.framework导入到项目中。添加Header search Path。