不兼容 gradle 版本 - Android

Incompatible gradle versions - Android

我的 gradle 文件在构建时没有抛出任何错误。但是,当我 运行 Android lint 时,它因 gradle 版本不兼容错误而失败。

分享错误:

不兼容 Gradle 版本

../../build.gradle: All com.google.android.gms libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 16.0.2, 16.0.1, 16.0.0, 15.1.0, 15.0.1. Examples include com.google.android.gms:play-services-measurement-base:16.0.2 and com.google.android.gms:play-services-measurement-api:16.0.1**

共享在应用级别 gradle 中定义的 google 依赖项:

compile 'com.android.support:appcompat-v7:27.1.1'
compile 'com.android.support:gridlayout-v7:27.1.1'
compile 'com.android.support:design:27.1.1'
compile 'com.android.support:recyclerview-v7:27.1.1'
compile 'com.android.support:cardview-v7:27.1.1'
compile 'com.android.support:preference-v14:27.1.1'
compile 'com.android.support:support-annotations:27.1.1'
compile 'com.android.support.constraint:constraint-layout:1.1.3'
compile 'com.google.android.gms:play-services-location:15.0.1'
compile 'com.google.android.gms:play-services-maps:15.0.1'
compile 'com.google.android.gms:play-services-analytics:16.0.0'
compile 'com.google.android.gms:play-services-auth:16.0.0'
compile 'com.google.firebase:firebase-core:16.0.3'
compile 'com.google.firebase:firebase-messaging:17.3.0'
compile 'com.google.code.gson:gson:2.8.2'

项目级别gradle文件:

    classpath 'com.android.tools.build:gradle:2.3.3'
    classpath 'com.google.gms:google-services:1.5.0'

哪个依赖项导致此 lint 错误?如何解决这个 gradle 不兼容问题?

我已经尝试将所有 google gms 版本更改为 15,但并没有解决问题..

compile 'com.google.android.gms:play-services-location:15.0.1'
compile 'com.google.android.gms:play-services-maps:15.0.1'
compile 'com.google.android.gms:play-services-analytics:15.0.2'
compile 'com.google.android.gms:play-services-auth:15.0.1'

错误信息

All com.google.android.gms libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 16.0.2, 16.0.1, 16.0.0, 15.1.0, 15.0.1.

非常清楚地表明

这是你现在拥有的:

compile 'com.google.android.gms:play-services-location:15.0.1'
compile 'com.google.android.gms:play-services-maps:15.0.1'
compile 'com.google.android.gms:play-services-analytics:16.0.0'

必须是:

compile 'com.google.android.gms:play-services-location:16.0.2'
compile 'com.google.android.gms:play-services-maps:16.0.2'
compile 'com.google.android.gms:play-services-analytics:16.0.2'

此外,尽量始终使用最新版本的 Google API。

希望对您有所帮助。

您需要将 gradle 构建工具更新到此版本:-

 classpath 'com.android.tools.build:gradle:3.2.1'

和google播放服务

 classpath 'com.google.gms:google-services:3.2.0'

添加到答案,这些是最新的依赖项

implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.google.android.gms:play-services-analytics:16.0.6'
implementation 'com.google.android.gms:play-services-auth:16.0.1'

检查 here and here 以查找最新版本

转到 android 工作室的项目视图。在 .idea> 库中,您会找到版本为 16.0.2、16.0.1、16.0.0、15.1.0、15.0.1 的库。

这些库作为您在 build.gradle 文件中的库的依赖项导入。在您的依赖项中导入这些库的最新版本以消除错误。

发生这种情况是因为您使用的是插件

 classpath 'com.google.gms:google-services:1.5.0'

和不同版本的 Google 服务库。

你应该更新 Google Services Gradle Plugin:

dependencies {
    classpath 'com.google.gms:google-services:4.2.0'
    // ...
}

然后更新您的 dependencies 但不必使用相同的版本

从插件 3.3.0 开始有不同的行为:

Google Play services libraries after 15.0.0 now have independent version numbers which follow SemVer. This change will allow for more frequent, flexible updates by individual components. The Google Services Gradle plugin has been updated to version 3.3.0 to support this change in versioning.

同时检查 documentation删除这个旧模式:

buildscript {
    ext {
        play_version = '15.0.0'
    }
}

dependencies {
    // DON’T DO THIS!!
    // The following use of the above buildscript property is no longer valid.
    implementation "com.google.android.gms:play-services-ads:${play_version}"
    implementation "com.google.android.gms:play-services-auth:${play_version}"
    implementation "com.google.firebase:firebase-firestore:${play_version}"
}

现在您使用的每个依赖项现在可能处于不同的版本。