iOS 静态库打包(Xcode9.1)

作者: 石虎132 | 来源:发表于2018-02-26 11:15 被阅读407次

    //联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄

              QQ群:807236138  群称:iOS 技术交流学习群

    目录

     /**

       一、概念

          什么是库

          库的分类

          静态库和动态库的存在形式和使用区别

      二、打包静态库

      三. 配置工程环境

      四、终端查看静态库所支持的架构

      */

    一、概念

    1、 什么是库?

    所谓库就是程序代码的集合,是共享程序代码的一种方式。

    2、库的分类

      根据程序代码的开源情况,库可以分为两类

    * 开源库

    源代码是公开的,你可以看到具体实现。比如GitHub上比较出名的第三方框架AFNetworking、SDWebImage。

    * 闭源库

      不公开源代码,只公开调用的接口,看不到具体的实现,是一个编译后的二进制文件。这种常见于一些公司的SDK包,比如高德地图SDK、环信即时通讯SDK等等。而闭源库又分为两类:静态库和动态库。本篇重点要讲的便是其中的静态库。

    3、静态库和动态库的存在形式和使用区别

      存在形式:

     * 静态库

    * 以".a"或者“.framework”为文件后缀名

      * 动态库

    * 以".dylib"或者“.framework”为文件后缀名

     静态库

     * 平时我们用的第三方SDK基本上都是静态库。

     * 静态库在项目编译时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。

     * 静态库很大的一个优点是减少耦合性,因为静态库中是不可以包含其他静态库的,使用的时候要另外导入它的依赖库,最大限度的保证了每一个静态库都是独立的,不会重复引用。

     * 静态库有.a 和 .framework两种形式。

     动态库

     * iOS平时使用的系统库基本是动态库,比如使用频率最高的UIKit.framework和Fundation.framework。

     * 动态库在程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。

     * 动态库在制作的时候可以直接包含静态库,也能自动link所需要的依赖库。

     * 动态库有.dylib/.tbd 、.framework两种形式。

     * 苹果禁止iOS开发中使用动态库

     使用区别:

     1.静态库链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。

     2. 动态库链接时不复制,程序运行时由系统动态加载到内存,供程序调用。而且系统只加载一次,多个程序共用,节省内存。

    二、打包静态库

    1.新建静态库工程

       Create a New Xcode project -> Framework&Library -> Cocoa Touch Static Library

    图1:

    图2:

    2、创建工程完毕后,再创建一个工具类StaticLibTool,添加一个方法用于测试

    图3:

    3、运行完毕后,我们会看到工程中Products文件夹下的libStaticLib.a文件由红色变成了黑色。这就是我们打包好的.a静态文件了。

    图4:

    三. 配置工程环境

    3.1配置最低支持版本

    图5:

    3.2设置适配所有模拟器架构重要

    project -> buildSeting -> Build Active Architecture Only 设为NO

    图6:

    3.2添加公开文件

    3.2.1 点击“+” 新增”Header Phase” 并且 拖拽.h到 public中

    图7:

    最终结果如下:

    图8:

    4. 生成.a文件,把libSHStaticLibTool. a 静态包和 SHStaticLibTool.h文件拷贝到新的项目中

    图9:

    实现最终效果:

    图10:

    四、终端查看静态库所支持的架构

      终端->cd进入库文件路径->lipo -info 库名

      cd /Users/joyshow/Desktop/SHStaticLib/SHStaticLib

      lipo -info libSHStaticLibTool.a

    图11:

    谢谢!!!

    相关文章

      网友评论

      • 男神已认证:请不要再说苹果禁止动态库的言论了,那是iOS8以前的事,现在开发app大部分都已经从最低版本iOS9开始了
      • 蛮小刀:建议使用framework静态库,不用单独配置头文件
        石虎132:@蛮小刀 framework静态库也写文章,可以参考

      本文标题:iOS 静态库打包(Xcode9.1)

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