SDK问题解析(一) —— 简单的.framework SDK的封装和使用(一)

版本记录

版本号 时间
V1.0 2019.06.12 星期三

前言

做了几年的项目,基本都是对接三方的SDK,这里就自己封装一下SDK,顺便做个记录,希望有技术大牛多给我批评指正,也希望可以给别人以帮助和借鉴。

基本概念

写作环境:xcode 10.2.1

1. 库

什么是库

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

分类

  • 开源库
    • 公开源代码,可以看到具体实现,比如AFN和SDWebImage等。
  • 闭源库
    • 不公开源代码,是经过编译的二进制文件,看不到具体实现。
    • 主要分为:静态库和动态库

静态库和动态库

  • 存在形式
    • 静态库:.a.framework
    • 动态库:.dylib.framework

自己建立的.framework是静态库,系统的.framework是动态库。

.a.framework的区别:

  • 1) .a是一个纯二进制文件,.framework中除了有二进制文件之外还有很多资源文件。
  • 2) .a不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
  • 3) .framework == .a + .h + sourceFile
  • 区别
    • 静态库:链接时,静态库会被完整的复制到可执行文件中,被多次使用就有多分冗余拷贝。
    • 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统仅加载一次,多个程序共用,节省内存。

.framework

1. 生成SDK

配置

command + shift + N新建立工程,并选择如下:

起一个名字,并保存到桌面

建好的工程目录如下所示:

接着进行配置

接着进行配置

新建类(JJSDKDemo)

并添加新的方法

暴露头文件

但是最好按照它的建议写成下面这个样子

Edit Scheme

选择Release

打包

下面就开始打包了,选中真机,command + B

选中下面

Show in Finder

打开终端输入命令lipo -create

把真机的JJFrameworkSDK.framework下的JJFrameworkSDK拖到终端。

输出到指定目录,在桌面上新建立一个home文件夹。

合成以后

把下面目录中的文件替换成home新生成的文件

替换以后将这个framework拷贝出去就可以使用了

2. 使用SDK

下面就新建工程,新建立一个和上面不同的工程。

将生成的SDK拷贝到新建立的工程中,直接往里拖就可以

拖动进去后如下所示:

这个是调整后的正确的图

这里会展示找不到头文件的错误

这是因为生成库之前,没有将对应的类拖动public中,所有只能按照下面方式重新拖动到public中,再次lipo -create生成库走一遍流程。

重新将SDK拖进去并Run就不再报错了。下面看一下调用:

可以看见就输出了SDK中封装的NSLog了。

到此为止,这个demo就此完毕了。

后记

本篇主要讲述了一种.framework SDK的生成和使用,感兴趣的给个赞或者关注~~~

你可能感兴趣的:(SDK问题解析(一) —— 简单的.framework SDK的封装和使用(一))