一、创建静态库和测试静态库
1.framework工程的建立
1.1 找到framework
![]()
找到framework
1.2 创建工程
![]()
创建工程
1.3 进入工程
![]()
进入工程
1.4 创建多种类,按照要求将类的.h头文件,导入到指定的头文件中,如:HMFramework.h
![]()
将类头文件导入指定头文件中
1.5在类中创建方法,并实现。模拟器先编译一次,Generic iOS Device编译一次,右键选择show in finder 就会找到 .framework文件,发现其中缺少其他类的头文件,需要导入。否则,外界无法调取framework中的方法。如下图:
![]()
找到 .framework文件![]()
缺少其他类的头文件
1.6添加其他类的 .h头文件,具体操作如下图。
![]()
添加其他类的 .h头文件
1.7手动添加完毕后,需要真机、模拟器各编译一次,其他类的头文件,才会导入到Headers中,如下图:
![]()
真机、模拟器各编译一次
2.framework的测试静态库
2.1.创建工程,导入模拟器的framework包,并实现方法。
![]()
创建测试工程
2.2模拟器运行时会出现两种错误。一种情况是,不在当前架构运行,会因为找不到某个框架而报错。如下图
![]()
没有这种架构
另一种情况是在当前架构(创建库是运行的哪个模拟器就是哪个架构)运行时,会出现下图2的错误。原因是,framework默认是动态库。详细情况,
![]()
framework默认是动态库
2.3解决方法
2.3.1 选择工程找到Embedded Binaries
![]()
选择工程找到Embedded Binaries
2.3.2 点击+号,添加类库
![]()
点击+号,添加类库
2.3.3 重复类库的删选
![]()
重复类库的删选
2.3.4 com+R运行,问题完美解决。
![]()
Snip20160531_20.png
2. 小点注意
创建时:
- 1.创建是只有一个.h文件
- 2.实现时,导入头文件用尖括号<类库名+头文件名>
- 3.默认不会导出新增的头文件:项目-->Build Phases-->Headers-->Project头文件拖拽到Public中,然后编译即可。
集成时:
- 1.集成framework(默认是动态库),无法直接运行,需要在项目-->Generl-->Embedded Binaries-->添加库文件(添加后这个库,会被直接转化成二进制文件,二进制是最底层的语言,就无关动态静态了)
- 2.如果,是动态库,必须添加此项才能运行。
- 3.一般的SDK中,都是静态库。
- 4.没有生成真机架构包,是不能在真机上跑的。
二、将Framework动态库转换为静态库
非常简单,请看下图:

总结:在类库工程中,项目-->Build Setting -->搜索Mach-o Type(编译类型) -->改成Static Library
- 这时候,拖入到其他项目中不会出错,建议以后用这种方式。
二、合并Framework
1.找到Edit Scheme
![]()
找到Edit Scheme
- 改成Release版本
![]()
改成Release版本
3.真机,模拟器各运行一次
![]()
真机,模拟器各运行一次- 手动添加架构--添加完毕后真机再运行一次
![]()
手动添加架构
5.进行终端的查询
![]()
终端查询
6.架构合并
![]()
架构合并
7.合并后的查询
![]()
合并后的查询
8.架构的替换,完成类库集成
![]()
架构的替换
简单的总结
- 步骤1:合成模拟器的多个架构(这步骤对真机无影响)项目改成Realese模式
- 步骤2:(可选)让真机加入7s架构
需要手动在Architectures中,添加3个架构,在此编译。 - 步骤3:合并真机和模拟器
lipo -create 静态库1 静态库2 -output 新静态库名(名字要和前面的一样)
图片截取标注的有点乱,大致知识点全面,请尽量。如对你有用,或是有什莫好的建议的话,共同学习,互相交流。