Android依赖项对于编译和运行时类路径具有不同的版本

时间:2019-04-05 13:25:44

标签: android firebase gradle-dependencies

我在项目中使用了许多与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

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

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

2 个答案:

答案 0 :(得分:0)

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

因此,您的实现对于此Measurement-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

答案 1 :(得分:0)

是的,没错,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使用单个版本。可能会对您有帮助。