一、静态库打包的完整正确步骤
1、确定做的是静态库。
- .a 的肯定是静态库
- .framework的需要设置链接类型:target -> Build Settings-> 搜索 Mach-o Type ; 改为静态库
2、确定支持模拟器或者真机中的所有构架。
Build Settings -> Build Active -> NO(表示不止编译活跃的架构, 让所有的架构都编译)
3、提供的静态库应该是release版本。
项目 -> Edit Scheme -> Run -> Release/Debug 分别进行编译
二、.a静态库和.framework静态库的区别?
1> .a是一个纯二进制文件,.a文件不能直接使用,至少要有.h文件的配合
2> .framework文件可以直接使用,.framework中除了有二进制文件之外还有资源文件
3> .a + .h + sourceFile = .framework
4> 建议使用.framework。
三、静态库开发中的常见问题
问题1: 有些第三方库会使用到一些图片素材,例如公司的logo等。
- 问题描述:由于Xcode默认在编译时会把所有的素材文件导入到mainBundle中,可能与使用静态库的程序冲突。
- 解决方案:在静态库中如果要使用图片素材,会利用bundle的手段。(应该是在宿主工程操作,而不是在库工程中,而且以下4点针对的是.a库,framwork怎么使用图片还不知道呢)
- 1> 建立.bundle文件夹,拖入工程,并且向其中添加图片
- 2> 创建一个类方法,返回图片
- 3> 编译
- 4> 调用方如果需要使用,需要导入 .h + .a + XXX.bundle
问题2:如果用户需要导入的头文件过多怎么加?
- 建议使用一个主头文件包含其他头文件, 让用户只导入一个主头文件
问题3: 静态库程序怎样测试?
- 问题描述:静态库本身就是一个小项目, 实现某些功能, 但是这些功能在开发中也需要测试. 而测试代码又不能作为静态库的一部分
- 解决方案:创建复合项目
四、复合工程
可以边写代码,边测试。
Snip20170713_38.png Snip20170713_37.png
五、小技巧
关于framework静态库导入头文件到宿主工程的问题。
1.使用静态库framework,导入里面的头文件样式是:<framework/Tool.h>
2.但平时我们是面对源码开发,导入样式是:"Tool.h"
3.如果把Tool做成组件,导入样式变成<framework/Tool.h>,那么改动就大了
4.为了解决这个问题,把头文件tool.h 拖出来,如下图。
网友评论