iOS 元件化開發(二):遠端私有庫的更新與子庫

LinXunFeng發表於2018-04-05

在上一篇【iOS 元件化開發(一):遠端私有庫的基本使用】中我們已經實戰了遠端私有庫的基本操作,但是元件不可能上傳一次就完事了,隨著業務的增加,我們的元件可能還需要新增更多的東西,或者修復一些問題,這就需要我們對私有庫程式碼進行升級與維護

這裡以對基礎元件裡新增了一個Cache工具為例

新增Cache工具

新增完成後我們需要更新到遠端倉庫

一、更新遠端倉庫

cd 到本地倉庫的位置,執行以下操作

1、程式碼更新

git add .
git commit -m '更新描述'
git push origin master
複製程式碼

程式碼升級

2、版本更新

版本更新 這一步非常重要,為更新索引庫做準備

git tag -a '新版本號' -m '註釋'
git push --tags
複製程式碼

版本升級

檢視遠端倉庫,標籤數已經有2個了,點進去就可以看到0.2.0,這裡我們就不去看了

iOS 元件化開發(二):遠端私有庫的更新與子庫

二、修改描述檔案並更新索引庫

1、修改Sepc

開啟你的xx.podspec檔案,將原本的版本號改為0.2.0,與剛剛的tag保持一致

 s.version = '0.2.0'
複製程式碼

2、驗證遠端Spec

pod spec lint --private
複製程式碼

驗證遠端Spec

3、更新索引庫

pod repo push 索引庫名稱 xxx.podspec
複製程式碼

更新索引庫

三、更新使用

// --no-repo-update 不更新本地索引庫
// 因為剛剛已經自己手動更新過了,所以這裡我們選擇跳過更新
pod update --no-repo-update
複製程式碼

更新框架

更新成功


四、第三方依賴

當我們的私有庫需要依賴其它第三方才可以正常使用時,我們就需要在spec檔案中開啟依賴,例如下面所示程式碼,表明當前倉庫需要依賴AFN和SDWebImage

s.dependency 'AFNetworking', '~> 3.2.0'
s.dependency 'SDWebImage', '~> 4.3.3'
複製程式碼

修改後更新操作同上所述,這裡就不再贅述了。

但是這裡存在一個問題,如果來了一位新的小夥伴,他所負責的部分只需要LXFBase下的Category,而LXFBase下的Cache才需要依賴SDWebImage,此時他若是pod一整個LXFBase豈不是平白無故安裝了第三方依賴庫,那應該怎麼做呢?

方案就是可以通過子庫Subspecs來解決因需要一個小小的工具而依賴整個基礎元件的問題

五、子庫Subspecs

什麼是Subspecs?這裡我們可以搜尋一下SDWebImage

pod search 'SDWebImage'
複製程式碼

Subspecs

可以看到,如果我們只需要用到SDWebImage中的GIF功能,那麼並不需要將整個SDWebImage都下載下來,在Podfile中將~~pod 'SDWebImage'~~ 改為 pod SDWebImage/GIF即可單獨使用這一功能

那接下來我們就來看看怎麼描述一個子庫吧

子庫格式

s.subspec '子庫名稱' do |別名|

end
複製程式碼

因為這裡已經分離出子庫了,所以s.source_filess.dependency就不能這麼使用了,需要我們在子庫裡分別指定,所以我們直接把原來的s.source_filess.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'
複製程式碼

subspec新增成功

現在就可以愛裝哪個就裝哪個了,在Podfile中指定要安裝的子庫就行了

pod 'LXFBase/Cache'
複製程式碼
pod install
複製程式碼

安裝指定子庫與依賴庫

相關文章