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

Posted

技术标签:

【中文标题】不兼容的 Gradle 版本 - Google Play 服务【英文标题】:Incompatible Gradle Versions - Google Play Services 【发布时间】: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。一个猜测的答案仍然很可能出现(作为排除项的替代品,您在那里)。 【参考方案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"
            
         

    

试试这个

【讨论】:

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

此版本中使用了弃用的 Gradle 功能,使其与 Gradle 5.0 不兼容

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

任务:app:mergeReleaseResources FAILED,此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容

如何导入别人的android studio项目,解决gradle版本不兼容问题

“此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 8.0 不兼容。”在使用 FileWriter 类以 Java 输出文件时

build.gradle-构建