Как использовать привязку данных и Kotlin в Android Studio 3.0.0
Я только начал использовать Android Studio 3.0.0, но каждый раз, когда я пытаюсь построить свой проект, я получаю эту ошибку:
Error:Circular dependency between the following tasks:
:app:compileDebugKotlin
+--- :app:dataBindingExportBuildInfoDebug
| \--- :app:compileDebugKotlin (*)
\--- :app:kaptDebugKotlin
\--- :app:dataBindingExportBuildInfoDebug (*)
(*) - details omitted (listed previously)
Я использую
kapt "com.android.databinding:compiler:2.2.0"
Прежде чем я использовал
androidProcessor "com.android.databinding:compiler:2.2.0"
И он работал нормально... Что я делаю неправильно?
Спасибо!
Ответы
Ответ 1
Кажется, что вам нужно 3 gradle записи в приложении .gradle на уровне модуля, чтобы добавить привязку данных
-
apply plugin: 'kotlin-kapt'
-
android {
...
dataBinding {
enabled = true
}
}
-
dependencies {
......
kapt "com.android.databinding:compiler:$compiler_version"
}
Обратите внимание, что я сделал версию компилятора переменной на уровне проекта gradle, поэтому ее можно управлять из одного места
default: ext.kotlin_version = '1.1.3-2'
Я добавил с помощью синтаксиса:
ext{
kotlin_version = '1.1.3-2'
compiler_version = '3.0.0-beta6'
}
Ответ 2
UPD: Это было исправлено для Android Gradle плагина 3.0.0-alpha3, в корневом каталоге проекта build.gradle
, измените buildscript
dependencies
на
classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
Это на самом деле ошибка в плагине Kotlin Gradle 1.1.2-4, взаимодействующем с плагином Android Gradle 3.0.0-alpha1, вызванным тем, как устанавливаются входы и выходы задач (и таким образом, как задачи связаны с зависимым от отношения).
Спасибо @Вячеслав Герасимов за создание проблемы KT-17936.
В качестве временного обходного пути вы можете попытаться вернуться к плагину Kotlin Gradle 1.1.2-2 и отключить инкрементную компиляцию:
В корневом каталоге проекта build.gradle
измените версию плагина Kotlin Gradle:
buildscript {
...
dependencies {
...
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-2'
}
}
Добавьте local.properties
к корню проекта со следующей строкой:
kotlin.incremental=false
Это известная проблема, что плагин Kotlin Gradle 1.1.2-2 и ниже сбой с новейшими версиями AGP, и отключение инкрементной компиляции, похоже, устраняет эту ошибку.
Ответ 3
Для тех, кто все еще ищет подходящее решение, Google уже исправил эту проблему в Android Studio 3.0 Canary 3.
Пятница, 2 июня 2017 года
Мы только что выпустили Android Studio 3.0 Canary 3 на Канарские острова и Дев-каналы. Также был выпущен Android Gradle Plugin 3.0.0-alpha3 через maven.google.com. Этот выпуск имеет исправления для Gradle, Kotlin, и многие другие исправления. Мы продолжаем исправлять ошибки во всех областях Studio 3.0, поскольку мы стабилизируем наши возможности, поэтому, пожалуйста, продолжайте передавать отзывы.
Работа с конфигурацией Gradle:
build.gradle(проект)
buildscript {
ext.kotlin_version = '1.1.2-4'
repositories {
jcenter()
maven {
url 'https://maven.google.com'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
build.gradle(модуль)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
android {
dataBinding.enabled = true
}
dependencies {
kapt "com.android.databinding:compiler:3.0.0-alpha3"
}
Ответ 4
Я недавно написал "Blog for Data Binding android" с Kotlin здесь
Использовать Classpath
classpath 'com.android.tools.build:gradle:3.0.0-beta2'
Зависимость
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
...
dataBinding {
enabled = true
}
}
dependencies {
......
kapt 'com.android.databinding:compiler:2.3.1'
}
для более подробного ознакомления с этим post