不知道大家有没有注意到Cocoapods Spec目录结构,如下图。
Specs目录下,并不是直接是以库的名称命名的文件夹,而是分了3层目录,分别以0-f来命名。比如SDWebImage的位置是1/1/7/SDWebImage/0.4.2/SDWebImage.podspec。
其实之前就发现了这个问题,但是一直没去想为什么要这样,它是以哪种方式来确定库的podspec的位置。
直到今天,有个同事问我,怎么用shell脚本将指定库的podsepc给拷贝出来。最开始我试了下用find命令,由于specs目录下的文件太多,查找得出结果花了好几秒。然后我开始重新想了下这个问题,料定目录结构肯定是有规律的。先是用google搜索一番,没有相关的资料。后来又突然想到了MD5,于是把某个库的名称做了md5,发现md5前三位
正是其所对应的三层目录,窃喜😋。因此,如果有其他库md5的前三位相同,那么他们就在同一目录下。
比如SDWebImage的md5是1173B6117A2CF4A6756F761AEDAE9D2C
,那么其目录结构就是1/1/7。
而一般来说,自己创建的私有仓库的层级是这样的。
Specs/mylib/0.0.1/mylib.podspec
那为什么要多加几层目录呢?猜想可能是Cocoapods中的specs仓库实在是太大,如果都平级的话,找起来效率不高,并且很麻烦。