• 静态库


    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”

  • 相关阅读:
    面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字
    位运算技巧3
    Android消息循环分析
    ubuntu安装软件的方式
    fragment Trying to instantiate a class com.example.testhuanxindemo.MyFragment that is not a Fragmen
    LAN路由
    php 简易验证码(GD库)
    飘逸的python
    它们,不能是虚函数!!!
    HTML5调用摄像头实现拍照功能(兼容各大主流浏览器)
  • 原文地址:https://www.cnblogs.com/jisa/p/9067764.html
Copyright © 2020-2023  润新知