Android依赖冲突的解决方式

github:coolmaye

本篇文章是直观介绍项目依赖冲突时的解决方案

1.依赖类型

implementation:依赖方式仅仅局限于“当前module”,优点增加编译速度,对外隐藏调用接口

api:参与app的编译和打包,是最普遍的依赖方法

compileOnly:参与编译的过程,但不参与最后的打包。在自己的module中依赖一些最常用的库可以避免冲突

runtimeOnly:编译时不参与,对外隐藏所有的接口,只参最后的打包

参考了一部分下面方法
依赖冲突的解决方法

2.依赖冲突时的解决办法

这里分为两个步骤
1.点击Terminal 输入gradlew -q app:dependencies回车即可将app中所依赖的库展示出来(有些项目可能会报 'gradlew’不是内部或外部命令,也不是可运行的程序 这个问题,解决方法是 拷贝其他项目根目录中的gradlewgradlew.bat两个文件到自己的项目中就可以啦)

在这里插入图片描述
2. 在module下的build.gradle的根节点下添加如下代码

    resolutionStrategy {
        failOnVersionConflict()//版本冲突时报错
    }

然后点击右上角 Sync Now 进行同步

这时冲突的版本号就会在Messages页面中弹出,提示有以下版本的库是冲突的

图注:大少公众号
3. 这时我们有两个处理办法
直接统一法 : 将所有出现的版本号统一指定为当前版本

configurations.all {
    resolutionStrategy {
        failOnVersionConflict()//版本冲突时报错
        force 'com.squareup.okio:okio:1.15.0'//强制指定版本
    }
}

当打包时报错的类被处理后,// failOnVersionConflict()该方法,然后重新打包。
移除异己法:选中okio:1.13.0字段回到Terminal中按Ctrl+F搜索该库在哪个依赖中使用,搜索到后,找到build.gradle中的该依赖,将对应的包去除

 implementation ('com.squareup.okhttp3:okhttp:3.9.0'){

        exclude group: 'com.squareup.okio'
 }

重新编译即可发现冲突被解决

4.注意

gradle会用自动采用最新版本库的方法屏蔽掉大部分的冲突问题,但极小部分的(也就是编译时报错的)就需要我们手动去处理了,以上方法是针对于处理打包时报错的相关库,请大家主动对这些库进行排查。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值