iOS开发-----静态库.a的制作教程

(1)静态库和动态库的存在形式


静态库: .a 和 .framework

动态库: .dylib 和 .framework (最新的已经是.tbd和.framework)

(2)静态库和动态库在使用上的区别


静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 

优点:

1.使自己的源码不会简单的暴漏给别人,保密性很好,但是在一个公司开发项目的话,这样不方便交流沟通。

2.当需要使用静态库的时候,只需要把相应的.h文件和.a文件拷贝到工程中就好,不需要再将所有的源码一一拷贝。这样既加快了开发流程,也不会使整个项目的压缩包很大。

3.显得也比源码拷贝高端、大气一些。

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

优点:

1.和静态函数库相比,动态函数库在编译的时候不会被编译进目标代码中,该函数库里的相应函数只有当程序执行到某些函数时才会被调用,因此动态函数库所产生的可执行文件并不会占用很大的内存。

2.由于函数库没有被整合进自己的程序,而是在程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。

3.动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。

注意:

苹果公司规定:如果项目中使用自己写的动态库,就不能上传到AppStore

(3)制作过程


打开安装的Xcode,新建项目-> 选择 “Cocoa Touch Static Library”

iOS开发-----静态库.a的制作教程_第1张图片
iOS开发-----静态库.a的制作教程_第2张图片

添加所需要的库中包含的源代码,add to target 中的方框记得勾选

iOS开发-----静态库.a的制作教程_第3张图片

在此,本人选择的是AFNetworking库

iOS开发-----静态库.a的制作教程_第4张图片

选择需要暴露出来的 .h 文件, .m 文件会自动编译到 .a 文件中

iOS开发-----静态库.a的制作教程_第5张图片

从左侧库文件中选择所有的.h文件,拖动到右侧public中

iOS开发-----静态库.a的制作教程_第6张图片

先选择真机设备,然后然后 Command+B 编译,libAFNetworking.a的文件从红色变为黑色


iOS开发-----静态库.a的制作教程_第7张图片

选择模拟器,依然 Command+B ,模拟器和真机环境下用的 .a 文件是分开的,右击 “Show In Finder” ,查看制作好的 .a 文件

iOS开发-----静态库.a的制作教程_第8张图片
iOS开发-----静态库.a的制作教程_第9张图片

Debug-iphoneos 文件夹里面的东西是用在真机上的

Debug-iphonesimulator 文件夹里面的东西是用在模拟器上的

如果 Scheme 是 Release 模式,生成的文件夹就以 Release 开头

(4)合并.a文件,使得能同时用在真机和模拟器上


在终端输入命令:

lipo -create Debug-iphoneos/libAFNetworking.a的根路径 Debug-iphonesimulator/libAFNetworking.a的根路径 -output

(5)使用 .a


如何使用 .a

直接将 .a 、 .h 、资源文件拖拽到其他项目中即可

你可能感兴趣的:(iOS开发-----静态库.a的制作教程)