转载请注明出处:
http://www.jianshu.com/p/8f61a7749855
作者:纪小衰
当我们每天使用cocoaPods的时候,我们把自己的源码放入到git上面时,是否想过让我们自己编写的代码支持cocoapods。这样可以让更多的人使用我们编写的代码,也可以让自己编写的类库可以很方便地导入和同步。
这篇文章主要介绍一些有关搭建cocoaPods私有仓库的理论,对于具体怎样搭建可以参照我的另一篇文章:《创建cocoaPods私有仓库》
当我们使用pod install命令的时候,为什么可以直接把代码或者资源直接导入到我们的工程的呢。其实在我们的本地有目前支持cocoapods所有项目的信息,我们可以打开~/.cocoapods/repos/Specs目录,目录里面有很多的文件夹(加载的速度有可能有点慢)。在这些文件夹中我们可以找到大名鼎鼎的AFNetworking,进入文件夹我们可以看到很多的版本号,我们进入最新的3.1.0,进入后会发现有一个AFNetworking.podspec.json文件,这是一个json格式的文件,打开后看到下面的代码。
我们可以很清楚的看到有关AFNetworking的信息,比如git地址,开源协议,简介等。有了这些数据cocopod就可以找到需要同步的资源的位置。在Specs文件夹下的所有索引信息其实都是从cocoapods的官方git主分支https://github.com/CocoaPods/Specs上同步下来的。整个cocoapods的运作过程可以参照下图。
其实制作cocoapods仓库的步骤无非就两步:
1.制作podspec索引文件,文件中放入需要同步的资源的git或者svn地址;
2.把制作的podspec索引文件推到官方的git远程主分支上。
如果我们的库是新建的,那么别的使用者的本地分支上是没有对应的.podspec.json文件的,也就相应获取不到。这个时候使用者需要使用下面的命令去远程重新获取更新本地分支。
pod repo update
Tips:
1.想同步自己的项目到cocoapods,必须把自己的资源储存到git或者svn的服务器上。在制作podspec文件时填写对应的数据源。
s.source = { :git => "git地址"}
s.source = { :svn => "svn地址"}
2.其实我们也可以不用cocoaPods的specs主分支,如果是一个较为大型的公司,可以考虑创建自己公司的specs私有分支,也就是说我们把podspec索引文件推到私有的git服务器上,使用者更新本地分支的时候拉取私有的specs仓库,这样可以让公司的所有代码统一管理。详细的介绍过段时间再更新吧。。。