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”

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

在此,本人选择的是AFNetworking库

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

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

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


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

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 、资源文件拖拽到其他项目中即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容