iOS 制作支持CocoaPods依赖库

废话不多说,直接开整。

1、准备源码

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

image.png

2、创建本地仓库

  • 1、打开终端,然后……什么?不知道终端是啥?看图。
image.png
  • 2、在Mac的桌面创建本地仓库的文件夹(也可以创建到其他路径下),在终端输入以下命令:
cd Desktop

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

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

image.png

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

image.png

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

image.png

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

3、本地仓库安装CocoaPods

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

  • 1、继续在终端输入命令,直接cd到本地仓库目录中Example的文件下,并安装CocoaPods,终端命令如下:
cd /Users/不告诉你我的管理员名字/Desktop/LYKit/Example

pod install

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

image.png
  • 2、为了验证正确性,打开项目building一下看看,不报错就代表可以继续进行了,报错的话就自己解决一下,根据错误信息解决问题这个是很科学的。

  • 3、把第一步中准备好的源码,复制到下图显示的文件中

image.png
  • 4、配置本地仓库支持的CocoaPods文件,怎么配置?看下图:
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、创建远端仓库

  • 1、为了避免一些不可描述的问题发生,强烈建议远端仓库的名字和本地仓库的名字一致
image.png

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

image.png
  • 2、复制远端仓库的地址,我这里用的https格式
image.png
  • 3、继续配置.podspec文件,配置完成保存,然后update一下就好了,终端命令如下:
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
  • 4、好,现在看下本地项目,呦西……源码添加进来了,可以测试一波试试效果了。
image.png
  • 5、如下图,找到LYViewController文件,导入依赖库的头文件,调用依赖库的方法测试一下
image.png

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

image.png
  • 6、源码没有问题了,现在验证一下.podspec文件的配置有没有问题吧,现在终端的路径需要回到本地仓库的路径下了。然后执行如下命令:
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了。

  • 7、继续在本地仓库目录下执行命令,把依赖库上传到Git需要给依赖库打上tag标签,相当于标记版本号。

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

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
  • 8、这就完了吗?很显然还没有捏,到这里,本地仓库远端仓库都创建完成并且验证完成了,想要支持CocoaPods安装,还必须要一个管理仓库,也叫索引库索引库仓库一样也是需要两个,一个本地的一个远端的。

5、创建远端索引库

  • 1、创建远端索引库的方式和创建远端仓库的方式一样,如下图:
image.png

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

image.png
  • 2、远端索引库的地址,我这里用的https格式
image.png

6、创建本地索引库

  • 1、创建本地索引库,需要终端回到根目录,或者退出终端重新打开,还需要远端索引库的地址,因为需要把远端索引库本地索引库关联起来,这就是需要先创建远端索引库,再创建本地索引库的原因,为了避免一些不可描述的问题发生,还是强烈建议本地索引库的名字和远端索引库的名字一致,然后执行如下命令:
pod repo add 本地索引库名字 远端索引库的地址

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

image.png
  • 2、为了验证是否创建成功,可以直接在终端输入命令查看创建结果,终端命令如下:
pod repo

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

image.png
  • 3、到这里,准备工作都做完了,需要把.podspec文件推送到远端索引库进行绑定操作,终端需要回到本地仓库所在的目录下,再执行命令,终端命令如下:
pod repo push 索引库名字 LYKit.podspec

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

image.png
  • 4、回到远端索引库刷新看下是否提交成功,提交成功页面如下:
image.png

7、验证依赖库

  • 1、创建一个测试demo,用CocoaPods引入我们的依赖库,如下图:
image.png

然后看到终端显示如下:

image.png

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

image.png

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

image.png

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

  • 2、现在直接按键盘上的q键退出终端的搜索页面,再回到测试demo里,在Pod文件中修改如下:
image.png

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

image.png

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

image.png

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

image.png

测试结果:正常

image.png
  • 3、到这里,制作的支持CocoaPods的依赖库就做好了。
  • 4、那么要是依赖库内容有更新咋办呢?

8、依赖库源码更新

  • 1、打开依赖库的源码,修改源码。可以直接按照下图打开源码进行修改,也可以把测试好的源码重新导入到Classes文件下。
image.png
  • 2、源码修改完成,对应修改.podspec文件中的version号,然后终端cd到本地仓库目录下的Example目录下,然后再执行命令pod update --no-repo-update,终端显示如下:
image.png

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

image.png

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

  • 3、接下来一系列的操作,保存、提交、拉取、推送、打标签、推送标签,整个流程没报错,执行完成的终端显示如下:
image.png

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

image.png

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

image.png
  • 4、把.podspec文件推送到远端索引库进行绑定,还是在本地仓库所在的目录下,终端执行命令pod repo push 索引库名字 LYKit.podspec,终端显示如下:
image.png
  • 5、看下远端索引库是否提交成功,成功页面如下:
image.png
  • 6、终端回到测试demo的目录下,update一次依赖库代码看看
image.png

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

image.png

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

image.png

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

  • 4、那么如果换了电脑,怎么继续维护这个依赖库呢?同样的道理,从远端仓库把代码拉取到电脑,然后创建本地索引库远端索引库关联,在本地仓库进行了一系列的操作后,记得先push代码到远端仓库保存代码,然后把最新的变动打上tag并推送到远端索引库,再把.pospec推送到远端索引库就ok了。

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不成功

全剧终

你可能感兴趣的:(iOS 制作支持CocoaPods依赖库)