我正在尝试将firebase包含到我的android项目中,如firebase官方文档中所述。这款应用非常基础,使用谷歌的vision api。
我得到的错误:
Gradle同步失败:无法通知依赖项解析侦听器。
库com.google.android.gms:play services基底正被其他多个库请求,地址为[11.0.4,11.0.4],[15.0.1,15.0.1]],但解析为15.0.1。禁用插件并使用./gradlew:app:dependencies检查依赖关系树。
我已经试过一些类似问题的解决方法,但这些问题在网站上发布,对我来说并不管用。更重要的是,我想了解根本原因,而不是盲目地修改版本。
以下是我的毕业档案:
模块级
apply plugin: 'com.android.application'
/* ... */
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:2.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.android.gms:play-services:11.0.4'
implementation 'com.google.firebase:firebase-core:16.0.1'
}
apply plugin: 'com.google.gms.google-services'
项目级
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
运行
./gradlew app:dependencies
给出:未能通知依赖项解析侦听器。
库com.google.android.gms:play services基底正被其他多个库请求,地址为[11.0.4,11.0.4],[15.0.1,15.0.1]],但解析为15.0.1。禁用插件并使用./gradlew:app:dependencies检查依赖关系树。
库com.google.firebase:firebase common正在由位于[11.0.4,11.0.4]]的其他多个库请求,但解析为16.0.0。禁用插件并使用./gradlew:app:dependencies检查依赖关系树。
最佳答案
更新以下内容:
classpath 'com.google.gms:google-services:4.0.1'
对此:
classpath 'com.google.gms:google-services:4.1.0'
如文件所述:
注意:不要使用组合的
play-services
目标。它带来了许多库,使您的应用程序变得臃肿。相反,只指定应用程序使用的特定google play服务api。因此,删除:
implementation 'com.google.android.gms:play-services:11.0.4'
并添加带有更新版本的特定google play服务api,例如
implementation 'com.google.android.gms:play-services-auth:16.0.1'
同时将firebase核心更新到版本
16.0.4
查看此处了解更多信息:
https://developers.google.com/android/guides/setup
出现此错误时:
google.android.gms库:play services基底正在被其他多个库请求,地址为[15.0.1,15.0.1]],但解析为16.0.1。
这意味着您在gradle中使用的直接依赖项(在google maven存储库中)使用的是传递依赖项
com.google.android.gms:play-services-basement
。在这种情况下,
firebase-core:16.0.1
使用play-services-basement:15.0.1
,而最新版本的play-services-basement
是16.0.1
,因此您会得到这个错误。您也可以在2018年10月2日查看this他们做了以下操作:
对其他google play服务库使用的一些核心库(play services auth、play services base、play services base、play services flags、play services stats、play services tasks)进行了小的内部功能更新。
他们还发布了
com.google.android.gms:play-services-basement:16.0.1
和com.google.firebase:firebase-core:16.0.4
也请检查我的答案:
Android | Cannot add all Google libraries for version 15.0.1