iOS-静态库(2)

原创 2016年05月31日 23:32:49

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

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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS SDL2静态库的编译

最近接触到关于ffmpeg的项目,包含SDL2(Simple DirectMedia Layer)的使用

Mac上用于Cocos2dx的Poco静态库编译(支持Android和IOS)

最近参与一个Cocos2dx游戏开发项目,利用Cocos2dx的跨平台特性,一次开发同时支持Android和IOS两大移动平台。项目中用到了Poco这个优秀的C++库,IOS开发中可以直接使用Poco...

iOS静态库2

IOS中静态库的方式有*.a或*.framework。个人感觉不论是.a还是.framework其实无外于对源码进行隐藏的一种表现方式。 许多时在项目中,往往对于积累沉垫下来很少改动的代码(高内...

iOS SDL2静态库的编译

原址:http://blog.csdn.net/jijiji000111/article/details/50517172 最近接触到关于ffmpeg的项目,包含SDL2(Simple ...

cocos2d编译安卓调用的动态库,ios调用的静态库

在本次项目中ios和安卓应用通过分别调用cocos2d编译的动态和静态库来实现功能。 1.安卓方面 和之前打包apk类似,有时间从原理上来分析下,先说编译过程中遇到的问题吧,cocos compile...

iOS开发之---静态库的编译以及相关问题的处理

最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework。在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll这样的说法...

IOS 封装静态库Demo

  • 2013年11月18日 14:00
  • 152KB
  • 下载

百度地图api合并静态库(iOS)

  • 2014年07月24日 16:49
  • 7.33MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS-静态库(2)
举报原因:
原因补充:

(最多只允许输入30个字)