静态库

iOS 制作静态库

https://www.jianshu.com/p/13bf46df9387

合并生成的静态库文件(模拟器,和真机)

https://blog.csdn.net/zhonggaorong/article/details/51878641

0:基础 ARM 低功耗 尺寸小

     i386 MAC处理器的指令集。 用在32位的模拟器中。

     X86-64 MAC处理器的指令集。 用在64位的模拟器中。

     arm64 iPhone5s及其以上的版本。

   armv7s iPhone5 | iPhone5c | iPad4。

   armv7 iPhone4s | iPhone4等设备。

1: 新建一个静态库工程。

2:删除默认的.h和.m文件。拖入要生成的静态库的文件。

3:在 TARGETS -> Build Phases -> Copy Files 中添加要暴露的.h 文件

4:将 PROJECT -> Build Settings -> Build Active Architecture Only 设置为NO,以便生成可以供所有模拟器和真机运行的静态库文件。

5:点击RUN , 当Product文件夹下的 .a 有红色变为黑色时,即生成了所需要的静态库。

6:合并静态库 lipo -create 路径一 路径二 -output 输出的路径

7:  输出静态库支持的架构(如 arm64, x86-64等) lipo -info 静态库.a

8:  检查生成的静态库.a 是否支持bitcode。 https://blog.csdn.net/u012198553/article/details/53588808

     a 将合并的静态库拆解。如果 lipo -info xxx.a 输出的是 fat 的

     b 获取单一架构的静态库    lipo -thin arm64 xxx.a -output xxx.a

     c 解压获取目标文件          ar -x xxx.a

     d 检查目标文件是否支持bitcode 如果有输出则支持,没有输出为不支持  otool -l xxx.o | grep bitcode

     e 如果支持的话,即在使用时不需要设置工程的 Build Settings -> Enable Bitcode 为 NO 否则 需要设置为 NO

9:设置.a 静态库支持 Bitcode 则设置 Build Settings -> Other C Flags 的值是 -fembed-bitcode

    

************************************************************************************

Framework形式的静态库(推荐使用)

https://blog.csdn.net/pangshishan1/article/details/72179898

1:创建Framework工程。设置支持的最低版本

2:将 Build Active Architecture Only 设置为NO

3:将 Mach-O Type 设置为 Static Library 默认为Dynamic Library

4:  将 Other C Flags 设置为 -fembed-bitcode 即允许bitcode 苹果商店生成适合的文件

5:将需要暴露的.h文件放在Build-Phases -> Headers -> Pulic 下面

6: 将生成的.framework合并使用 lipo -create xxx xxx -output xxx(要把输出的东西放在products的路径下,否则可能报错。合并时操作的.framework文件下的FFFramework文件)之后将合并后生成的FFFramework文件替换Debug-iphoneos -> FFFramework.framework -> FFFramework 文件。即生成可以使用的.framework静态库。

   

 静态库和动态库的区别。

1:静态库会在app编译时,直接复制到app的可执行文件中(mach-o)中,会使app的启动时间延长。

2:动态库在app编译时,在可执行文件中保留的是动态库的References.在Runtime时使用到的时候才会加载。可以减少app的启动时间。

3:在移动端,即便使用动态库,也只能以依赖的形式添加到app中(启动时加载)。只有在mac中可以可以使用运行时加载(dlopen()与dlclose()成对出现来打开或者关闭动态库,dlsym()用来获取对应的数据或函数地址一段用于c、c++,但是一般以runtime机制来代替)

https://juejin.im/post/5b1f1d3a6fb9a01e6e2baded

**************************************************************** 

创建Bundle

1: 创建文件夹

2:将需要的资源文件放在文件夹中

3:修改后缀为“.bundle”

原文地址:https://www.cnblogs.com/jisa/p/9067764.html