iOS-动态库 静态库简介
静态库和动态库
什么是库(Library)
- Library是编译好的一段二进制文件,加上头文件就可以给其他人使用
为什么使用(Library)
- 打包成库,只暴露头文件可以给其他人使用,看不到源码实现
- 减少编译时间,打包成库之后,已经是编译好的二进制文件,编译的时候只需要link一下,减少编译时间
- 库在使用的时候需要连接连接的方式分为两种
库的文件格式
- .a
- .dylib
- .framework
- .xcframework
静态库
- 静态库就是静态链接库,是一堆目标文件的集合,就是很多文件打包压缩过之后的文件,window的.lib, Linux下的 .a .framwork
缺点:
动态库
- 动态库与静态库相反,动态库在编译的时候不会copy进目标程序中,目标程序只会存储指向动态库的引用,等程序真正的运行起来才会加载,常用的格式有,dylib .framework .tbd
缺点:
优化:
tbd格式
- tbd本质是YAML描述的文本文件 (text-base-stub-libraries)
- 记录一些动态库的信息,包括一些导出的符号,动态库的架构信息,动态库的依赖信息
- 用于避免开发中真机调试中直接用到到传统的dylib
- 基与tbd格式的伪装的framework会大大减少xcode的大小
framework格式
- 是一种打包方式,将库的二进制文件,资源文件,头文件打包在一起方便管理分发
- framework和系统的framework差别还是很大,最后还是要copy到ipa目录下的frmework中
- 这种framework也可以成为Emebedded Framework
- 不同的App使用相同的动态库,并不会在系统中只保留一份而是会在各个app中各自打包,签名,加载一份
framework在app中的位置
