iOS 静态库 - 制作静态库

作者: 永恒哎哎 | 来源:发表于2016-05-18 14:21 被阅读441次

    前言


    不论是个人开发还是团队开发,随着经验的积累,会有一套属于自己的类和工具函数。在团队开发中,每个成员都会有自己习惯的属于自己的类和工具,如果不能进行整合利用,一个项目中会存在许多重复的工具函数和类别,所以整合成为一个受到大家认可的工具集尤为重要。当开启一个新项目时,你肯定会发现许多之前项目中用到过的方法,重用代码的最简单方法是copy,但是这种方式会对维护造成极大的阻碍,你很难保证共用文件在所有项目之间的同步升级。这时静态库就闪亮登场了,一个静态库是由若干个类,函数,定义和资源的包装,将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节,你可以将其打包并在项目之间共享。

    制作静态库


    1.开一个新项目,创建静态库

    Create Static Library

    2.将你需要打包的文件拖入项目。(此处无图)

    此处需要注意的是:如果你在静态库工程中使用了Category,那么你可能会碰到链接问题。解决方法:

    *  方法1:在生成静态库的工程和使用静态库的工程中使用“-all_load”编译选项,即在“Other Linker Flags”选项添加“-all_load”。(Build Settings)

    Other Linker Flags设置

    *  方法2:在Category的.M文件中,声明一个虚拟类。(推荐)

    在Category的.M文件中创建一个虚拟类

    3.配置你的静态库

    *  配置静态库的Deployment Target(Build Settings)

    配置Deployment Target

    *  配置需要暴露的头文件(Build Phases - Copy File)

    配置需要暴露的头文件

    *  配置静态库的architecture版本(Build Settings - Build Active Architecture Only)

    配置静态库的architecture版本

    注意:"Build Active Architecture Only" 设置为”NO” (设置为NO会编译所有版本,否则只编译当前的architecture版本)

    在进行以上配置之后,就可以满足大多数静态库的需求了,打包走起!

    4.编译生成静态库.a文件

    1)分别选择真机和Iphone6模拟器进行编译,这是你可以看到项目文件夹中Products里面的.a文件生成了,然后右键Show In Finder

    生产.a文件

    2)可以看到在文件夹中生成了对应的模拟器.a以及真机.a以及需要暴露的头文件。

    查看文件夹中的.a文件

    3)合并.a文件

    使用终端进行合成操作 lipo -create (真机.a路径) (模拟器.a路径) -output 保存路径/(文件名).a

    合并.a文件

    成功之后新生成的.a文件就可以使用啦!!!

    新生成的.a文件

    5.使用静态库

    将.h以及合成的通用版.a文件导入测试工程中,实现.h提供的接口


    福利


    既然你坚持看到这里!!!不得不送你一个宏作为感谢,帮助你在Category中快速创建虚拟类

    #ifndef FIX_CATEGORY_BUG

    #define FIX_CATEGORY_BUG(_name_) \

    @interface FIX_CATEGORY_BUG ## _name_ : NSObject  @end\

    @implementation FIX_CATEGORY_BUG ## _name_  @end

    #endif


    目前iOS设备对应的CPU架构了列表:iOS设备的CPU架构

    相关文章

      网友评论

        本文标题:iOS 静态库 - 制作静态库

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