依赖冲突时的解决方法

栏目: IOS · Android · 发布时间: 5年前

内容简介:***implementation:***依赖方式仅仅局限于“当前module”,优点增加编译速度,对外隐藏调用接口***api:***参与app的编译和打包,是最普遍的依赖方法***compileOnly:***参与编译的过程,但不参与最后的打包。 在自己的module中依赖一些最常用的库可以避免冲突 ***runtimeOnly:***编译时不参与,对外隐藏所有的接口,只参最后的打包

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Scrum精髓

Scrum精髓

Kenneth Rubin / 姜信宝、米全喜、左洪斌、(审校)徐毅 / 清华大学出版社 / 2014-6-1 / CNY 79.00

短短几年时间,Scrum跃升为敏捷首选方法,在全球各地得以普遍应用。针对如何用好、用巧这个看似简单的框架,本书以通俗易懂的语言、条理清晰的脉络阐述和提炼出Scrum的精髓。全书共4部分23章,阐述了七大核心概念:Scrum框架,敏捷原则,冲刺,需求和用户故事,产品列表,估算与速率,技术债;三大角色:产品负责人,ScrumMaster,开发团队以及Scrum团队构成:Scrum规划原则及四大规划活动......一起来看看 《Scrum精髓》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试