Android Gradle:所有 gms/firebase 库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)

Posted

技术标签:

【中文标题】Android Gradle:所有 gms/firebase 库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)【英文标题】:Android Gradle: All gms/firebase libraries must use the exact same version specification (mixing versions can lead to runtime crashes) 【发布时间】:2019-07-05 03:41:08 【问题描述】:

我正在尝试集成 Firebase 性能 SDK。它在这一行发生冲突(Analysis 标记为红线)并在启动应用程序后崩溃:

   compile 'com.google.android.gms:play-services-ads:16.0.0'

所有 gms/firebase 库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本 17.1.0、17.0.5、17.0.3、17.0.1、16.3.0、16.2.3、16.2.1、16.1.0、16.0.7、16.0.3、16.0.1、16.0.0。

我已经搜索并尝试了这个类似标题的相关问题/答案,但没有人可以工作。

下面列出了依赖项。在我使用所有版本 11.8.0 之前运行良好。 Performance SDK 希望我使用 firebase-perf:16.2.3 并引发此问题。即使我将它们全部修改为 16.x.x,它仍然无法修复。我想知道它是否需要所有相同的颠覆?但这无法完成,因为我尝试过其中许多缺乏很多颠覆。例如,如果使用所有版本 16.0.0,其中一些会出现“无法解析:...”。

build.gradle(模块:app)

compile 'com.google.android.gms:play-services-ads:16.0.0'
compile 'com.google.firebase:firebase-core:16.0.7'
compile 'com.google.firebase:firebase-ads:16.0.1'
compile 'com.google.firebase:firebase-auth:16.1.0'
compile 'com.google.firebase:firebase-crash:16.2.1'
implementation 'com.google.firebase:firebase-config:16.3.0'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-perf:16.2.3'

build.gradle(项目:xxxx)

    dependencies 
    classpath 'com.android.tools.build:gradle:3.0.1'
    classpath 'com.google.gms:google-services:4.0.2'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
    classpath 'io.fabric.tools:gradle:1.25.4'   //for crashlytics
    classpath 'com.google.firebase:firebase-plugins:1.1.5'  //for performance

【问题讨论】:

请添加您的 build.gradle 文件的全部内容。请同时添加另一个。 您在*** gradle 文件中使用了非常旧版本的 Play 服务插件。根据文档检查 everything 是否是最新的。 firebase.google.com/docs/android/setup @Doug Stevenson,一切都是最新的,除了以下两个。但即使我将它们更新到 17.1.3,这个错误仍然存​​在。编译 'com.google.android.gms:play-services-ads:17.1.3' 编译 'com.google.firebase:firebase-ads:17.1.3' 您的播放服务插件已经过时了。最新的是 4.2.0。你有 3.0.0。您还使用另一个旧版本 4.0.2 再次列出它。 @Doug Stevenson,谢谢!我删除了必要的类路径“com.google.gms:google-services:3.0.0”。同样的错误仍然存​​在。如果我使用 4.2.0,还会出现一些其他错误,如下所示。它似乎与原始错误无关。错误:找不到 com.google.android.gms:strict-version-matcher-plugin:1.1.0。在以下位置搜索:file:/C:/Program Files/Android/Android Studio/gradle/m2repository/com/google/android/gms/strict-version-matcher-plugin/1.1.0/strict-version-matcher- plugin-1.1.0.pom... 【参考方案1】:

如果您使用的是 Android Studio:打开 Gradle 文件后,您应该能够看到一些库被标记为黄色,如果您将鼠标悬停在它们上方,则会弹出一个显示最新版本的弹出窗口,您可以从用最新版本替换所有这些。之后清理和重建项目可能会有所帮助。

【讨论】:

所有标记为黄色的库都在上面的附加代码中得到了更正,除了下面的拖线。但是即使我将这两条线更新到最新,问题仍然存在。编译 'com.google.android.gms:play-services-ads:17.1.3' 编译 'com.google.firebase:firebase-ads:17.1.3' 您能否在更新所有版本后添加您现在收到的确切消息?我在一个项目中使用的是:'com.google.android.gms:play-services-ads:17.1.2'和'implementation 'com.google.firebase:firebase-core:16.0.6'并且没有冲突。也许您不需要两个广告库... 消息就在原来的问题上:它在这一行发生了这个错误(分析标记为红色):compile 'com.google.android.gms:play-services-ads:16.0.0 ' 所有 gms/firebase 库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本 17.1.0、17.0.5、17.0.3、17.0.1、16.3.0、16.2.3、16.2.1、16.1.0、16.0.7、16.0.3、16.0.1、16.0.0。 【参考方案2】:

在尝试了很多小时后,它恰好可以进行以下修改。 特别是 'com.google.android.gms:play-services-ads:16.0.0' 需要 "(", ")",否则冲突不会消失!

compile ('com.google.android.gms:play-services-ads:16.0.0')

compile ('com.google.firebase:firebase-core:16.0.7')exclude group: "com.google.android.gms"
compile ('com.google.firebase:firebase-ads:16.0.1')exclude group: "com.google.android.gms"
compile ('com.google.firebase:firebase-auth:16.1.0')exclude group: "com.google.android.gms"
compile ('com.google.firebase:firebase-crash:16.2.1')exclude group: "com.google.android.gms"
implementation 'com.google.firebase:firebase-config:16.3.0'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-perf:16.0.0'  //if using 16.2.3, sometime the app crashes as soon as it starts. 
                                                       //Below post reported that some other bug from firebase-perf:16.1.0
                                                         //https://***.com/a/51967966/8046317

【讨论】:

以上是关于Android Gradle:所有 gms/firebase 库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件自定义 Gradle 任务 ② ( 在 Terminal 面板中执行 gradlew task 命令显示所有任务 | 命令行输出所有任务 | 单独执行指定任务 )

无法解析配置 ':classpath' 的所有工件。无法解析 com.android.tools.build:gradle:3.5.3。显示错误

Android Gradle Task-中文

Android开发--Gradle--tasks(三)

Android Studio 3.1.2 Gradle错误:无法解析配置':lintClassPath'的所有文件

无法解析配置“:classpath”的所有工件。 > 无法解析 com.android.tools.build:gradle:4.1.0