不兼容的 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.gradle
的dependencies
丢失...这不允许以可靠的方式重现该问题,而只能是猜测。
嗯。仍然没有版本号。这些变量可以是任何东西。如果您查看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 输出文件时