【问题标题】:Incompatible Gradle Versions - Google Play Services不兼容的 Gradle 版本 - Google Play 服务
【发布时间】:2019-08-20 07:16:36
【问题描述】:

自从我将 Google Play 服务库升级到 16.0.0 版后,我的 Linter 会抛出以下错误:

不兼容的 Gradle 版本

../../build.gradle:全部 com.google.android.gms 库必须使用完全相同的版本 规范(混合版本可能导致运行时崩溃)。成立 版本 16.0.1、16.0.0。例子包括 com.google.android.gms:play-services-base:16.0.1 和 com.google.android.gms:play-services-location:16.0.0

我显示了所有依赖项并看到了这个:

com.google.android.gms:play-services-location:16.0.0

| | +--- com.google.android.gms:play-services-base:16.0.1

显然 google play-services-location 16.0.0 对 play-services-base 16.0.1 有内部依赖关系,导致版本不匹配导致错误。

在我的项目 gradle 文件中,我已经将 google 依赖项更新为:

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

我必须使用位置版本 16.0.0 发布应用程序,我该如何解决这个问题?

编辑: 我的 build.gradle 中的依赖项:

compile fileTree(include: ['*.jar'], dir: 'libs')
    compile libraries.support
    compile project(path: ':core')

    compile 'com.google.android.gms:play-services-location:16.0.0' {
        exclude module: 'support-v4'
    }

    compile libraries.kotlin
    compile libraries.eventbus

    // Dagger 2 and Compiler
    compile 'com.google.dagger:dagger:2.21'
    provided libraries.appcompat
    kapt libraries.daggerCompiler

【问题讨论】:

  • 你能添加你的 gradle 文件吗?应用模块
  • 投票关闭此问题,因为来自build.gradledependencies 丢失...这不允许以可靠的方式重现该问题,而只能是猜测。
  • 嗯。仍然没有版本号。这些变量可以是任何东西。如果您查看maven central ...甚至没有包含任何support-v4。一个猜测的答案仍然很可能出现(作为排除项的替代品,您在那里)。

标签: android gradle google-play-services


【解决方案1】:

您可以尝试从位置服务 gradle 导入中排除 16.0.1,例如:

implementation 'com.google.android.gms:play-services-base:16.0.0'
implementation ('com.google.android.gms:play-services-location:16.0.0') {
    exclude group:'com.google.android.gms', module: 'play-services-base'
}

【讨论】:

  • 我已经试过了,但是没有 play-services-base 项目由于缺少类而无法编译
  • 你能分享 gradle app:dependencies 或 ./gradlew app:dependencies 的输出吗?
  • @Piwo 它需要被排除并明确添加到它要求的版本中......否则它将无法解决它。
【解决方案2】:
configurations.all {
   resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.google.gms') {
            if (requested.name.contains("play-services-location")) {
                details.useVersion "16.0.0"
            }
            if (requested.name.contains("play-services-base")) {
                details.useVersion "16.0.0"
            }
        } 

    }
}

试试这个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多