使用CocoaPods是怎么把三方库下载到本地的?

这里我们以我们比较常用的MJRefresh作为示例。

Paste_Image.png

首先来了解一下当前图中A~G的这几部分分别是什么。
A:
A代表的是MJRefresh的本地源码。

B:
B代表的是,MJRefresh所对应的git的远程公开仓库

C:
C代表的是MJRefrsh描述文件<.podspec>,描述文件包含框架的名称,代码存放的远程仓库位置,版本号,等等

Paste_Image.png

主要内容如下:
Paste_Image.png

相关字段的含义可以参考CocoaPods的官网的<a href="http://guides.cocoapods.org/syntax/podspec.html#group_root_specification">PodSpec语法</a>

D:
D代表的是CocoaPods的远程spec的索引列表仓库,也就是说所有能够通过CocoaPods集成到项目中的三方库的描述文件都在这个远程仓库中。
CocoaPods/Specs

Paste_Image.png

E:
E代表的是将D的远程仓库下载到本地的本地仓库

Paste_Image.png

可以随便搜索一个三方库,都能在Spec中找到他的所有的版本的描述
Paste_Image.png

Paste_Image.png

F:
F代表的就是当前我们正在写的项目,通过配置Podfile文件进行集成相关的三方库。

G:
G的场景是这样的,执行pod search 某某某的时候是去查询某一个三方库的相关的信息。而在你执行这句话的时候,会在本地生成一个本地的查询缓存。

Paste_Image.png

而且在这里你可以找到你已经安装过的三方库的源码。


Paste_Image.png

总结一下,我们是怎么将MJRefresh干到本地来的。
1、三方库开发者将自己的框架代码从本地编写完毕之后上传到公开的仓库中
2、三方库开发者在本地生成一个.podspec文件,修改.podspec文件,将框架的名称,远程仓库地址,版本之类的相关信息和框架一一对应。
3、三方库开发者将.podspec文件上传到CocoaPodsspec远程仓库中。
4、开发者将CocoaPodsspec远程仓库同步到本地
5、开发者通过对Podfile文件配置<例如:pod 'MJRefresh', '~> 3.1.12'>,进行pod install 进行安装相关需要的三方库。这个时候就会找到本地的spec中的相应版本的MJRefresh.podspec文件,然后再根据MJRefresh.podspec中的相关配置进行下载配置到项目中

如有失误请各位路过大神即时指点,或有更好的做法,也请指点一二,在下感激不尽。

推荐阅读更多精彩内容