Не удалось выполнить синхронизацию проекта Gradle после того, как Google объявила о новой системе управления версиями sdk

Я получаю следующую ошибку:

Cannot change dependencies of configuration ':app:api' after it has been included in dependency resolution.

Обновлено: я могу построить с помощью com.google.gms:google-services:3.3.0 когда привязка данных отключена, но это не решение для тех, кому требуется привязка данных.

После того, как Google объявила о новой системе управления версиями sdk (link), я сделал следующие шаги:

  1. Я обновил файлы градиента, как указано, чтобы включить номера версий gms и firebase отдельно. Обновлена строка плагина apply, обновлена classpath. Я все еще получаю ошибку и не знаю причину.

  2. Ниже приведены соответствующие файлы градиента:

build.gradle(main):

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/rvalerio/maven' }
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath 'com.google.gms:google-services:3.3.0'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        classpath 'io.realm:realm-gradle-plugin:4.3.3'
        classpath 'io.fabric.tools:gradle:1.25.1'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
        maven { url 'https://maven.google.com' }
    }
}

build.gradle(Module: app)

apply plugin: 'com.google.gms.google-services'

Зависимости от Firebase:

//Firebase Dependencies
implementation "com.google.firebase:firebase-messaging:15.0.2"
implementation "com.google.firebase:firebase-core:15.0.2"
implementation "com.google.firebase:firebase-config:15.0.2"
implementation('com.crashlytics.sdk.android:crashlytics:[email protected]') {
    transitive = true
}

GMS и другие зависимости

implementation "com.android.support:recyclerview-v7:27.1.1"
implementation "com.android.support:support-v4:27.1.1"
implementation "com.android.support:cardview-v7:27.1.1"
implementation "com.android.support:design:27.1.1"
implementation "com.android.support:support-v13:27.1.1"
implementation "com.android.support.constraint:constraint-layout:1.1.0"
implementation "com.google.android.gms:play-services-location:15.0.1"
implementation "com.google.android.gms:play-services-vision:15.0.1"
implementation "com.google.android.gms:play-services-auth:15.0.1"
implementation "com.google.android.gms:play-services-maps:15.0.1"
  1. Я вставил журнал ошибок на pastebin из студии Android 3.2.1 здесь.

Любая помощь приветствуется!

Ответы

Ответ 1

Эта проблема, похоже, была решена с помощью новой версии google-services (4.0.1 на сегодняшний день). Ниже приведены соответствующие версии, которые разрешат указанную проблему:

В вашем проекте build.gradle файлы:

dependencies { 
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.gms:google-services:4.0.1' }

В файлах приложения build.gradle:

//Firebase Dependencies
implementation "com.google.firebase:firebase-messaging:17.0.0"
implementation "com.google.firebase:firebase-core:16.0.0"
implementation "com.google.firebase:firebase-config:16.0.0"
implementation 'com.google.firebase:firebase-perf:16.0.0'

...} apply plugin: "com.google.gms.google-services"

Значение привязки равно true:

dataBinding {
    enabled = true
}

Версия Android Studio: 3.1.2

Благодарим вас за предоставление различных способов решения проблемы, например, ответ на вопрос @Kyle и ссылку на сообщение средней ссылки, в которой показано, как использовать firebase без сервисов google.

Ответ 2

удалось создать против Play Services & Firebase 15.0.0 с включенной привязкой данных... мои зависимости теперь выглядят примерно так, и они снова строятся, без каких-либо Cannot change dependencies of configuration жалоб Cannot change dependencies of configuration:

buildscript {

    dependencies {

        classpath "com.android.tools.build:gradle:3.1.2"

        // do not update, because 3.3.1 appears broken
        // classpath "com.google.gms:google-services:3.2.1"

        // meanwhile, there is version 4.0.2 available
        classpath "com.google.gms:google-services:4.0.2"
    }
}

