iOS静态库的制作

iOS静态库的制作

背景知识

  • 库可以分为静态库和动态库,通常使用制作的都是静态库,使用自己制作的动态库是不能上线的。
  • 静态库每次使用都会加载一次,比较耗资源。动态库一般是系统公用的,只需要加载一次,也就是多个App使用的是同一个动态库。
  • 静态库是由.a和.frameWork组成。动态库是由 .dylib和.frameWork组成。
  • 自己制作的.frameWork 是静态库,系统使用的.framework是动态库。
  • .a是一个二进制文件,是不能直接使用的。需要添加.h文件才能使用。
  • .a + .h +sourcefile = .framework

制作流程

.a制作

  • 创建Cocoa Touch Static Library

  • 命名SDK的名称

  • 删除.m文件

  • 添加SDK的真正功能的类文件

  • 编辑SDK头文件

  • 设置编译所有架构 Build settings->Build Active Architecture Only --> NO

  • 编译前切换成release模式

  • 分别在模拟机和真机上build一次,获得.a文件

  • 将真机获得的.a文件和模拟机获得的.a文件合并成一个新的.a文件

lipo -create
模拟器.a文件目录  
真机.a文件目录
-output  输出目录/文件
  • 将合并好的.a 文件和所有相关.h文件都放在同一个文件夹中,此时该文件夹就是一个可以使用的静态库了

  • 测试,创建一个独立项目,将该文件夹导入项目中使用。

.framework制作

  • 创建Cocoa Touch framework

  • 添加SDK的真正功能的类文件

  • 编辑SDK头文件

  • 配置header

  • 配置库连接类型

  • 设置编译所有架构 Build settings->Build Active Architecture Only --> NO

  • 编译前切换成release模式

  • 分别在模拟机和真机的状态下build一下得到两个MyFramework.framework文件,每个MyFramework.framework文件里面包含MyFramework文件

  • 合并两个MyFramework文件

lipo -create
模拟机的MyFramework.framework下的MyFramework路径
真机的MyFramework.framework下的MyFramework路径
-output  输出目录/文件
  • 将合并生成的MyFramework 替换掉真机MyFramework.framework下的MyFramework。此时真机下的MyFramework.framework就是制作完成了。
  • 测试,创建一个独立的项目,将MyFramework.framework导入到项目中。添加Header search Path。

原文地址:https://www.cnblogs.com/fusheng-it/p/8080191.html