Android 库依赖冲突

问题描述android

咱们项目找常常常常看到库依赖冲突,例以下面的编译日志:git

FAILURE: Build failed with an exception.github

* What went wrong:
Execution failed for task ':app:preDebugBuild'.
> Android dependency 'com.android.support:recyclerview-v7' has different version for the compile (25.3.1) and runtime (27.0.1) classpath. You should manually set the same version via DependencyResolutionapp

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.gradle

编译日志告诉咱们,项目中依赖了 recyclerview-v7 的两个版本, 25.3.1 和 27.0.1 ,两个版本产生冲突。
查找依赖ui

经过 gradlew dependencies 能够查找是哪一个库依赖了这两个不一样 reycclerview版本。spa

在工程根目录执行以下命令:debug

gradlew dependencies > diagnose.txt日志

命令会将工程的依赖树输出到文件中,执行完成后咱们能够在项目根目录发现 diagnose.txt ,
下面是一段文件的部份内容ci

+--- project :lib
\--- com.lzy.widget:imagepicker:+ -> 0.6.1
     +--- com.android.support:appcompat-v7:25.3.1 -> 27.1.1 (*)
     +--- com.android.support:recyclerview-v7:25.3.1
     |    +--- com.android.support:support-annotations:25.3.1 -> 27.1.1
     |    +--- com.android.support:support-compat:25.3.1 -> 27.1.1 (*)
     |    \--- com.android.support:support-core-ui:25.3.1 -> 27.1.1 (*)
     \--- com.github.chrisbanes.photoview:library:1.2.4
          \--- com.android.support:support-v4:22.0.0
               \--- com.android.support:support-annotations:22.0.0 -> 27.1.1

 

能够看到 com.lzy.widget:imagepicker:+ 依赖了 com.android.support:recyclerview-v7:25.3.1 与工程其余地方的依赖冲突。
解决冲突

能够在app模块中,指定一个 recyclerview 版本。在app模块的 build.gradle 添加以下依赖

dependencies {
   //省略
   implementation 'com.android.support:recyclerview-v7:27.0.1'
}

另外

在提供库,能够把 support 包从 implementation 改成 compileOnly,这样方便使用  

相关文章
相关标签/搜索