博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
依赖冲突时的解决方法
阅读量:5978 次
发布时间:2019-06-20

本文共 1097 字,大约阅读时间需要 3 分钟。

github: 这篇文章是简单介绍项目的依赖和依赖冲突时的解决方法

依赖类型

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

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

***compileOnly:***参与编译的过程,但不参与最后的打包。 在自己的module中依赖一些最常用的库可以避免冲突 ***runtimeOnly:***编译时不参与,对外隐藏所有的接口,只参最后的打包

参考下面方法

依赖冲突时的解决办法

将两种方式结合,亲测绝对有效

1.点击Terminal 输入gradlew -q app:dependencies回车即可将app中所依赖的库展示出来

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

转载于:https://juejin.im/post/5c6bd107e51d453aaa1d17de

你可能感兴趣的文章
在js中获取<input>中的value
查看>>
IOS报错:Unexpected ‘@’ in program
查看>>
hdu 5511 Minimum Cut-Cut——分类讨论思想+线段树合并
查看>>
「shell」替代rm,放入回收站
查看>>
用两个栈创建队列
查看>>
运行python-thrift的DEMO
查看>>
CSS将样式规则与HTML元素相关联
查看>>
BZOJ 3930 [CQOI2015]选数
查看>>
Python - - 项目实战 -- pygame 快速入门
查看>>
F - The Circumference of the Circle
查看>>
IBM X3650 M3服务器上RAID配置实战
查看>>
八、IO优化(1)磁盘簇
查看>>
Win2012R2 VDI RemoteFX Grid K2测试
查看>>
LoadRunner如何和jenkins结合使用
查看>>
c#读写文件:概述
查看>>
iptables 运行逻辑及-I -A 参数解析
查看>>
zabbix企业应用之监控Netscaler
查看>>
Incredible StartPage
查看>>
广播通信
查看>>
绑定到异步的ObservableCollection
查看>>