有时候,咱们的工程大了,或者引用的外面的工具包,开源jar包或者推送等jar包,开开心心的想集成一下,但是一会儿来了,奔溃了,jar包之间冲突,常见的support-v4包不一样版本之间的冲突。android
gradle提供了能够查看library之间依赖的关系,下面咱们首先先搭环境。app
Android Studio中使用的 gradle 版本通常不是最新版,因此在使用其自带的 Terminal 时容易报版本太低的错误,为了方便使用,我从 gradle
官网下载了最新版的 gradle ,而后配置好 gradle 的环境变量以方便使用。框架
gradle 自己不提供查看 library 依赖关系的命令,幸亏 Android Studio 提供了可供查看的 task ,位于各个 module 的 help 任务堆中,以下图:工具
双击 dependencies 执行该任务,能够看到在 gradle console 中均没有获得依赖关系,结果以下图所示:测试
从上图能够看出不管咱们执行哪一个 module 下的 dependencies 其结果都是至关于在 Root project 执行了该任务;那么在 app project 或者 test01library project 中执行该 dependencies 任务呢?此时就须要咱们经过命令行的方式执行 dependencies 了。gradle
配置好环境后,首先cmd 进入当前你的工程的核心module路径,测试了下:gradle dependencies 在gradle 4.1下没有打印出依赖关系,使用了 gradle -q dependencies 就ok了
spa
因本身搭框架的时候使用了比较多的工具和开源的工具,这儿遇到的冲突时support-v4包的和别的jar包里含有的support-v4冲突了,最后解决方法:命令行
解决包冲突,关键仍是能够看到包之间依赖关系,比较完美解决问题。3d
附:code
gradlew :模块名称:dependencies
或者使用gradle窗口自带dependencies直接看依赖树,能够很好查看包的依赖状况
常常会遇到support包和好比appcompat包下的support包冲突的状况,好比butterknife里面也有support包,通常能够这样处理:
compile ('com.jakewharton:butterknife:8.8.1'){ exclude group: 'com.android.support' }