第三方庫製作本地鏡像步驟如下:(以 SDWebImage 4.2.3 為例)
1、找到 SDWebImage 4.2.3 對應的源碼以及索引
方法有兩種 :
- 通過本地緩存查找,終端執行 pod cache list,找到 SDWebImage 的本地緩存路徑,Spec 對應的代碼路徑,Spec 對應的是索引路徑。
SDWebImage:
- Version: 4.2.3
Type: Release
Spec: /Users/vivien/Library/Caches/CocoaPods/Pods/Specs/Release/SDWebImage/4.2.podspec.json
Pod: /Users/vivien/Library/Caches/CocoaPods/Pods/Release/SDWebImage/4.2.3-eec50
- 通過GitHub搜索,找到對應的tag, 找到 代碼和索引
2、在 自制索引庫(pods-specs)中添加 索引
索引有兩種類型 ***.spec 或 ***.podspec.json
在索引庫根目錄(Spec/)中創建兩級目錄,第一級是庫名,第二級是版本號,將找到的索引文件命名為“庫名.podspec”或“庫名.podspec.json”,是否加.json取決於索引文件是否是json文件,將索引文件copy到二級目錄下。
修改配置文件中“source”字段
去掉 tag 字段
原來的
"source": {
"git": "https://github.com/SDWebImage/SDWebImage.git",
"tag": "4.2.3"
}
修改後
"source": {
"http": "http://xxx/vivien/pods-mirror/raw/master/Release/SDWebImage/4.2.3.zip"
}
3\
3、在 自制第三方鏡像庫(pods-mirror)
在鏡像庫根目錄(Release/)中創建一級目錄,庫名目錄,將源碼copy到該目錄下。
源碼壓縮成zip文件,修改zip文件名稱為 ”版本號.zip“,該zip問價解壓後就是索引文件中sourcefile字段指向的根目錄。
刪除源代碼,只留zip包。
4、索引庫和鏡像庫提交代碼。在工程的Podfile中添加 source 源
source 'ssh://git@xxx/vivien/pods-specs.git'
執行
pod repo update
pod install 或 pod update
5、在已有鏡像庫的基礎上增加某個庫的版本,只需要在原路徑下增加索引文件和zip包即可。
注意事項:
如果pod install 之後發現沒有導入任何文件,此時需要檢查對應庫的索引文件中 sourcefile 字段是否能夠匹配到 zip 包解壓後的文件,一般都是路徑不匹配導致的。
某些特殊庫不適合採用此方式製作鏡像,比如 RN 的依賴庫 glog / Folly / DoubleConversion,配置文件中帶有 prepare_command 命名,需要依賴原倉庫執行一些腳本。
這種情況製作鏡像需要將原倉庫 copy 一份到內網,同樣修改 podspec 文件中的 source 字段,指向內網倉庫地址即可。
這種方式製作的鏡像 每個庫都需要創建一個倉庫,太浪費資源,不建議使用。