iOS制作静态库
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”