封装自己的CocoaPods全攻略

如有错误请查看第五部分的错误集,记录了本人封装过程中遇到的问题。
以下代码命令中的单引号或者双引号是不需要的,为了读取便利加上的。
一、托管平台支持
GitHub、gitLab已试,都可支持;
需要两个仓库来支持cocoapods封装;
二、索引库:spec

pod repo add '你的库名'  '托管平台上的仓库地址'

其中'你的库名'可以跟托管平台上的名字不一致,但是后续在推送时候是必须使用'你的库名'这一名称进行push的
三、源码库
1、创建模板工程

 pod lib create '你以后执行pods install的名称' 

当然,如果创建成功后这个install名字觉得不喜欢的话,是否可以通过修改“.podspec”中的name中修改,这个未尝试过,不确定。


模板工程创建.png

2、配置“.podspec”文件
(1)简单pod描述类


配置信息.png

(2)封装后与远程代码库关联的配置
对应模板平台上的相关配置.png

详注:s.homepage即是远程模板工程的网址,如在GitHub上创建的代码库的网址
s.source 对应的即是下载代码的git地址,如在GitHub上下载库中代码的git地址。
(3)拉取下来后的代码的目录结构


文件目录结构.png

详注:s.source_files标示该文件下的具体源文件的目录
s.subspec代表的是该目录下的子目录
addressBook.dependency表示该封装插件所需依赖的库,可以是第三方库,可以是你自己封装的库,甚至可以是在该次封装中的库
(4)全局依赖的库及系统库
依赖库.png

多个库或者frameWorks的设置如图所示;
3、本地校验“.podspec”是否有问题。
 pod lib lint‘你的pod库名.podspec’ --use-libraries --allow-warnings

--use-libraries:忽略封装的代码中没有导入所需依赖的第三方库的报错
--allow-warnings:忽略警告
如果没有问题即可提交到模板工程库中,如GitHub上的模板库,有问题可根据error进行检查


校验通过.png

4、提交到模板工程库中,如GitHub中。

(cd 当前文件夹的路径)
git add .
添加到本地仓库
git commit --m ''
查看远程是否有分支
git remote 
如果没有的话,链接到远程仓库
git remote add origin  https://github.com/XXX/XXX.git(这是远程代码仓库地址)
提交到远程仓库
git push origin master
打tag 
git tag 查看当前tag,切记这里的tag一定是和spec索引文件的tag是一样的,要不验证通不过
推送tag
git push --tag

5、远程校验“.podspec”

 pod spec lint  --use-libraries --allow-warnings  (远程spec验证)
同步骤3

四、关联索引库以及模板工程库。

 pod repo push  "你的spec库名" "模板工程库中的.podspec"  --use-libraries --allow-warnings
注:命令中 引号是不需要的。

五:pod 安装

source 'https://github.com/xxx/xxx'(自己的spec索引文件)
source 'https://github.com/CocoaPods/Specs.git'

第一个为你远程spec配置的地址,也即步骤二中的托管平台上的仓库地址
第二个为GitHub的spec地址,写死为这个即可

然后后面的跟其他的pod引入一样,比AFnetWorking多了source,猜想是私有库跟共有库的区别。

六、封装中碰到的问题
1、pod 运行 pod lib create创建成功后没有Example工程是因为当前的pod的xcodeProj为版本不对(好像是5.8的版本的问题,升级你的xcodeProj)。
2、去除警告以及依赖的库的问题
添加 :--use-libraries --allow-warnings
3、tag与版本保持一致
必须保证模板工程库中的tag与.podspec中的version保持一致。
4、其他
头文件找不到,导致自己封装的库中的文件夹或者库,每个s.subspec 都已经是一个库了。可以直接使用dependency依赖了,如"pod库名/二级文件夹名/三级文件夹名",二级文件夹名以及三级文件夹名都已经算是库了。
导入framework及第三方的库等。

参考 :
https://www.jianshu.com/p/f2e710d7aec6
https://blog.csdn.net/jia12216/article/details/84858602

你可能感兴趣的:(封装自己的CocoaPods全攻略)