美文网首页程序员
Android support库版本冲突分析与解决

Android support库版本冲突分析与解决

作者: Star丶Xing | 来源:发表于2019-10-29 15:12 被阅读0次

    问题描述

    我们项目找经常经常看到库依赖冲突,例如下面的编译日志:

    FAILURE: Build failed with an exception.
    
    * 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 DependencyResolution
    
    * 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.
    

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

    查找依赖

    通过 gradlew dependencies 可以查找是哪个库依赖了这两个不同 reycclerview版本。

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

    gradlew dependencies > diagnose.txt
    

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

    +--- 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,这样方便使用

    相关文章

      网友评论

        本文标题:Android support库版本冲突分析与解决

        本文链接:https://www.haomeiwen.com/subject/tbqgvctx.html