AndroidStudio构建项目默认使用的插件是Gradle,然而Gradle默认是支持依赖传递的,那么必然会产生一些问题,比如依赖冲突的问题,为了解决依赖冲突,我们需要先了解Gradle的库依赖管理的几个技术点。
1. Gradle的依赖传递
那什么是依赖传递呢?举一个最简单的例子。
projectC依赖projectB,projectB依赖projectA,那么projectC就依赖了projectA
2 Gradle的依赖检查
使用Gradle的命令行,执行gradle :app:dependencies即可(需在项目根目录下,会生成类似下面的目录结构)
| +--- androidx.fragment:fragment:1.0.0
| | +--- androidx.core:core:1.0.0 -> 1.0.1 (*)
| | +--- androidx.legacy:legacy-support-core-ui:1.0.0
| | | +--- androidx.annotation:annotation:1.0.0
| | | +--- androidx.core:core:1.0.0 -> 1.0.1 (*)
| | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
| | | +--- androidx.customview:customview:1.0.0
| | | | +--- androidx.annotation:annotation:1.0.0
| | | | \--- androidx.core:core:1.0.0 -> 1.0.1 (*)
3 解决Gradle的依赖冲突
1)force 强制使用某个版本的库
强制使用2.1.0版本的库:configurations.all {
resolutionStrategy {
force 'com.squareup.okio:okio:2.1.0'
}
}
2)transitive关闭依赖传递
implementation ('com.squareup.retrofit2:retrofit:2.6.0') {
transitive false
}
3)exclude排除某项库
configurations {
all*.exclude group: 'com.android.support', module: 'support-annotations'
}