美文网首页
iOS:App安全性策略之-静态库和动态库的封装(一)

iOS:App安全性策略之-静态库和动态库的封装(一)

作者: 棋剑千秋 | 来源:发表于2018-11-08 23:03 被阅读0次

    什么是库?为什么使用库?

    库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式。库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。一般分为静态库和动态库。
    静态库:以.a 和 .framework为文件后缀名。
    动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名。(系统直接提供给我们的framework都是动态库!)
    库实现了程序某个功能模块的模块化,它便于我们共享(公用)、维护、独立和安全。

    库的分类

    开源库:源代码是公开的,可以看到每个实现文件(.m文件)的实现,例如GitHub上的常用的开源库:AFNetworking、SDWebImage等;
    闭源库:不公开源代码,是经过编译后的二进制文件,看不到具体的实现。闭源库又分为:静态库和动态库

    静态库和动态库有什么特点?

    异同点:
    静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。
    动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在
    共同点:
    静态库和动态库都是闭源库,只能拿来满足某个功能的使用,不会暴露内部具体的代码信息。

    如何创建静态库?

    image.png

    创建完成后


    image.png

    我在.h和.m分别声明和实现了一个printData方法,同时可以看到libDemoLib.a是红色代表还未生成。这时候进行编译,要知道静态库编译后会分别生成模拟器和真机两个.a库文件。


    image.png
    编译完成后如下图:
    image.png
    可以看到,.a静态库已经生成了,看到文件中真机和模拟器分别各自对应的.a静态库。

    我们这里可以把include下的DemoLib目录去掉,如下操作:


    image.png
    这里的+号我们可以添加其他创建的.h文件
    image.png
    这里创建了.a静态库后,我们可以通过命令来查看一下静态库支持哪些处理器
    image.png
    看到了模拟器下的静态库是x86_64,真机下的静态库是支持arm64的。

    那如何把模拟器和真机的静态库合成一个呢?命令如下:
    lipo -create libDemoLib.a libDemoLibS.a -output test.a
    合成test.a,用命令查看一下是否已经合成:


    image.png

    OK,就是这么简单。

    相关文章

      网友评论

          本文标题:iOS:App安全性策略之-静态库和动态库的封装(一)

          本文链接:https://www.haomeiwen.com/subject/bnmgxqtx.html