不兼容的 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 不兼容。” -反应原生