无论我们是在开发中还是在业务对接中,制作Framework都是经常遇到的,那我们如何对其进行制作哪,首先我们先来看下动态库与静态库的区别,我们了解的越多,那么我们对于自己做的事情也就越得心应手。
动态库与静态库的区别
静态库:连接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝;
动态库:连接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存
系统的.framework是动态库,我们自己建立的.framework是静态库
.a与.framework的区别
a. .a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件
b. .a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用
c. .a + .h + sourceFile = .framework
打包Framework流程
1.创建Framework工程
File->Project->Framework(选择iOS, 以及选择Framework & Library)
命名工程是XMFramework
2.添加要集成打包的类.h/.m/.a/Bundle/Framework等
3.配置工程的打包环境
a.将Mach-O Type设为Static Library, framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库;
选中XMFramework->Build Settings->Mach-O Type(搜索mach)
b.Build Active Architecture Only 修改为NO, 否则生成的静态库就只支持当前设备的架构;
c.iOS Deployment Target, 静态库需要支持的最低版本号要小于等于主项目的版本号
d.Valid Architecture 支持的iOS的CPU架构
- 工程配置
a. 在frameworks下的Build Phases下的headers里面会有三个目录
Public, Private, Project
将要给用户暴露出来的头文件加入到Public中,将要隐藏的头文件 拖入Private或是Project下
这样隐藏的头文件将无法被引用了
b.把允许别人应用的头文件引入到第一步创建项目是自动生成的 XMFramewok.h中,XMFramewok.h文件是整个包对外提供的入口头 文件
5.合并打包
- 分别在模拟器和真机设备下编译,生成两个XMFramewok.framework文件,然后将两个文件使用命令合成一个
lipo -create + 上面两个文件的路径+ -output + 合成后文件的输出路径
- 将上部生成的framework放入到真机编译的包中,就是将其替换掉,就得到了最终的是支持模拟器又支持真机的framework了