Не удалось выполнить синхронизацию проекта 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), я сделал следующие шаги:
-
Я обновил файлы градиента, как указано, чтобы включить номера версий gms и firebase отдельно. Обновлена строка плагина apply, обновлена classpath. Я все еще получаю ошибку и не знаю причину.
-
Ниже приведены соответствующие файлы градиента:
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"
- Я вставил журнал ошибок на 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()
}
}