您的位置:首页 > 移动开发 > IOS开发

iOS 静态库打包(Xcode9.1)

2018-02-26 10:45 453 查看
//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄目录 /**   一、概念      什么是库      库的分类      静态库和动态库的存在形式和使用区别  二、打包静态库  三. 配置工程环境  四、终端查看
4000
静态库所支持的架构
  */
一、概念
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:


谢谢!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息