iOS-静态库(2)

一、创建静态库和测试静态库

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动态库转换为静态库

非常简单,请看下图:


Framework动态库转换为静态库

总结:在类库工程中,项目-->Build Setting -->搜索Mach-o Type(编译类型) -->改成Static Library

  • 这时候,拖入到其他项目中不会出错,建议以后用这种方式。

二、合并Framework

1.找到Edit Scheme


找到Edit Scheme
  1. 改成Release版本


    改成Release版本

    3.真机,模拟器各运行一次


    真机,模拟器各运行一次
  2. 手动添加架构--添加完毕后真机再运行一次


    手动添加架构

    5.进行终端的查询


    终端查询

    6.架构合并
    架构合并

    7.合并后的查询


    合并后的查询

    8.架构的替换,完成类库集成
    架构的替换
简单的总结
  • 步骤1:合成模拟器的多个架构(这步骤对真机无影响)项目改成Realese模式

  • 步骤2:(可选)让真机加入7s架构
    需要手动在Architectures中,添加3个架构,在此编译。

  • 步骤3:合并真机和模拟器
    lipo -create 静态库1 静态库2 -output 新静态库名(名字要和前面的一样)

图片截取标注的有点乱,大致知识点全面,请尽量。如对你有用,或是有什莫好的建议的话,共同学习,互相交流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容