不兼容的 gradle 版本 - Android

Posted

技术标签:

【中文标题】不兼容的 gradle 版本 - Android【英文标题】:Incompatible gradle versions - Android 【发布时间】:2019-08-01 14:18:34 【问题描述】:

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

分享错误:

Gradle 版本不兼容

../../build.gradle:所有 com.google.android.gms 库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本 16.0.2、16.0.1、16.0.0、15.1.0、15.0.1。示例包括 com.google.android.gms:play-services-measurement-base:16.0.2 和 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'

【问题讨论】:

尽量使用同版本的同类型依赖。例如:com.google.android.gms:play-services... 的所有依赖项应该是相同的版本(就像你所有的 com.android.support:... 依赖项都在保存版本中)。 使用文档developers.google.com/android/guides/setup中提到的最新版本 【参考方案1】:

这是因为您使用的是插件

 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 开始有不同的行为:

15.0.0 之后的 Google Play 服务库现在有独立的 SemVer 之后的版本号。这一变化将允许更多 通过各个组件进行频繁、灵活的更新。谷歌 Services Gradle 插件已更新至 3.3.0 版以支持 版本控制的这种变化。

还要检查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"

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

【讨论】:

将 google 服务插件更新到最新版本,将 gradle 插件更新到最新版本,并将所有 gms 和 firebase 依赖项更新到最新版本解决了我的问题。谢谢加布里埃尔:)【参考方案2】:

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

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

和谷歌播放服务

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

【讨论】:

【参考方案3】:

错误信息

所有 com.google.android.gms 库必须使用完全相同的版本 规范(混合版本可能导致运行时崩溃)。成立 版本 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。

希望这会对你有所帮助。

【讨论】:

不正确。由于 3.3.0 google play services 插件,您使用的每个依赖项现在可能处于不同的版本。 developers.google.com/android/guides/…【参考方案4】:

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

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 和here 以查找最新版本

【讨论】:

您必须更新 google play services 插件。【参考方案5】:

进入 android studio 的项目视图。在 .idea> 库中,您会找到版本为 16.0.2、16.0.1、16.0.0、15.1.0、15.0.1 的库。

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

【讨论】:

以上是关于不兼容的 gradle 版本 - Android的主要内容,如果未能解决你的问题,请参考以下文章

如何跳过“此项目正在使用版本 xxx 的 android gradle 插件,与此版本的 android studio 不兼容”对话框?

不兼容的 Gradle 版本 - Google Play 服务

“此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容。” -反应原生

AGP 3.5是否与Gradle 6兼容?

由于 NDK 版本不兼容,Android 构建在 CI 中失败,但在本地不兼容

Dexguard 7.3.01 与 gradle 2.3.0 不兼容