使用CocoaPods引入第三方库依赖冲突

问题描述

  • 最近初期就引入了pod ‘MBProgressHUD’, ‘~> 1.0.0’最新的版本,后面由于项目需求需要用到其他第三方库,但当前库中又依赖了MBProgressHUD而且制定了版本号为:0.9.X系列的版本库,这时pod install时就会出现提示
    这里写图片描述

    注意:上面提示应该还会有一条说你当前Podfile.lock中已经把MBProgressHUD锁定到1.0.0版本了,这个是我演示的截图,由于我解决的时候update的时候已经把Podfile.lock文件更新了

  • 之前用maven,gradle时也遇到过这种问题,但是CocoaPods之前还未遇到这种情况,Google后发现相关的资料基本没有,好吧自己琢磨下

解决依赖冲突问题

  • 首先MBProgressHUD1.0.0跟0.9.X版本API部分有改动,所以最好的方法是去看第三方库有没有进行相应的升级
  • 先查找需要使用的第三方库有对依赖库进行升级,发现最新版本中的MBProgressHUD使用的最高版本也才0.9.2
  • 这条路不通只能对项目中依赖进行降级处理,拿AFNetworking做说明吧

pod ‘AFNetworking’ //不显式指定依赖库版本,表示每次都获取最新版本
pod ‘AFNetworking’, ‘2.0’ //只使用2.0版本
pod ‘AFNetworking’, ‘> 2.0’ //使用高于2.0的版本
pod ‘AFNetworking’, ‘>= 2.0’ //使用大于或等于2.0的版本
pod ‘AFNetworking’, ‘< 2.0’ //使用小于2.0的版本
pod ‘AFNetworking’, ‘<= 2.0’ //使用小于或等于2.0的版本
pod ‘AFNetworking’, ‘~> 0.1.2’ //使用大于等于0.1.2但小于0.2的版本
pod ‘AFNetworking’, ‘~>0.1’ //使用大于等于0.1但小于1.0的版本
pod ‘AFNetworking’, ‘~>0’ //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

  • 把项目中的Podfile中改为pod ‘MBProgressHUD’, ‘>= 0.9’
  • 由于对Podfile中原有的依赖做了修改,而Podfile.lock中记录了上一次pod install的锁定信息,所以在次install时会被告知冲突错误,所以先pod update,最好加上(–verbose –no-repo-update),在install这时在查看项目的依赖库,MBProgressHUD降为0.9.2了
    使用CocoaPods引入第三方库依赖冲突_第1张图片

  • 当然最后还需要把项目中MBProgressHUD使用的API存在变化的地方修改过来,建议大家以后依赖第三方库的时候都自己做一层封装,降低第三方库的耦合性,这样如果第三方库有大版本升级或API变化只需要在一个地方做处理

你可能感兴趣的:(ios开发)