【问题标题】:Android: build.gradle error when adding firebase requirementsAndroid:添加 Firebase 要求时出现 build.gradle 错误
【发布时间】:2019-06-27 15:19:16
【问题描述】:

当我按照 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 后会出现这种情况?

【问题讨论】:

标签: android firebase gradle


【解决方案1】:

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

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 (安卓X);按照迁移到AndroidX.中的说明进行操作

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

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

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

android.useAndroidX=true
android.enableJetifier=true

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

【讨论】:

  • 感谢您的回复。实际上,按照您的建议降级 Firebase 是可行的。降级有什么坏处吗?
  • 对于我的用例,到目前为止,我还没有遇到任何降级问题。但我们当然会错过最新版本中可能包含的所有修复和新功能。无论如何,迁移到 AndroidX 库也可能更适合未来。
猜你喜欢
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多