android 解决依赖冲突
16lz
2021-01-25
查看依赖详情
方法一
// 查看依赖关系gradle dependencies// 查看指定module依赖关系: app可以替换成想要查看的modulegradle -q app:dependencies// 将输出信息保存到文件gradle dependencies >log.txt// 查看 compile 时的依赖关系gradle dependencies --configuration compile// 查看依赖关系类型gradle dependencies --info
方法二
// 在项目根目录下build.gradle中添加subprojects { task allDeps(type: DependencyReportTask) {}}// 在terminal里输入./gradlew allDeps
依赖分析
编译报错
Android dependency 'com.android.support:recyclerview-v7' has different version for the compile (27.1.0) and runtime (27.1.1) classpath. You should manually set the same version via DependencyResolution
可以看到是recyclerView冲突了, 打印下module依赖树, 输出到log.txt文件(项目根目录)
gradle -q app_test:dependencies >log.txt
查找下recyclerview
+--- project :comm_base| +--- com.billy.android:cc:1.1.0 (*)| +--- android.arch.lifecycle:extensions:1.1.0| | +--- android.arch.lifecycle:runtime:1.1.0 -> 1.1.1 (*)| | +--- android.arch.core:common:1.1.0 -> 1.1.1 (*)| | +--- android.arch.core:runtime:1.1.0 -> 1.1.1 (*)| | +--- com.android.support:support-fragment:26.1.0 -> 27.1.1 (*)| | +--- android.arch.lifecycle:common:1.1.0 -> 1.1.1 (*)| | +--- android.arch.lifecycle:livedata:1.1.0 -> 1.1.1| | | +--- android.arch.core:runtime:1.1.1 (*)| | | +--- android.arch.lifecycle:livedata-core:1.1.1 (*)| | | \--- android.arch.core:common:1.1.1 (*)| | \--- android.arch.lifecycle:viewmodel:1.1.0 (*)| +--- android.arch.persistence.room:runtime:1.1.1| | +--- android.arch.persistence.room:common:1.1.1| | | \--- com.android.support:support-annotations:26.1.0 -> 27.1.1| | +--- android.arch.persistence:db-framework:1.1.1| | | +--- com.android.support:support-annotations:26.1.0 -> 27.1.1| | | \--- android.arch.persistence:db:1.1.1| | | \--- com.android.support:support-annotations:26.1.0 -> 27.1.1| | +--- android.arch.persistence:db:1.1.1 (*)| | +--- android.arch.core:runtime:1.1.1 (*)| | \--- com.android.support:support-core-utils:26.1.0 -> 27.1.1 (*)| +--- android.arch.paging:runtime:1.0.0| | +--- android.arch.core:runtime:1.1.1 (*)| | +--- android.arch.paging:common:1.0.0| | | +--- com.android.support:support-annotations:26.1.0 -> 27.1.1| | | \--- android.arch.core:common:1.1.1 (*)| | +--- android.arch.lifecycle:runtime:1.1.1 (*)| | +--- android.arch.lifecycle:livedata:1.1.1 (*)| | \--- com.android.support:recyclerview-v7:27.1.0 -> 27.1.1| | +--- com.android.support:support-annotations:27.1.1| | +--- com.android.support:support-compat:27.1.1 (*)| | \--- com.android.support:support-core-ui:27.1.1 (*)
仔细观察你会发现有些传递依赖标注了*号,表示这个依赖被忽略了,这是因为其他顶级依赖中也依赖了这个传递的依赖,Gradle会自动分析下载最合适的依赖
分析冲突
// comm_base: pagingcom.android.support:recyclerview-v7:27.1.0 -> 27.1.1可以看到, recyclerview版本有冲突, 27.1.0 -> 27.1.1, 但是没有*号, 说明了顶级依赖是27.1.1, 当前依赖是27.1.0, 但是没有27.1.1的依赖传递所以解决办法是在当前module中添加27.1.1的依赖, 或者在comm_base中, recyclerview的依赖方式修改成api, 进行依赖传递
解决冲突
方法一: 直接过滤掉
androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.1'){ exclude group : 'com.android.support' , module : 'support-v4' exclude module : 'recyclerview-v7'}// 过滤所有support包compile ('cn.qqtheme.framework:WheelPicker:1.5.1'){ exclude group:'com.android.support'}// 过滤moduleimplementation (project(':comm_base')) { exclude group:'com.android.support'}
方法二: 全局配置(测试没效果)
configurations.all { resolutionStrategy { force 'com.android.support:support-v4:25.1.1' } resolutionStrategy { force 'com.android.support:recyclerview-v7:25.0.0' }}
更多相关文章
- 我的android——OpenGL(2)——gl10方法解析
- android GBK转UTF-8出现乱码问题解决方法
- 解决升级 Android(安卓)Studio 3.6.1 后无法运行 Java 代码的问
- Android(安卓)project 的常用编译方法
- android修改虚拟内存(方法)
- android中重写onConfigurationChanged方法响应系统设置更改
- Android解析网页响应xml格式文件的一种方法
- Android(安卓)2.3及以上版本支持自定义的ttf字体的方法
- Android音量调节原理