最近公司要做一个SDK,由于之前没有做过,只能度娘了,写出一个demo后,然后SDK里面要用到网络请求,用原生的网络请求,自问没有能力封装出一个AFN出来,只能在SDK里面加入AFN,但是出现两个问题:
1:直接将AFN的源码导入项目中去,在第三方调用的时候,会产生类名重复的冲突,修改类名那是一个大工程啊,并且库升级也是一个问题;
2:用pod安装AFN,第三方没有用到pod呢?
都2021年了,还有公司的项目没用到pod,劝你离职吧,后续开发会有很多坑等着你呢.
闲言少叙.直接上工程
打开xcode,File→New→Project
选择Framework
创建完成后是这样的界面
在SDK中,vim 一个podfile,添加AFN后,
再进行pod install,然后SDK内部,就变成了这样
此时,要注意啦,一些不必要的选项要去掉了,因为我们没有用到macOS的开发,所有macOS的选项要去掉,
并且支持的系统版本也要进行更改
公司要求iOS10.0以后都要支持,大家根据不同的需求,随意选择
加下来要把framework修改为静态库,Build Setting→搜索Mach→将type改为Static Library
下面创建一个网络请求类,并在SDKTest.h文件里面引入这个类,
并且将Request.h添加到Public里面
基本的准备工作已经完成,现在在Request.h里面写一个类方法,在.m文件里面引用AFN并实现方法,
这里要注意啦,我们平时引用AFN,基本上都是在.pch文件里面这样引入#import "AFNetworking.h",但是在这里,千万不要这样的引入,因为这样引入,在SDK里面不会报错,三方在引入我们的SDK时,会报错,下面的报错信息(图12),是不是看着都脑袋疼,所以一定要用#import <AFNetworking/AFNetworking.h>引入
在类方法中写调用AFN的代码
我们只需要进行真机打包,所以在这样的状态下con + B,Products文件下的framework会由红色变成黑色,这样就做出了一个包含AFN的framework
新建一个工程,新工程也必须要用pod来进行管理,导入AFN,将我们做好的framework添加到新工程中,并调用写好的类方法
这样一个含AFN的framework就做好了