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

97652-dc9668e045cde3a4.png
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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值