【问题标题】:Incompatible firebase libraries不兼容的 Firebase 库
【发布时间】:2018-09-14 10:37:23
【问题描述】:

我使用最新版本的com.google.firebase:firebase-core:16.0.3 和最新版本的com.google.firebase:firebase-messaging:17.3.1。但是它们依赖于com.google.firebase:firebase-iid依赖的不同版本(16.0.0和17.0.1):

firebase-core:16.0.3 依赖于firebase-iid:16.0.0

com.google.firebase:firebase-core:16.0.3
+--- com.google.firebase:firebase-analytics:16.0.3
|    +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    +--- com.google.android.gms:play-services-measurement-api:[16.0.1] -> 16.0.1
|    |    +--- com.google.android.gms:play-services-ads-identifier:15.0.1
|    |    |    \--- com.google.android.gms:play-services-basement:[15.0.1,16.0.0) -> 15.0.1 (*)
|    |    +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |    +--- com.google.android.gms:play-services-measurement-base:[16.0.2] -> 16.0.2
|    |    +--- com.google.android.gms:play-services-stats:15.0.1
|    |    |    \--- com.google.android.gms:play-services-basement:[15.0.1] -> 15.0.1 (*)
|    |    +--- com.google.android.gms:play-services-tasks:15.0.1 (*)
|    |    +--- com.google.firebase:firebase-analytics-impl:[16.2.1] -> 16.2.1
|    |    |    +--- com.google.android.gms:play-services-ads-identifier:15.0.1 (*)
|    |    |    +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |    |    +--- com.google.android.gms:play-services-measurement-base:[16.0.2] -> 16.0.2
|    |    |    +--- com.google.android.gms:play-services-stats:15.0.1 (*)
|    |    |    +--- com.google.android.gms:play-services-tasks:15.0.1 (*)
|    |    |    +--- com.google.firebase:firebase-common:16.0.1
|    |    |    |    +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |    |    |    \--- com.google.android.gms:play-services-tasks:15.0.1 (*)
|    |    |    \--- com.google.firebase:firebase-iid:16.0.0

firebase-messaging:17.3.1 依赖于firebase-iid:17.0.1

com.google.firebase:firebase-messaging:17.3.1
+--- com.google.android.gms:play-services-basement:15.0.1 (*)
+--- com.google.android.gms:play-services-tasks:15.0.1 (*)
+--- com.google.firebase:firebase-common:16.0.1 (*)
+--- com.google.firebase:firebase-iid:[17.0.1] -> 17.0.1 (*)

因此,android google play services 插件因以下错误而失败:“[[17.0.1,17.0.1]] 的各种其他库正在请求库 com.google.firebase:firebase-iid,但解析为 16.0 .0. 禁用插件并使用 ./gradlew :app:dependencies 检查您的依赖关系树。”。

这是一个错误吗?有什么解决方案可以解决这个问题吗?

【问题讨论】:

  • 你的com.google.gms:google-services: (来自项目级 Gradle 的 Google Play 服务插件) 是什么版本?
  • com.google.gms:google-services 是 4.1.0
  • 当我将此插件降级到3.2.1时,它不会使构建失败,但随后android gradle插件会抛出异常:Caused by: java.lang.RuntimeException: Android dependency 'com.google.firebase:firebase-iid' has different version for the compile (16.0.0) and runtime (17.0.1) classpath. You should manually set the same version via DependencyResolution

标签: android firebase


【解决方案1】:

我在更新到com.google.gms:google-services:4.0.1 后遇到了类似的问题。

我已经通过添加修复了

com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true

在应用插件后的 app/build.gradle 文件中:com.google.gms.google-services.

看起来像这样

{
    dependencies {
     //......
    }

    apply plugin: 'com.google.gms.google-services'
    com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
}

【讨论】:

    【解决方案2】:

    使用最新的 firebase-messaging 更新 (17.3.2),此更新修复了这个特定的不兼容问题。

    【讨论】:

      【解决方案3】:

      您可以查看版本检查实现。
      https://github.com/firebase/firebase-android-sdk/blob/15be8218dbb890dbc79deb858addece0ad255831/firebase-installations/customer-lint-checks/src/main/java/com/google/firebase/installations/lint/IncompatibleIidVersionDetector.kt#L98
      看来iid版本应该是20.1或更高。

      要查找需要更新以更新 iid 的库,您可以通过执行以下操作找到依赖于 iid 的 firebase 库:
      ./gradlew -q app:dependencyInsight --configuration debugCompileClasspath --dependency firebase-iid

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多