在上一篇【iOS 組件化開發(一):遠程私有庫的基本使用】中咱們已經實戰了遠程私有庫的基本操做,可是組件不可能上傳一次就完事了,隨着業務的增長,咱們的組件可能還須要添加更多的東西,或者修復一些問題,這就須要咱們對私有庫代碼進行升級與維護git
這裏以對基礎組件裏添加了一個Cache工具爲例bash
添加完成後咱們須要更新到遠程倉庫微信
cd 到本地倉庫的位置,執行如下操做框架
git add .
git commit -m '更新描述'
git push origin master
複製代碼
版本更新 這一步很是重要,爲更新索引庫作準備工具
git tag -a '新版本號' -m '註釋'
git push --tags
複製代碼
查看遠程倉庫,標籤數已經有2個了,點進去就能夠看到0.2.0,這裏咱們就不去看了 組件化
打開你的xx.podspec
文件,將本來的版本號改成0.2.0
,與剛剛的tag保持一致post
s.version = '0.2.0'
複製代碼
pod spec lint --private
複製代碼
pod repo push 索引庫名稱 xxx.podspec
複製代碼
// --no-repo-update 不更新本地索引庫
// 由於剛剛已經本身手動更新過了,因此這裏咱們選擇跳過更新
pod update --no-repo-update
複製代碼
當咱們的私有庫須要依賴其它第三方纔能夠正常使用時,咱們就須要在spec文件中開啓依賴,例以下面所示代碼,代表當前倉庫須要依賴AFN和SDWebImagespa
s.dependency 'AFNetworking', '~> 3.2.0'
s.dependency 'SDWebImage', '~> 4.3.3'
複製代碼
修改後更新操做同上所述,這裏就再也不贅述了。3d
可是這裏存在一個問題,若是來了一位新的小夥伴,他所負責的部分只須要LXFBase下的Category,而LXFBase下的Cache才須要依賴SDWebImage,此時他如果pod一整個LXFBase豈不是無緣無故安裝了第三方依賴庫,那應該怎麼作呢?code
方案就是能夠經過子庫Subspecs來解決因須要一個小小的工具而依賴整個基礎組件的問題
什麼是Subspecs?這裏咱們能夠搜索一下SDWebImage
pod search 'SDWebImage'
複製代碼
能夠看到,若是咱們只須要用到SDWebImage中的GIF功能,那麼並不須要將整個SDWebImage都下載下來,在Podfile中將~~pod 'SDWebImage'
~~ 改成 pod SDWebImage/GIF
便可單獨使用這一功能
那接下來咱們就來看看怎麼描述一個子庫吧
s.subspec '子庫名稱' do |別名|
end
複製代碼
由於這裏已經分離出子庫了,因此s.source_files
和s.dependency
就不能這麼使用了,須要咱們在子庫裏分別指定,因此咱們直接把原來的s.source_files
和s.dependency
都註釋掉。寫法參考以下
# s.source_files = 'LXFBase/Classes/**/*'
# s.dependency 'SDWebImage', '~> 4.3.3'
s.subspec 'Cache' do |c|
c.source_files = 'LXFBase/Classes/Cache/**/*'
c.dependency 'SDWebImage', '~> 4.3.3'
end
s.subspec 'Category' do |c|
c.source_files = 'LXFBase/Classes/Category/**/*'
end
s.subspec 'Tool' do |t|
t.source_files = 'LXFBase/Classes/Tool/**/*'
end
複製代碼
修改後再按以前的步驟更新索引庫和組件庫就能夠了
ps: 在添加第三方依賴描述後作驗證或者上傳操做可能會很慢,由於它在克隆第三方庫如SDWebImage,有興趣的能夠在命令後面加入--verbose
來查看詳情狀況
pod spec lint --private --verbose
複製代碼
在成功更新組件庫和索引庫後咱們再來搜索一下試試
pod search 'LXFBase'
複製代碼
如今就能夠愛裝哪一個就裝哪一個了,在Podfile中指定要安裝的子庫就好了
pod 'LXFBase/Cache'
複製代碼
pod install
複製代碼