记录一个CocoaPods组件库依赖问题

CocoaPods

公司某iOS App,下属有几个组件。简单称之为:Platform平台组件、Business业务组件(A, B)...。问题发生在组件lint的时候,发现业务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中打印日志,发现都可以获取的最新Platform版本;但是在下载组件的时候,确实是下载的版本。
由于水平不够,没有能通过CocoaPods找出问题所在,故多次对比podspec文件。发现一个问题:“A组件依赖库跟Platform有相同内容,但是版本不同”!会不会是这个原因引起的呢?

做了几个简单测试:

  1. 删除A组件中的Platform中相同的依赖。。解决问题,继续测试。
  2. 去掉A组件中的SDWebImage依赖。解决问题
  3. 固定A组件中的SDWebImage版本跟UCARPlatform。解决问题

通过以上几个测试,发现问题在于组件之间如果有相同依赖,并且版本不同(或者没有固定版本)的情况,CocoaPods会比较智能的查找组件的不同版本,直到找到一个相同库的依赖的版本相同的版本为止。并选择这个版本来进行lint。

你可能感兴趣的:(记录一个CocoaPods组件库依赖问题)