iOS - 私有仓库通过 CocoaPods 引入工程
Spec Repo(配置仓库)的概念
CocoaPods
对于一名 iOS
开发来说再熟悉不过了,它的工作原理就是在 GitHub
上面有个 Spec Repo
,它里面包括成千上万的后缀名为 .podspec
的文件。我们在项目中集成第三方库(如 SDWebImage
)的时候其实就是通过 CocoaPods
的 Spec Repo
去找到我们需要的开源项目的 .podspec
文件,然后在 .podspec
文件中有具体的源码地址(放具体代码的地方),根据这个地址去下载代码。
按照上面 Spec Repo
的理解,我们如果能自己创建一个类似 CocoaPods
的 Spec Repo
,然后把我们私有的公共组件的 .podspec
文件放在里面,然后集成的时候让 CocoaPods
帮我们集成那我们就能达到目的,就可以建立私有pod库了。
一般项目经理都会把代码仓库和配置仓库都建好,这时候我们只需要把 Spec Repo
加到本地就行了。(注意:需要管理员将你的账号加到里边,有访问权限并且有修改权限)。
一、添加’本地的私有仓库’(Spec Repo)文件
1、使用下面的命令就可以在本地生成配置文件的仓库,建议这个本地的名字也和远程的一致,这样便于区分和后期的维护.
“baseSpecs”是你们团队远端创建的配置文件仓库的名字,后面是配置文件仓库远端的地址 .
注意此时不需要 cd
进入任何目录,从默认位置输入这个命令,即在点击终端快捷方式打开的状态下直接输入下面的命令即可
1 | pod repo add baseSpecs http://***/***/specs.git |
2、查看是否添加成功(查看本地的所有repo)
1 | pod repo list |
或者打开本地配置仓库管理文件夹进行查看
1 | open ~/.cocoapods/repos |
如果能看到自己团队的 repo(本地的私有仓库),就 OK 了。注意:这个操作只需要执行一次就可以了,下次再打新的 pod 库的时候就不需要再执行了。
二、创建 pods 项目工程文件
1、创建项目和 .podspec
文件
方式1、可以利用 pod
提供的命令,直接创建一个 pod
库的标准模板。这个很方便,可以直接创建一个工程,可以省去很多操作。命令如下:
1 | pod lib create UIPoolSingleImage |
方式2、自己在项目根目录创建 podspec
文件。该方式比较麻烦,需要自己创建项目。
2、编写 .podspec
文件。根据自己的 pod
库更改相关内容,文件内容大概是这样的:
1 | //特别说明,里面的注释是博主为了大家知道什么意思加的,实际使用时一定要去掉 |
三、创建自己的 pods 公共组件库项目
1、在可以创建私有库的地方创建一个 code repository
(代码仓库), 也就是存放要打的 pod
库中的代码文件。这里我使用的是 gitlab
。
点击右上角的加号按钮,创建代码仓库名为 UIPoolSingleImage
2.克隆 code repository
(代码仓库)到本地,并将上面创建好的私有库代码文件上传到 code repository
(代码仓库)中。注意:代码上传之后时候需要打一个 tag
,并且每次更新 tag
都要和 .podspec
文件中的 tag
对应。
四、在命令行验证 .podspec
文件是否有效
注意:--allow-warnings
:表示忽略警告。 --verbose
:表示会输出详细的debug信息。
1、本地校验:pod lib lint UIPoolSingleImage.podspec –allow-warnings
2、线上校验:pod spec lint UIPoolSingleImage.podspec –allow-warnings
注意:如果你制作的pod库,会依赖spec repository(配置文件仓库)中其他的私有仓库,则需要加上 –use-libraries。并且将spec repository 的源加上。
1 | pod spec lint UIPoolSingleImage.podspec --sources='http://***/***/specs.git','https://github.com/CocoaPods/Specs.git' --use-libraries |
如果出现 passed validating
则表示 spec
文件验证通过了
五、将.podspec配置文件push到远端专门存储配置文件的仓库中
1、将配置文件 push 到远端专门存储配置文件的仓库中 ,本地的也会同步更新
此时需要 cd
进入本地的 .podspec
所在的路径(否则会找不到 podspe
c文件)
然后使用下面的命令即可,baseSpecs
是你创建的 spec repository
的名字,后面是你本地创建的 .podspec
文件
注意:如果你制作的 pod
库,会依赖 spec repository
(配置文件仓库)中其他的私有仓库,则需要加上 --use-libraries
。
注意:如果你在手动验证 Pod
时使用了 --use-libraries
或 --allow-warnings
等修饰符,那么发布的时候也应该使用相同的字段修饰,否则可能会报错。
1 | pod repo push baseSpecs UIPoolSingleImage.podspec --allow-warnings --use-libraries --verbose |
2、出现下面信息,则代表成功
或者查询本地私有 spec
管理文件夹,如果看到了UIPoolSingleImage
则代表成功
1 | open ~/.cocoapods/repos |
3、可以在远端配置文件仓库中看到这个文件,如下:
到此,利用 Cocoapods
打私有的 pod
库就完成了。接下来,在项目中就可以直接引入私有库了。
注意:引用私有库的时候,需要将 Spec Repo
源加到 Profile
文件中,如下:
1 | source "https://github.com/CocoaPods/Specs.git" #cocoapods的 |
更新:下次更新 pod
库的时候,在 sourceTree
需要打 tag
,比如从 0.1.0 升级到 0.2.0,要先将代码推送到远端,然后再打 tag
,顺序不能反。而且打的 tag
要和 .podspec
文件中的 tag
要对应。