不删除Jar包解决包冲突

 

一、你的build.gradle 里面只有一个依赖引用了冲突包(一般情况是要么多个依赖引用了冲突包或者是依赖的Module包含了冲突包)

首先做一个演示测试,在我的空项目里面导入:

implementation 'com.squareup.retrofit2:retrofit:2.3.0'

然后编译成功之后去查看我的External Libraries

就能看到多了几个以下jar包:

然后我在app 的builde.gradle 里面对依赖进行注释,就能不引入retrofit导入的okio包:

implementation ('com.squareup.retrofit2:retrofit:2.3.0'){
    exclude group:'com.squareup.okio'
}

编译通过之后,就看到okio包不见了,效果如下:

总结,其实上面介绍内容也可以理解为exclude的使用。

 

二、当前buile.gradle 存在导入的多个依赖里面包含了冲突包或者说是依赖的Module存在引用了该冲突包:

我遇到的问题描述:我的项目里面引入了:

//Retrofit
compile 'com.squareup.retrofit2:retrofit:2.3.0'

//httpLogger  interceptor
compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'

//Retrofit与RxJava结合使用的适配器
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'

上面这个照片是我从app的dependencies里面拿的,至于怎么拿请看我另一个blog(https://blog.csdn.net/qq_34723470/article/details/103869313),可以看到我导入的三个依赖里面其实是项目已经存在引用的,比如rxJava2里面引用了retrofit,retrofit里面引用了Okhttp3,okhttp3里面引用了okio,而interceptor 里面引用了okhttp3,但是即使是这样,我的项目依然正常运行和打包。因为他们引入的包的版本号是一致的,所以没有出现jar包冲突问题。

但是,我有一天接到一个需求变动,这个需求变动是一个公司必须让我集成他们写的Module,这个module里面也用到了okio,但是他的版本跟我的版本(上图里面的 okio:1.13.0)不一致,他的是


然后我的项目可以正常运行,但是一打包就出现了jar包冲突,冲突提示的很清楚是okio jar包冲突。因为我这里自己的app builde.gradle 里面不止一个地方引用了okio(我上面解释过了,三个地方用到了),所以我在三个compile后面都用了exclude ,然后这样没有用,我不知道是为什么,但是我从网上学到了直接用“全部干掉”的办法,直接声明全部统一exclude 掉okio,这样就可以正常解决jar包冲突了。对app 的builde.gradle 进行修改 如下:

android{

*****

allprojects {

*****

configurations {

      all*.exclude group:'com.squareup.okio'

    }

            }

}

 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值