静态库

2016-03-18  本文已影响96人  闲得一B

一、什么是库?

:就是程序代码的集合,是共享程序代码的一种方式


库的分类开源库闭源库


  • 开源库:源代码公开,能看到具体代码实现 比如:AFNetworking、SDWebImage

二、闭源库

闭源库: 静态库动态库


静态库

  • 以 .a文件 .framework文件形式存在

动态库


静态库动态库的区别:


三、创建静态库

1、创建项目时,直接创建静态库.a或者.framework

创建 .a或者 .frameWork静态库

2、选择.a静态库:
添加需要暴露的头文件,此时还没有真正生成静态库


制作.a静态库步骤.png

3、选择模拟器或者真机编译生成静态库
command+B 编译生成 .a静态库 (libabc.a变色)


真机、模拟器.png

4、查看 .a静态库 、.framework静态库


查看.a静态库、.framework静态库.png

5、模拟器下的静态库和真机下的静态库不能共用:

模拟器和真机CUP架构不一样,并且各个模拟器型号之间架构也不一样


  • 静态库文件架构:
    模拟器:
    iPhone 4s~5: i386
    iPhone 5S~6sPlus: x86_64
    真机:
    iPhone 3gs~4s:armv7
    iPhone 5~5c: armv7s(armv7兼容armv7s)
    iPhone5s~6sPlus: arm64
    如何查看静态库支持的架构:
    命令行窗口中(终端):lipo -info 库文件
    如何一次编译多个架构的.a静态库(能在多种架构下运行):表示让所有的框架都编译
    编译多个架构的.a静态库.png

  • 静态库文件的版本:
    调试版本: 真机Debug版本 和 模拟器Debug版本
    特点:
    1、调试版本会包含完整的符合信息
    2、方便调试
    3、不会对代码进行优化
    发布版本:真机Release版本 和 模拟器Release版本
    特点:
    1、发布版本不会包含完整的符合信息
    2、会对代码进行优化
    3、版本大小会比调试版本略小
    4、发布版本比调试版本执行速度’稍微‘有提升

如何生存不同版本:
项目->Edit Scheme-> Run -> Release/Debug 分别进行编译


静态库编译版本.png
静态库编译版本+.png

6、如何生成一个静态库能在模拟器上和真机上都能运行?(因为支持框架不同,所以没法同时运行)

  • 首先需要生成真机版本模拟器版本
  • 将静态库合并(合并.a)
    合并步骤:
    终端命令: lipo -create 第一个.a库文件路径 第二个.a库文件路径 -output 合并.a库文件名
    合并优点:开发过程中可以在真机和模拟器上调试
    合并缺点:合并后库文件太大

7、制作.framework库文件

设置编译多个架构
![编译多个类型].png](https://img.haomeiwen.com/i1170347/f644dab6cc42c83f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
但是默认是动态库,需要设置连接类型 target -> BuildSetting->搜索Mach-o Type:改为静态库

framework静态库连接类型.png

8、.a静态库和.framework静态库的区别?

  • .a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件

四、使用

注意:首先查看使用的库文件支持的库文件架构

上一篇下一篇

猜你喜欢

热点阅读