нужно ссылаться на все библиотеки по отдельности. просто ссылаясь на com.google.android.gms:play‐services и/или com.google.firebase:firebase-core больше не работает с 15.0.0.

android {

    dependencies {

        // Play Services 15.0.0
        implementation "com.google.android.gms:play-services-base:15.0.1"
        implementation "com.google.android.gms:play-services-auth:15.0.1"
        implementation "com.google.android.gms:play-services-identity:15.0.1"

        // Firebase 15.0.0
        implementation "com.google.firebase:firebase-core:15.0.2"
        implementation "com.google.firebase:firebase-database:15.0.1"
        implementation "com.google.firebase:firebase-firestore:16.0.0"
        implementation "com.google.firebase:firebase-storage:15.0.2"
        implementation "com.google.firebase:firebase-crash:15.0.2"
        implementation "com.google.firebase:firebase-auth:15.1.0"
        implementation "com.google.firebase:firebase-messaging:15.0.2"
        implementation "com.google.firebase:firebase-config:15.0.2"
        implementation "com.google.firebase:firebase-invites:15.0.1"
        implementation "com.google.firebase:firebase-ads:15.0.1"
        implementation "com.google.firebase:firebase-appindexing:15.0.1"
        implementation "com.google.firebase:firebase-perf:15.2.0"
        implementation "com.google.firebase:firebase-functions:15.0.0"
    }
}

apply plugin: 'com.google.gms.google-services'

также пришлось отредактировать Manifest.xml чтобы исправить библиотеку поддержки:

<application>

    <meta-data
        android:name="android.support.VERSION"
        android:value="27.1.1"
        tools:replace="android:value"/>

</application

Ответ 3

Сообщается о проблеме с привязкой данных и версии плагина google-services версии 3.3.0: https://issuetracker.google.com/issues/79122163

На сегодняшний день ошибка находится в "назначенном" состоянии.

Ответ 4

ОБНОВЛЕНИЕ Я мог бы скомпилировать

dataBinding.enabled false

В конфигурации Android и версии 3.3.0

ОРИГИНАЛ

Такая же проблема здесь с google-services: 3.3.0, которая является последней версией, но в соответствии с документами версии 3.2.1 следует использовать. Я смог скомпилировать следующие

 ext {
    kotlin_version = '1.2.41'
    firebaseCore = '15.0.2'
    authentication = '15.1.0'
    cloudFirestore = '16.0.0'
    cloudStorage = '15.0.2'
    crashlitics = '2.9.1'
    googleServices = '15.0.0'
    supportLibrary = '27.1.1'
    facebookSdkVersion = '4.31.0'
    twitterSdkVersion = '3.1.1'
    firebaseUI = '3.3.1'
}
 dependencies {

    classpath 'com.android.tools.build:gradle:3.2.0-alpha12'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

    classpath 'com.google.gms:google-services:3.2.1'
}

Ответ 5

Просто снижайте зависимость ваших сервисов GooglePlay до 3.2.1 :)

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

Ответ 6

Хотя это не отличное решение, я следил за рекомендацией Googler, упомянутой в трекерах об ошибках.

я использую

com.google.gms:google-services:3.3.1

Я включил привязку данных

'dataBinding.enabled true'

Я удалил ссылку плагина из сценария приложения gradle

//apply plugin: 'com.google.gms.google-services'

И следовали рекомендациям этой средней должности, чтобы включить все необходимые значения строки службы Google.

https://medium.com/@samstern_58566/how-to-use-firebase-on-android-without-the-google-services-plugin-93ecc7dc6c4

Мое приложение успешно работает, и все работает так, как ожидалось.

Ответ 7

Все работало после того, как я добавил google() maven внутри блока allProjects в моем проекте build.gradle следующим образом:

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        ...
    }
}

repositories {
    ...
}

// You need to add the google maven in this block.
allprojects {
    repositories {
        jcenter()
        google()
    }
}