android - 所有 com.android.support 库必须使用完全相同的版本规范

标签 android build.gradle

更新到 android studio 2.3 后,我收到此错误消息。 我知道这只是一个提示,因为应用程序运行正常,但这真的很奇怪。

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 25.1.1, 24.0.0. Examples include com.android.support:animated-vector-drawable:25.1.1 and com.android.support:mediarouter-v7:24.0.0

enter image description here

我的毕业生:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.blankj:utilcode:1.3.6'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.facebook.stetho:stetho:1.4.2'

    provided 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'

    compile 'com.mikepenz:iconics-core:2.8.2@aar'
    compile('com.mikepenz:materialdrawer:5.8.1@aar') { transitive = true }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'me.zhanghai.android.materialprogressbar:library:1.3.0'
    compile 'com.github.GrenderG:Toasty:1.1.1'
    compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.0'
    compile 'com.github.MAXDeliveryNG:slideview:1.0.0'

    compile 'com.facebook.fresco:fresco:1.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.google.maps.android:android-maps-utils:0.4.4'
    compile 'com.github.jd-alexander:library:1.1.0'
}

最佳答案

您可以使用以下解决方案之一解决此问题:

更新:

从 Android Studio 3.0 开始,它变得更加容易,因为它现在显示了一个更有帮助的提示,所以我们只需要遵循这个提示。
例如: 1]

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.0.2, 26.1.0. Examples include com.android.support:animated-vector-drawable:27.0.2 and com.android.support:customtabs:26.1.0

there are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your targetSdkVersion.)

解决方案:
使用旧版本显式添加库,但使用新版本号。
在我的情况下 com.android.support:customtabs:26.1.0 所以我需要添加:

implementation "com.android.support:customtabs:27.0.2"  

ie:从第二项中获取库,并使用第一项中的版本号实现它。

注意:不要忘记现在按同步,以便 gradle 可以重建依赖关系图并查看是否还有更多冲突。

说明:
您可能会对错误消息感到困惑,因为不要使用 customtabs 所以我怎么会有冲突!
好吧..您没有直接使用它,但是您的一个库在内部使用了旧版本的 customtabs,因此您需要直接请求它。

如果您想知道您的哪些库负责旧版本,并且可能要求作者更新他的库,运行 Gradle 依赖关系报告,请参阅旧答案以了解如何。

注意这一点


旧答案:

灵感来自 CommonsWare answer :

运行 Gradle 依赖关系报告以查看您的完整树 依赖是。

从那里,您将看到您的哪个库要求使用不同版本的 Android 支持库。 无论它要求什么,您都可以直接使用 25.2.0 版本或使用 Gradle 的其他冲突解决方法来获得相同的版本。


更新:

从 gradle 插件版本开始:3.0 compile 已被 implementationapi 取代,参见 this answer区别。

因此改用:

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

或者对于windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

并搜索有冲突的版本。

对我来说,删除 com.google.android.gms:play-services:10.2.0

后错误消失了

并且仅包括 com.google.android.gms:play-services-location:10.2.0com.google.android.gms:play-services-maps:10.2。 0 因为它们是我使用的仅有的两个播放服务。

我认为 gms:play-services 依赖于支持库的一些旧组件,因此我们需要自己显式添加它们。


对于 AS 3.0 更早版本。

运行:

./gradlew -q dependencies <module-name>:dependencies --configuration implementation

例子:

./gradlew -q dependencies app:dependencies --configuration implementation

如果有人知道新 gradle 插件中的更好方法,请告诉我。

关于android - 所有 com.android.support 库必须使用完全相同的版本规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42374151/

相关文章:

java - 玛根托 : get customer_id from salesOrderList

android - 如何在android studio中用gradle替换buildvariant的字符串?

java - 无法实例化应用程序 android.support.multidex.MultiDexApplication : java. lang.ClassNotFoundException: 在路径上:DexPathList

android - Gradle 在尝试集成 Sentry 时抛出 API 警告

java - Android 中的日历 View 应显示当前日期后 1 周

android - 如何将代码推送到 Android Studio 中的第二个独立 GitHub 存储库?

video - Gradle任务assembleDebug在使用Firebase安装软件包 “youtube_player_flutter: ”时失败,出现退出代码1错误

android - Gradle 2.3.0-alpha1 无法进行数据绑定(bind)

android - 如何为 Android 交叉编译 LTP

android - 如何检查 Junit 中的字母数字条件