github:coolmayejava
本篇文章是直观介绍项目依赖冲突时的解决方案git
implementation:依赖方式仅仅局限于“当前module”,优势增长编译速度,对外隐藏调用接口github
api:参与app的编译和打包,是最广泛的依赖方法api
compileOnly:参与编译的过程,但不参与最后的打包。在本身的module中依赖一些最经常使用的库能够避免冲突app
runtimeOnly:编译时不参与,对外隐藏全部的接口,只参最后的打包gradle
参考了一部分下面方法 依赖冲突的解决方法ui
这里分为两个步骤spa
1.点击Terminal 输入gradlew -q app:dependencies
回车便可将app中所依赖的库展现出来(有些项目可能会报 'gradlew'不是内部或外部命令,也不是可运行的程序 这个问题,解决方法是 拷贝其余项目根目录中的gradlew
和 gradlew.bat
两个文件到本身的项目中就能够啦).net
2.在module
下的build.gradle
的根节点下添加以下代码code
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会用自动采用最新版本库的方法屏蔽掉大部分的冲突问题,但极小部分的(也就是编译时报错的)就须要咱们手动去处理了,以上方法是针对于处理打包时报错的相关库,请你们主动对这些库进行排查。