記錄一個(gè)CocoaPods組件庫依賴問題

CocoaPods

公司某iOS App,下屬有幾個(gè)組件。簡(jiǎn)單稱之為:Platform平臺(tái)組件、Business業(yè)務(wù)組件(A, B)...。問題發(fā)生在組件lint的時(shí)候,發(fā)現(xiàn)業(yè)務(wù)BusinessA依賴的Platform組件是1周之前的版本,并不是最新版本; 但是B確是依賴的Platform組件的最新版本。

Platform組件的依賴

  s.dependency 'JSONModel'
  s.dependency 'FMDB'
  s.dependency 'CocoaLumberjack'
  s.dependency 'MJRefresh'
  s.dependency 'SDWebImage', '4.4.6'
  ...

A 組件的依賴

  s.dependency 'SDWebImage'
  s.dependency 'JSONModel'
  s.dependency 'MJRefresh'
  
  s.dependency 'Platform'

B 組件的依賴

  s.dependency 'MD5Digest'
  s.dependency 'NSDate-Extensions'
  s.dependency 'NSString-Hashes'
  
  s.dependency 'Platform'

通過在CocoaPods中打印日志,發(fā)現(xiàn)都可以獲取的最新Platform版本;但是在下載組件的時(shí)候,確實(shí)是下載的版本。
由于水平不夠,沒有能通過CocoaPods找出問題所在,故多次對(duì)比podspec文件。發(fā)現(xiàn)一個(gè)問題:“A組件依賴庫跟Platform有相同內(nèi)容,但是版本不同”!會(huì)不會(huì)是這個(gè)原因引起的呢?

做了幾個(gè)簡(jiǎn)單測(cè)試:

  1. 刪除A組件中的Platform中相同的依賴。。解決問題,繼續(xù)測(cè)試。
  2. 去掉A組件中的SDWebImage依賴。解決問題
  3. 固定A組件中的SDWebImage版本跟UCARPlatform。解決問題

通過以上幾個(gè)測(cè)試,發(fā)現(xiàn)問題在于組件之間如果有相同依賴,并且版本不同(或者沒有固定版本)的情況,CocoaPods會(huì)比較智能的查找組件的不同版本,直到找到一個(gè)相同庫的依賴的版本相同的版本為止。并選擇這個(gè)版本來進(jìn)行l(wèi)int。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容