iOS 静态库打包(Xcode9.1)

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


目录

 /**

   一、概念

      什么是库

      库的分类

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

  二、打包静态库

  三. 配置工程环境

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

  */



一、概念


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:






谢谢!!!


猜你喜欢

转载自blog.csdn.net/shihuboke/article/details/79373801
今日推荐