老鸟可略过...
仓库源
在Cocoapods 1.7.2版本前, 首次安装还需要初始化好几个GB的仓库源(git方式拉取, 源为github), 拉起速度又慢, 而且改非常大。
后来在1.7.0提出一个实验性方案, 把git方式的仓库源改为CDN方式的仓库源, 最后在1.7.2正式启用。
- 旧的仓库源: 
https://github.com/CocoaPods/Specs.git - 新的仓库源: 
https://cdn.cocoapods.org/ 
Cocoapods相关目录及结构
${用户目录}/.cocoapods/repos/${源仓库名称}# 源仓库git源仓库结构
${三方库名称}/${版本号}/${spec文件}
CDN源仓库结构(主要结构)
all_pods.txt所有库的版本号信息all_pods_versions_${MD5[0]}_${MD5[1]}_${MD5[2]}.txt按MD5(库名称)[0...3]切分文件存储库的版本号信息txt文件每行一个库, 格式${库名称}/${版本号}/${版本号}/...
Podfile&源仓库&三方库关系图

pod update/install的部分简略流程
本地源仓库同步远程源仓库(强烈建议命令后面添加参数--no-repo-update略过这步, 有需要同步再手动更新pod repo update)- 按库的名称在本地源仓库查找合适版本号的
spec(git和CDN的源查找方式不一样) - 根据
spec中的source和其它相关参数下载(git/svn/hg/http)仓库文件(这步之前还有个本地缓存查找的过程) 
库的名字查找spec
git仓库源
- 根据本地目录结构查找
spec文件 
- 根据本地目录结构查找
 CDN仓库源
- 三方库的名称进行
MD5(小写), 结果取前3位字母 - 访问对应的本地文件(
all_pods_versions_${MD5[0]}_${MD5[1]}_${MD5[2]}.txt)查找合适的版本号 - 通过链接
https://cdn.cocoapods.org/Specs/${MD5[0]}_${MD5[1]}_${MD5[2]}/${仓库名}/${版本号}/${仓库名}.podspec.json获取spec文件 
- 三方库的名称进行
 
rust写了个根据podfile.lock检测库是否有新版本的小工具, 里面就是利用CDN仓库源方式查找版本, 有兴趣可以去看看https://github.com/skytoup/PodHelper
源仓库管理命令
pod repo# 列出添加的源pod repo add ${源仓库本地名称} ${源仓库链接}# 添加源pod repo remove ${源仓库本地名称}# 移除源, 也可以直接删除${用户目录}/.cocoapods/repos/${源仓库名称}
相关链接
- 1.7.2更新说明: https://blog.cocoapods.org/CocoaPods-1.7.2/
 - podspec.source doc: https://guides.cocoapods.org/syntax/podspec.html#source