Как использовать привязку данных и 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" 

И он работал нормально … Что я делаю неправильно?

Благодаря!

Кажется, что вам нужно 3 записи градиента в приложении .gradle на уровне модуля, чтобы добавить привязку данных

  1. apply plugin: 'kotlin-kapt'
  2. android { ... dataBinding { enabled = true } }
  3. dependencies { ...... kapt "com.android.databinding:compiler:$compiler_version" }

Обратите внимание, что я сделал версию компилятора переменной в градиенте построения уровня проекта, поэтому ее можно управлять из одного места

default: ext.kotlin_version = '1.1.3-2'

Я добавил с помощью синтаксиса:

 ext{ kotlin_version = '1.1.3-2' compiler_version = '3.0.0-beta6' } 

UPD: это было исправлено для плагина Android Gradle 3.0.0-alpha3, в корневой build.gradle root проекта build.gradle , измените dependencies buildscript для использования

 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 вашего проекта 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, и отключение инкрементной компиляции, похоже, устраняет эту ошибку.

Для тех, кто все еще ищет подходящее решение, Google уже исправил эту проблему в Android Studio 3.0 Canary 3 build.

Пятница, 2 июня 2017 г.

Мы только что выпустили Android Studio 3.0 Canary 3 в Канарские и Dev-каналы. Android Gradle Plugin 3.0.0-alpha3 также был выпущен через maven.google.com. В этом выпуске есть исправления для Gradle , Kotlin и многих других исправлений. Мы продолжаем исправлять ошибки во всех областях Studio 3.0, поскольку мы стабилизируем наши функции, поэтому, пожалуйста, продолжайте передавать отзывы.

Рабочая конфигурация градиента:

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" } 

Я недавно написал «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' } 

для более подробного ознакомления с этой записью