【问题标题】:Incompatible gradle versions - Android不兼容的 gradle 版本 - 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中提到的最新版本

标签: android gradle android-gradle-plugin google-play-services build.gradle


【解决方案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。

    希望这会对你有所帮助。

    【讨论】:

    【解决方案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'
    

    查看herehere 以查找最新版本

    【讨论】:

    • 您必须更新 google play services 插件。
    【解决方案5】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2018-02-26
      • 1970-01-01
      相关资源
      最近更新 更多