This post was updated 2248 days ago and some of the ideas may be out of date.

一、cocoapods的安装

这里不多说,直接使用这个命令进行安装

sudo gem install cocoapods

二、创建一个私有索引库

2.1 在托管平台创建一个项目

这里可以是公司的git,也可以是例如github上的私有仓库,因为具有权限的库才是私有库,如果是不设置权限的,那么就是公有库了。当做一个普通的git项目创建就可以了。例如:

ssh://git@git.rengfou.com/ian/IANSpecs.git

2.2 将托管平台的索引库地址添加到本地的repo仓库中去

pod repo add IANSpecs ssh://git@git.rengfou.com/ian/IANSpecs.git

三、cocoapods私有库创建

3.1 利用模板创建私有库

3.1.1 模板的初始化

进入对应的目录,在终端下运行

pod lib create UtilsDemo

如下就是创建的过程:

下面在对应的路径下(我这里是桌面)就会出现一个UtilsDemo文件夹

我们打开这个文件,是这样的

3.1.2 podspec转podspec.json

这一步也可以不改,json文件只是更容易编辑以及理解。

这里为了方便使用,我们把UtilsDemo.podspec文件转换为UtilsDemo.podspec.json文件,在终端输入如下命令

pod ipc spec UtilsDemo.podspec >> UtilsDemo.podspec.json

3.1.3 编写组件库代码

把核心的代码拖入到Class文件夹中去
这里我以UIAlertView+Blocks.h为例,目录下的ReplaceMe.m文件夹可以删除掉。
然后进入Example文件夹,首次使用pod install进行安装
可以发现Development Pods下已经有了UIAlertView+Blocks.h

3.1.4 组件库代码提交到git上

这里的git指的是这个UtilsDemo自己的远程git,和索引库不是一个git。

然后我们使用如下命令,将本地的这个UtilsDemo关联到远程

git remote add origin https://git.rengfou.com/ian/UtilsDemo.git
git push -u origin master

3.1.5 创建tag并编写描述文件

我们使用如下命令创建一个0.1.0的tag,并提交到远程仓库

git tag -a 0.1.0 -m "Release version 0.1.0"
git push origin --tags

我们使用编辑器打开UtilsDemo.podspec.json文件,当然也可以使用PlistEdit软件去打开,更直观。
如图:

把默认的内容改成自己的,注意地址以及tag版本号,其中dependencies中就是我们这个私有库要依赖的公有库,这里我以带版本号的JSONModel和不带版本号的AFNetworking为例。

3.2 向索引库提交spec

我们使用如下两行命令分别进行验证检查本地和远程,这里我们把警告忽略掉。

pod lib lint --allow-warnings
pod spec lint --allow-warnings

然后执行如下命令添加到spec中去

pod repo push IANSpecs UtilsDemo.podspec.json

如果出现The UtilsDemo.podspec.json specification does not validate.错误

我们可以使用如下命令再尝试

pod repo push IANSpecs UtilsDemo.podspec.json --verbose --use-libraries --allow-warnings

看到如下的显示,则代表成功了。

四、私有库的开发与发布

这一步是比较重要的,因为我们平时开发的时候,这一步是要频繁使用的。
例如现在有新的需求了,我要在UtilsDemo组件中加入新的文件haha.h,而我这个haha.h还依赖了SDWebImage公有库。我拉一个新的分支test,然后打开UtilsDemo.podspec.json文件,添加把SDWebImage添加进去

在Class把haha.h放入,
然后在Example文件夹中执行pod update
如图:

然后将代码commit到git上,push到远程。
我们在要使用此组件的工程中直接指定此分支就可以了。
使用方式见5.2

下面我们要把刚才的test分支代码发布出去,我们把test分支合并到master分支,然后打一个tag名为1.0.0,
并修改UtilsDemo.podspec.json文件中的版本号。

然后更新spec

pod repo push IANSpecs UtilsDemo.podspec.json --verbose --use-libraries --allow-warnings

然后我们就可以按照下面5.1的方式进行使用了。

五、组件化过程中使用私有库

5.1 普通使用

在某个工程中要引入这个私有库,那么我们要打开这个工程的Podfile文件,然后添加上咱们私有库的source地址:

pod install 之后就可以在工程是看到,私有库引用成功了

这里的方法和咱们平时使用的公有库方式一样。

5.2 指定git地址和分支使用

例如现在某业务线在开发新的功能,他修改了UtilsDemo组件的代码,为了不影响主分支的代码,可以指定test分支进行开发并引入使用。我们修改Podfile文件如下:

六、总结

“CocoaPods私有库创建与使用”只是iOS组件化过程中的第一步,如有错误欢迎指正!