首页 > 解决方案 > Android:添加 Firebase 要求时出现 build.gradle 错误

问题描述

当我按照 Firebase 说明并添加时:

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

dependencies和:

implementation 'com.google.firebase:firebase-core:17.0.0' 

同样,dependencies突然间我在以下行中遇到错误dependencies

implementation 'com.android.support:appcompat-v7:27.1.1'

这是错误消息:

Dependencies using groupId com.android.support and androidx.* can not be combined but found IdeMavenCoordinates{myGroupId='com.android.support', myArtifactId='animated-vector-drawable', myVersion='27.1.1', myPacking='aar', myClassifier='null'} and IdeMavenCoordinates{myGroupId='androidx.lifecycle', myArtifactId='lifecycle-viewmodel', myVersion='2.0.0', myPacking='aar', myClassifier='null'} incompatible dependencies less... (⌘F1) Inspection info:There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your targetSdkVersion).

我该怎么办?为什么在添加 Firebase 后会发生这种情况?

标签: androidfirebasegradle

解决方案


编辑:这是由于某些问题而被删除的原始答案的改进答案。

Firebase 在最新版本中迁移到了 AndroidX。意思就是,

AndroidX 将原始支持库 API 包映射到 androidx 命名空间。只有包和 Maven 工件名称发生了变化;类、方法和字段名称没有改变。

因此,最新的 firebase 版本不再支持旧的支持库。你必须降级firebase,

implementation 'com.google.firebase:firebase-core:16.0.9'

或迁移您的应用程序以使用 AndroidX,如下所述。(无论如何,如果您的应用程序依赖于任何com.google.android.gmscom.google.firebase库,您应该准备此迁移)

此版本是主要版本更新,包括重大更改。在此版本中,库从 Android 支持库迁移到 Jetpack (AndroidX) 库。除非您在应用程序中进行以下更改,否则更新的库将不起作用:

将 com.android.tools.build:gradle 升级到 v3.2.1 或更高版本。

将 compileSdkVersion 升级到 28 或更高版本。

更新您的应用以使用 Jetpack (AndroidX);按照迁移到AndroidX 中的说明进行操作。

使用 Android Studio 3.2 及更高版本,迁移要容易得多。从菜单栏中选择Refactor > Migrate to AndroidX,我们可以迁移到 AndroidX。

任何 Maven 依赖项都可以如下处理,

尚未迁移到 AndroidX 命名空间的 Maven 依赖项,当您在 gradle.properties 文件中将以下两个标志设置为 true 时,Android Studio 构建系统也会为您迁移这些依赖项:

android.useAndroidX=true
android.enableJetifier=true

要迁移不使用任何需要转换的依赖项的任何第三方库的现有项目,您可以将 android.useAndroidX 标志设置为 true 并将 android.enableJetifier 标志设置为 false。


推荐阅读