Сбой синхронизации Gradle: com.google.android.gms: play-services-basement и com.google.firebase: firebase-common - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь включить FireBase в свой проект Android, как описано в официальной документации FireBase. Приложение очень простое и использует API видения Google.

Ошибка, которую я получаю:

Ошибка синхронизации: не удалось уведомить слушателя разрешения зависимостей. Библиотека com.google.android.gms: play-services-basement запрашивается различными другими библиотеками по [[11.0.4,11.0.4], [15.0.1,15.0.1]], но разрешается до 15.0. 1. Отключите плагин и проверьте дерево зависимостей, используя ./gradlew: app: dependencies.

Я уже попробовал несколько решений из похожих вопросов, размещенных на сайте, которые мне не подошли Что еще более важно, я хотел бы понять основную причину, а не слепо возиться с версиями.

Ниже мои файлы Gradle:

Уровень модуля

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-basement запрашивается различными другими библиотеками в [[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.

1 Ответ

0 голосов
/ 11 ноября 2018

Обновить следующее:

        classpath 'com.google.gms:google-services:4.0.1'

к этому:

        classpath 'com.google.gms:google-services:4.1.0'

Также как указано в документах:

Примечание: не используйте комбинированную цель play-services. Это приносит десятки библиотек, вздутие живота вашего приложения. Вместо этого укажите только определенные API-интерфейсы сервисов Google Play, которые использует ваше приложение.

Поэтому удалите это:

 implementation 'com.google.android.gms:play-services:11.0.4'

И добавьте конкретный API службы Google Play с обновленной версией, например implementation 'com.google.android.gms:play-services-auth:16.0.1'

Также обновите firebase-core до версии 16.0.4

Проверьте здесь для получения дополнительной информации:

https://developers.google.com/android/guides/setup


Когда вы получите эту ошибку:

Библиотека com.google.android.gms: play-services-basement запрашивается различными другими библиотеками по адресу [[15.0.1,15.0.1]], но разрешается до 16.0.1.

Это означает, что прямая зависимость (внутри репозитория Google Maven), которую вы используете в Gradle, использует транзитивную зависимость com.google.android.gms:play-services-basement.

Здесь в этом случае firebase-core:16.0.1 использует play-services-basement:15.0.1, а последняя версия play-services-basement равна 16.0.1, таким образом, вы получите эту ошибку.

Вы также можете проверить в этом 2 октября 2018 года, они сделали следующее:

Незначительные обновления внутренних функций были сделаны для некоторых основных библиотек (play-services-auth, play-services-base, play-services-basement, play-services-flags, статистика play-services-stats, задачи play-services-tasks) используется другими библиотеками сервисов Google Play.

Также они выпустили com.google.android.gms:play-services-basement:16.0.1 и com.google.firebase:firebase-core:16.0.4

Также проверьте мой ответ здесь:

Android | Невозможно добавить все библиотеки Google для версии 15.0.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...