关闭

iOS-静态库(2)

227人阅读 评论(0) 收藏 举报
分类:

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

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 新静态库名(名字要和前面的一样)

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场