ios中静态库.a的制作

2017-12-25  本文已影响0人  杭州七木科技

在ios中制作静态库之前,先来了解关于静态库的一些概念。

一、什么是库?
库是共享程序代码的方式,一般分为静态库和动态库。
静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。
二、库的类型
开源库
公开源代码,能看到具体实现
比如 SDWebImage 、 AFNetworking

闭源库
不公开源代码,是经过编译后的二进制文件,看不到具体实现
主要分为:静态库、动态库
三、iOS里静态库形式?
.a和.framework
四、iOS里动态库形式?
.dylib和.framework
五、framework为什么既是静态库又是动态库?
系统的.framework是动态库,我们自己建立的.framework是静态库。
六、a与.framework有什么区别?
.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework。
建议用.framework.
七、为什么要使用静态库?
方便共享代码,便于合理使用。
实现iOS程序的模块化。可以把固定的业务模块化成静态库。
和别人分享你的代码库,但不想让别人看到你代码的实现。
开发第三方sdk的需要。

八、静态库和动态库在使用上的区别。
静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 (下图示)


静态库和动态库的加载区别.png

动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存(下图示)


区别2.png
在实际的编程过程中,通常会把一些公用函数制成函数库,供其它程序使用,一则提搞了代码的复用;二则提搞了核心技术的保密程度。所以在实际的项目开发中,经常会使用到函数库,函数库分为静态库和动态库两种。

和多数人所熟悉的动态语言和静态语言一样,这里的所谓静态和动态是相对编译期和运行期的:静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库;而动态库在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,因为在程序运行期间还需要动态库的存在。

下面介绍下关于.a静态库制作的基本流程
1.创建静态库


创建静态库.png

2.静态库中声明方法并实现(用于静态库使用的测试)


方法声明和使用.png
3.关于静态库的一些参数配置
3.静态库配置.png
4.静态库中需要暴露的头文件
4.文件打包和暴露头文件.png

5.分别使用模拟器和真机编译
编译模式设置为Release模式,原来的库文件由红色变为黑色,说明编译成功。


5.1scheme配置1.png 5.2scheme配置2.png 模拟器编译.png

6.查看打包出来的文件状态
Show Finder查看库文件


查看静态库状态.png

7.合并真机和模拟器库文件

打开终端,进行以下操作
一、在终端输入:lipo -create

二、将release-iphonesimulator下的.a拖进终端,输入一个空格;

三、继续将release-iphoneos 下.a 拖进终端,输入空格;

四、继续输入:-output ,打个空格;

五、输入合并后的.a所要放的文件路径


7.合并文件.png

8.查看静态库状态
一、在终端输入:lipo -info ;

二、将合并后的.a拖进终端 ,回车;
[图片上传中...(8.查看静态库状态.png-db2f76-1513126960067-0)]

至此,关于静态库制作完成。

接下来,介绍如何导入并使用刚刚打包好的静态库。
1.导入库文件


使用1.导入静态库.png

查看库文件,是否在引用库中


使用2.库链接.png
2.使用静态库
使用3.调用使用使用静态库.png

至此,全文关于.a静态库的制作和使用介绍完毕。
参考文章
手把手教你制作.a静态库
iOS开发中静态库制作 之.a静态库制作及使用篇

上一篇下一篇

猜你喜欢

热点阅读