iOS组件化iOS学习笔记

iOS 制作支持CocoaPods依赖库

2020-08-13  本文已影响0人  邓布利多教授

废话不多说,直接开整。

1、准备源码

首先,想要制作一个依赖库,肯定要有足够的技术支持,也就是说源代码,不管源码来源自哪里,肯定是要保证它的正确性,做好必要的测试工作。我的源码准备好了,把输入的字符串经过处理再输出,一个类方法(需要超强的技术功底😁)

image.png

2、创建本地仓库

image.png
cd Desktop

#LYKit是我的命名,这个命名任意起就好
pod lib create LYKit

输入完之后,终端会显示出几个关键性的问题,根据题目作答,如下图:

image.png

答完题就会自动创建一系列的文件,并打开创建完成的项目,这个项目的窗口弹出来的时候是不是吓一跳?👂,哦没有就好,项目结构如下图:

image.png

先不用管这个,直接最小化,然后在桌面找到刚刚创建的文件夹,双击打开,看到如下图显示的结构:

image.png

什么?你的目录中没有显示那几个灰色的文件(.git等)?别慌!低头看键盘,左手的食指和无名指分别按住command键和Shift键,右手的食指按一下.,好了,抬头再看你的目录,一样了吧😁,到这里,本地仓库创建完成。

3、本地仓库安装CocoaPods

哦?你还没安装CocoaPods?看这里☞:付费商家的引流入口

cd /Users/不告诉你我的管理员名字/Desktop/LYKit/Example

pod install

安装完成的终端显示如下图:

image.png image.png image.png

就是配置图中选中的.podspec文件,是不是发现双击不能打开这个文件?别慌,直接右键打开方式其他Xcode打开

image.png

打开之后的初始页面是这样的

image.png

这个配置文件的参数需要注意一下

name:不用改,用默认的
version:依赖库的版本号
summary:依赖库的简介,注意这个简介不能比description的内容长,不然为啥叫简介呢?👺
description:依赖库的描述说明,比如说咋用啊,应该是啥样的姿势啊都可以写在这里的
homepage:依赖库的介绍页的地址,随便放,没要求
license:不用改,用默认的
author:作者信息,可以改也可以不改
source:依赖库在git上的地址,不能写错,写了不行的奥
deployment_target:依赖库支持的最低iOS系统版本
source_files:不用改,用默认的
resource_bundles:依赖库如果用到icon的话,素材存放的位置
frameworks:用到的系统框架
dependency:用到的第三方的依赖库,用到多个的话就写多个,不能像frameworks那样写,要分开写,一行一行的

到这里,就需要创建远端仓库了。

4、创建远端仓库

image.png

远端仓库创建完成就是下图的样子

image.png image.png
pod update --no-repo-update

执行完命令发现报错了!!What mother fucker WHY

image.png

重点是最后这句:but they required a higher minimum deployment target,翻译成普通话就是支持的最低系统版本太低了。调整一下就完了呗,回头看一下,我这里.podspec文件中的s.ios.deployment_target写的是9.0,嗯可以,继续看,发现两处不同的,如下图:

image.png image.png

这两地方好像创建完成之后没有改过的?不管了,全都改成9.0,然后再执行命令pod update --no-repo-update,成功了✌️

image.png image.png image.png

测试结果:正常,下图图中有惊喜😏

image.png
pod lib lint

执行完命令发现又报错了!!What mother fucker WHY

image.png

看图中那个WARN,说The summary is not meaningful,嗯??没意义?啥叫有意义?破B事儿还挺多的……
改配置文件吧,为了有意义,顺便把description也给改一下,然后保存。
保存之后再回到Example目录下执行命令pod update --no-repo-update
然后再回到本地仓库的路径下执行命令pod lib lint

image.png

看到显示了passed validation的字眼就表示配置文件也验证成功了,现在就可以把依赖库上传到Git了。

第一步,添加远端仓库的地址,命令如下:

git remote add origin 远端仓库地址

第二步,把所有修改过的文件添加到缓存区

git add .

第三步,提交变动记录

git commit -m "submit files first"

到这里,前三步都没问题,终端显示如下:

image.png

第四步,遵循先拉后推的原则,先拉一下远端仓库的代码

git pull origin master

发现问题了

image.png

这里说不给合并,意思就是有冲突了,说两个master不相关,不能合并,开玩笑🙄,经过Search一番之后,找到答案,直接执行命令git pull origin master --allow-unrelated-histories,意思就是霸王硬上弓,强制合并。

image.png

第五步,推送代码到远端仓库

git push origin master

又报错!!

image.png

在这里找到答案,直接执行命令git push --force 远端仓库地址,还是霸王硬上弓,强行覆盖。

