iOS静态库之xxx.a文件

简介: 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、静态库和动态库的使用区别

静态库: 链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。在这里插入图片描述

20190511204439909.jpg


动态库: 链接时不复制,程序运行时由系统动态加载到内存,供程序调用。而且系统只加载一次,多个程序共用,节省内存。图片描述:

20190511204511776.jpg

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)


20190511181815501.jpg


20190511181824483.jpg


2019051118183768.jpg



2、在里面实现几个方法类,在这里随意实现了一个继承自NSObject的类,两个UI控件


20190511190506318.jpg



2019051119051592.jpg

20190511190547577.jpg


3、接下来选择需要暴露出来的头文件,右键移动到Public下。

2019051119094723.jpg


4、配置下工程文件


20190511201017785.jpg



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



20190511191956661.jpg

20190511201359572.jpg



6、然后可以合并两个.a文件,

打开终端输入


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

20190511201950254.jpg


按回车,自动生成文件。


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

20190511202341727.jpg


取应用

20190511202943877.jpg


扩展:

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

参考链接:

1、iOS打包静态库(完整篇


相关文章
|
7月前
|
移动开发 前端开发 数据安全/隐私保护
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
209 0
|
7月前
|
iOS开发
iOS使用.framework类型的静态库
iOS使用.framework类型的静态库
48 1
|
7月前
|
开发工具 iOS开发
iOS制作.framework静态库
iOS制作.framework静态库
71 1
|
7月前
|
iOS开发 Perl
iOS使用.a类型的静态库
iOS使用.a类型的静态库
55 1
|
7月前
|
开发工具 iOS开发
iOS制作.a类型的静态库
iOS制作.a类型的静态库
42 1
|
7月前
|
开发工具 iOS开发 Perl
iOS使用SDK静态库
iOS使用SDK静态库
58 0
|
7月前
|
iOS开发 开发者
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题
【教程】uni-app iOS 打包解决 profile 文件与私钥证书不匹配问题
|
7月前
|
移动开发 监控 小程序
mPaaS常见问题之uniapp ios端云打包的配置config文件如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
191 0
|
开发工具 iOS开发 Perl
iOS开发 - undefined symbols for architecture x86_64,大多数都是缺少静态库,缺少静态库分下面几种
iOS开发 - undefined symbols for architecture x86_64,大多数都是缺少静态库,缺少静态库分下面几种
186 0
iOS开发 - undefined symbols for architecture x86_64,大多数都是缺少静态库,缺少静态库分下面几种