我正在尝试将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-basement16.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.1com.google.firebase:firebase-core:16.0.4
也请检查我的答案:
Android | Cannot add all Google libraries for version 15.0.1

10-08 07:08
查看更多