Android Support库依赖版本冲突

综合技术 简书 (源链)

前言

在项目开发中,不可避免用到support library。不仅自己撰写的代码中会引用这个库,使用的一些第三方库底层也会使用这个库。往往你用的support library的版本和第三方的版本冲突。默认情况下,support库会使用高版本。例如,你的工程中support library的版本是25.3.1,但某个第三方库可能在你不知情的情况下,默默的使用了support 26.0.0。正常来说是没有问题的。但是某些情况下,support library版本兼容会有问题。这里记录一个support library的兼容问题。

代码分析

今天再项目中升级的Google自己的Android Architecture Components版本号,莫名其妙App一些地方直接崩溃了,提示support库的一些类找不到。

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/animation/AnimatorCompatHelper

AnimatorCompatHelper这个类在support 26.0.0中好像不存在了。打印了Architecture Components升级前后的依赖树:

1.0.0正式版.png

1.0.0 alpha版.png

在这个第三方库的内部,默默升级了support library的版本。

代码实现

在项目中,特别是比较大的项目,很难预料,其他module的模块依赖。这个时候,我们希望的gradle 依赖选取策略不是直接取高版本,而是希望整个项目可以在build的入口处统一指定一些公用底层库的版本,避免一些由于版本引起的不可描述的bug。这里参考StackOverFlow上的解决方案:

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.0'
            }
        }
    }
}

添加如下代码,可以对指定依赖模块,指定版本。这个非常有用,glide,okhttp等第三方库也可以参考这个方法,统一管理版本。

您可能感兴趣的

Extracting multiplatform common modules in Android Extracting multiplatform common modules in Android You know how to make Android projects, but now you want to make them multiplatform. You hear...
Cordova: All flavors must now belong to a named fl... Messing around with Cordova I stumbled upon the following exception when building the app for Android: A problem occurred configuring root project '...
使用 Palette 让你的 UI 色彩与内容更贴合... 版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章。 未经允许,不得转载。 一、前言 今天介绍一个 Android 下比较有意思的 Support v7 库,Palette...
安卓NDK开发 下面以android studio为例讲解如何使用ndk进行jni开发。首先创建一个安卓项目,这里为了简单起见,整个Activity主界面只包括一个TextView,其内容从本地C++代码中的getString()函数获取的。 public class MainActivity ext...
Kotlin on Android: Android KTX, Kotlin Bootcamp Ud... Google recently presented a series of efforts to improve the Kotlin developer experience on the Android platform, including Android KTX , a ...
简书责编内容来自:简书 (源链) | 更多关于

阅读提示:酷辣虫无法对本内容的真实性提供任何保证,请自行验证并承担相关的风险与后果!
本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » Android Support库依赖版本冲突



专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录