iOS静态库之xxx.a文件

1、库的理解

1.1、 什么是库?

所谓库就是程序代码的集合,是共享程序代码的一种方式。

1.2、 库的分类

根据程序代码的开源情况,库可以分为两类
开源库:
源代码是公开的,你可以看到具体实现。比如GitHub上比较出名的第三方框架AFNetworking、SDWebImage。
闭源库:
不公开源代码,只公开调用的接口,看不到具体的实现,是一个编译后的二进制文件。这种常见于一些公司的SDK包,比如高德地图SDK、环信即时通讯SDK等等。而闭源库又分为两类:静态库和动态库。本篇重点要讲的便是其中的静态库。

1.3、静态库和动态库的存在形式

静态库:
以".a"或者“.framework”为文件后缀名。
动态库
以".dylib"或者“.framework”为文件后缀名(Xcode7 之后 .tbd 代替了 .dylib)。

1.4、静态库和动态库的使用区别

静态库: 链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。在这里插入图片描述
静态库被程序使用时
动态库: 链接时不复制,程序运行时由系统动态加载到内存,供程序调用。而且系统只加载一次,多个程序共用,节省内存。图片描述:
动态库被程序使用时

1.5、iOS 设备的CPU架构

模拟器:
4s-5: i386
5s-iPhone X(包活iPhone SE): x86_64

真机(iOS设备):
armv6: iPhone、iPhone 2、iPhone 3G、iPod Touch(第一代)、iPod Touch(第二代)
armv7: iPhone 3Gs、iPhone 4、iPhone 4s、iPad、iPad 2
armv7s: iPhone 5、iPhone 5c (静态库只要支持了armv7,就可以在armv7s的架构上运行)
arm64: iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPad Air、iPad Air2、iPad mini2、iPad mini3
注:iPhone 7、iPhone 7 Plus、iPhone 8、iPhone 8 Plus、iPhone X真机到底是什么架构暂时不得而知,但是模拟器是x86_64。

2、如何打包静态库.a文件

1.创建一个新的工程项目(Xcode File-New-Project)
123
2、在里面实现几个方法类,在这里随意实现了一个继承自NSObject的类,两个UI控件
45
73、接下来选择需要暴露出来的头文件,右键移动到Public下。
8
4、配置下工程文件

9
5、配置完之后可以选择模拟器&真机各运行一遍,在运行后我们找到下面红色箭头生成的.a文件(变为黑色)右键选择show in finder,就可以分别找到模拟器和真机打包的SDK路径了。这里先将任意一个usr里local里include里的xxx.h复制到桌面,一会有用
10106、然后可以合并两个.a文件,
打开终端输入

lipo -create /虚拟机路径/Debug-iphonesimulator/libRTTestA.a /真机路径/Debug-iphoneos/libRTTestA.a -output /Users/生成文件路径/Desktop/111/RTTestA.a

11按回车,自动生成文件。

7、应用。把生成的RTTestA.a文件和刚才拖出来到桌的三个头文件导入用新创建的应用当中,即可调取应用12
13扩展:

  • 打包时,设置支持所有真机机型/模拟机机型架构: Build Active Architecture Only 设为NO。

参考链接:
1、iOS打包静态库(完整篇)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瓜子三百克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值