不知道大家有沒有注意到Cocoapods Spec目錄結(jié)構(gòu),如下圖。

1.png
Specs目錄下,并不是直接是以庫的名稱命名的文件夾,而是分了3層目錄,分別以0-f來命名。比如SDWebImage的位置是1/1/7/SDWebImage/0.4.2/SDWebImage.podspec。
其實之前就發(fā)現(xiàn)了這個問題,但是一直沒去想為什么要這樣,它是以哪種方式來確定庫的podspec的位置。
直到今天,有個同事問我,怎么用shell腳本將指定庫的podsepc給拷貝出來。最開始我試了下用find命令,由于specs目錄下的文件太多,查找得出結(jié)果花了好幾秒。然后我開始重新想了下這個問題,料定目錄結(jié)構(gòu)肯定是有規(guī)律的。先是用google搜索一番,沒有相關(guān)的資料。后來又突然想到了MD5,于是把某個庫的名稱做了md5,發(fā)現(xiàn)md5前三位正是其所對應(yīng)的三層目錄,竊喜??。因此,如果有其他庫md5的前三位相同,那么他們就在同一目錄下。
比如SDWebImage的md5是1173B6117A2CF4A6756F761AEDAE9D2C,那么其目錄結(jié)構(gòu)就是1/1/7。
而一般來說,自己創(chuàng)建的私有倉庫的層級是這樣的。
Specs/mylib/0.0.1/mylib.podspec
那為什么要多加幾層目錄呢?猜想可能是Cocoapods中的specs倉庫實在是太大,如果都平級的話,找起來效率不高,并且很麻煩。