自动化打包

xcode 8 /iOS10下静态库和动态库的区别 && framework的制作

雨燕双飞 提交于 2019-12-02 04:14:29
这里输入引用文本本文记录一下,在SDK开发完成后,如何高效率制作framework。 ##iOS关于静态库、动态库的一些基本概念和理解误区 ###1. 库 库是源代码经过 编译 ,形成的 二进制代码 ,别人项目中使用我们的库的时候,库在参与编译的时候,直接 link 就OK了,按照link的方式,可以把库分为 静态库 和 动态库 ###2. 静态库 静态库在编译的时候会被直接拷贝一份,复制到目标程序里,这段代码在目标程序里就不会再改变了。 一般以**.a** 和 .framework 为文件后缀名 这种做法是牺牲应用“体量”来节省编译时间。 ###3. 动态库 与静态库相反,动态库在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库的引用。等到程序运行时,动态库才会被真正加载进来。 动态库的优点是,不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用(因为这个原因,动态库也被称作共享库)。 同时,编译时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。动态库带来的问题主要是,动态载入会带来一部分性能损失,使用动态库也会使得程序依赖于外部环境。如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行 以**.tbd**(之前叫.dylib) 和** .framework** 为文件后缀名 苹果系统为我们提供了很多动态链接库