iOS 动态库和静态库

由于在目前的公司从事iOS SDK开发和维护工作,所以打算用这篇文章回顾总结下相关方面的知识以及经验分享。

目前公司主要有很多年视频和直播类项目经验的积累。我的工作也就是维护这些视频和直播类的底层库,一起统一封装成静态库,然后提交给上层iOS端app开发人员直接进行调用。

我们公司主要的底层库包括播放库、RTMP库、下载库(p2p)、推流采集库、FFMpeg库以及protal查询库。

静态库与动态库的区别

静态库:以.a 和 .framework为文件后缀名。
动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名(系统直接提供给我们的framework都是动态库)

静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework等),节省内存。

我们公司使用的是使用静态库的方式,提供给上层.a静态库和.h头文件。使用shell脚本进行快速统一打包,持续集成。

由于不同项目可能需要的底层库可能有所不同,所以SDK开了不同的分支以应对不同的项目。并在shell脚本中根本项目的不同来自动选择不同的依赖进行打包。每次打包都会打上SDK的版本号。

由于为了方便上层app端的开发,还在一般在开发过程中将模拟器的静态库和真机的静态库进行合并然后交给他们使用。并配以单独的release真机包以备发布时用。

作为一个iOS SDK开发者一些心得和小建议

1.不要指望上层开发者会看你写的文档可是你还是要写。
2.demo尽量详细和无误,上层开发要以demo为准。
3.在提供给上层使用之前一定要先自我测试。
4.为了避免混乱和bug排查,一定要在SDK中打上版本号。
5.一切能自动化的东西尽量自动化,这样不但少出错而且提高效率。
6.尽量给SDK制作一个代码可靠和经过持续测试的demo并用bugly等问题反馈工具进行持续追踪。
7.作为一个iOS SDK开发者,你会学到很多之前学不到的东西,拓展知识的深度,如果有机会做iOS SDK开发,一定要去试试。

你可能感兴趣的:(iOS 动态库和静态库)