【问题标题】:Android dependency has different version for the compile and runtime classpathAndroid 依赖对编译和运行时类路径有不同的版本
【发布时间】:2019-04-05 13:25:43
【问题描述】:

我在我的项目中使用了很多与 Firebase 相关的库。同步后,我遇到以下错误。

Android 依赖 'com.google.firebase:firebase-iid' 有不同 编译 (17.0.3) 和运行时 (17.1.1) 类路径的版本。你 应该通过 DependencyResolution 手动设置相同的版本

问题是我什至没有在我的依赖项中声明 firebase-iid,这是来自其他 firebase 库的传递依赖项。

运行依赖图后,我可以找到以下内容。

17.0.3 版来自 com.google.android.gms:play-services-measurement-api:16.4.0 而 17.1.1 来自 com.google.firebase:firebase-messaging:17.5.0

理想情况下,它应该在内部解决它,并且应该自动选择更高版本。但这并没有发生。

知道为什么会发生这种情况以及如何解决这个问题吗?

【问题讨论】:

    标签: android firebase gradle-dependencies


    【解决方案1】:

    com.google.android.gms:play-services-measurement-api: 没有更新 gradle 最新版本是 2019 年 3 月,版本:16.4.0

    因此,您的实现对于此测量 API 不正确。

    使用:

    com.google.android.gms:play-services-measurement-api:16.4.0
    
    com.google.firebase:firebase-messaging:17.5.0
    

    参考这个链接:https://mvnrepository.com/artifact/com.google.android.gms/play-services-measurement-api/16.4.0

    https://mvnrepository.com/artifact/com.google.firebase/firebase-messaging

    【讨论】:

      【解决方案2】:

      是的,你是对的,gradle 应该自动解析为单个版本的库,但正如我所经历的,有时会,有时不会。但是当它不能解析为同一库的单个版本时,我们可以强制它使用单个特定版本,如下所述。

      configurations.all { 
        resolutionStrategy {
           force "com.google.android.gms:play-services-measurement-api:17.1.1"
           force "com.google.firebase:firebase-messaging:17.5.0"
        }
       }
        dependencies {
        // ... all dependencies here...
        }
      

      尝试使用上述代码强制 gradle 使用单个版本。可能对您的情况有所帮助。

      【讨论】:

        猜你喜欢
        • 2018-04-26
        • 2018-12-20
        • 1970-01-01
        • 2020-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        相关资源
        最近更新 更多