image.png

第六步,给依赖库打上tag标签,注意,这个标签的版本号一定要和.podspec文件中的version一致

git tag 0.0.1

第七步,将tag标签推送到远端仓库,版本号同样和.podspec文件中的version一致

git push origin 0.0.1

好,第六步和第七步整的挺好,没报错了,终端显示如下:

image.png

到这里,刷新一下远端仓库看看,代码全都提交上去了

image.png

5、创建远端索引库

image.png

远端索引库创建完成就是下图的样子

image.png image.png

6、创建本地索引库

pod repo add 本地索引库名字 远端索引库的地址

创建完成的终端显示如下图:

image.png
pod repo

执行完成终端显示如下图:

image.png
pod repo push 索引库名字 LYKit.podspec

执行完成的终端显示如下:

image.png image.png

7、验证依赖库

image.png

然后看到终端显示如下:

image.png

嗯??怎么版本号是1.1.1?看下Pod文件,显示如下:

image.png

这是什么鬼呢?为啥是这个鸟样子的?难道我的依赖库没有发布成功的吗?用命令pod search LYKit搜索一下看看

image.png

巧了啊,这哥们的依赖库也是这个名字,那咋办?我要引入的是我自己的依赖库,但是名字和这个哥们的重名了,难道要我换个名字?很显然不可能的。但是话说为啥同样的名字能搜到他的这个依赖库,搜不到我自己的?难道是因为他先发布的?

image.png

直接指定仓库地址,像上图中修改的样子,再重新install一次

image.png

这时候看到版本号从1.1.1变成了0.0.1了,再回到demo中看下

image.png

好了,成功引入了自己的依赖库,测试一下看看,

image.png

测试结果:正常

image.png

8、依赖库源码更新

image.png image.png

看到版本号从0.0.1更新到了0.0.2了,到这里,还是有必要对本地仓库进行一次验证,终端回到本地仓库的路径下执行命令pod lib lint

image.png

有显示passed validation,并且版本号也是0.0.2,表示验证通过,源码的修改也生效了。

image.png

刷新一下远端仓库看提交上去没有

image.png

有了,最新的标签也提交上去了

image.png image.png image.png image.png

看到没?版本号从0.0.1更新到了0.0.2了,在看Pod文件下的代码

image.png

源码中最新添加的方法也有了,测试下

image.png

一切都是那么的自然,完成。

9、总结

从头撸到尾,做个最终总结(纯属个人理解)
制作一个支持CocoaPods依赖库共需要四个仓库:
远端仓库
本地仓库
远端索引库
本地索引库

其中本地仓库用来测试及调整源码,远端仓库用来保存本地仓库的所有文件,远端索引库用来支持CocoaPods安装,本地索引库用来和远端索引库进行绑定,并把本地仓库.podspec文件推送到远端索引库
源码的每次变动都必须要打tag标签,并且推送tag的时候必须和.podspec文件中的version一致。
只要远端仓库远端索引库存在,可以随时随地维护自己的依赖库。

步骤总结


1、创建本地代码库:pod lib create 仓库名

2、创建远端代码库,拿到远端代码库git地址,回到本地代码库目录下打开.podspec文件替换掉source地址和homepage地址,修改summary内容

3、cd到Example目录下,更新本地代码库:pod update --no-repo-update(此步骤可跳过)

4、cd到本地代码库目录下,验证:pod lib lint --allow-warnings

5、将本地代码库推送到远端代码库并打标签(tag标签版本号和.podspec中版本号一致)
   git remote add origin 远端代码库git地址
   git add .
   git commit -m 'commit'
   git pull origin master(新仓库推送代码,此步骤可跳过)
   git push --force 远端代码库git地址(强制推送合并代码)
   git tag 0.0.1
   git push origin 0.0.1

6、创建远端索引库

7、重新打开终端或cd ~,创建本地索引库:pod repo add 本地索引库名 远端索引库git地址

8、验证本地索引库:pod repo(或直接查看本地索引库是否创建成功:~/.cocoapods/repos)

9、cd到本地代码库目录,将本地代码库的.podspec文件和索引库邦的:pod repo push 索引库名 本地代码库.podspec --allow-warnings

10、在Demo项目中,pod引入组件库
   指定分支:pod '代码库名', :git => '代码库git地址', :branch => 'master'
   指定commit:pod '代码库名', :git => '代码库git地址', :commit => '******'
   可将代码库本地引入,修改代码库中源码:clone代码库到Demo项目同级目录,podfile文件改为:pod '代码库名', :path => '../代码库名'

11、创建远端代码库和索引库时,保证仓库中有文件存在,避免push不成功

全剧终

上一篇 下一篇

猜你喜欢

热点阅读