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组件化过程中的第一步,如有错误欢迎指正!
参与讨论