Intereting Posts
как закрыть kotlin coroutines максимальный параллелизм Android: вертикальное пространство вокруг текста с пользовательским шрифтом Невозможно использовать .toChar () после readLine () Создание регистратора на уровне пакета без класса Почему я не вижу ничего полезного в logcat при вызове метода из Kotlin? Kotlin coroutines: использование синхронного использования cassandra vs для перевода асинхронного использования admob banner использует слишком много памяти Как использовать выражение Lamba, чтобы сделать вызовы метода Java менее подробными в Kotlin? Разделите раму google-vision на два Могу ли я использовать @autowire (spring-context) для настольного приложения kotlin? Отражение Java-конструктора исключает исключение с помощью закрытых классов Фрагмент Назад стоп из второго фрагмента в первый фрагмент Как указать @Throws для свойства в интерфейсе Создание MediaPlayer внутри цикла Kotlin stdlib и привязка данных

Проблема с привязкой данных с помощью Kotlin для Android

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

Error:(66, 0) Could not find method kapt() for arguments [com.android.databinding:compiler:2.0.0-beta6] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 

У меня есть следующие зависимости для привязки данных в моем файле gradle

 dependencies { ... kapt 'com.android.databinding:compiler:2.0.0-beta6' } kapt { generateStubs = true } 

Solutions Collecting From Web of "Проблема с привязкой данных с помощью Kotlin для Android"

Изменить: с Kotlin 1.1 и Kapt3 он работает несколько иначе:

в вашем проекте build.gradle :

 buildscript { ext { ... plugin_version = "2.3.1" kotlin_version = "1.1.2-3" ... } ... dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.android.tools.build:gradle:$plugin_version" ... } } 

и в вашем приложении build.gradle :

  apply plugin: "kotlin-android" apply plugin: "kotlin-kapt" ... android { ... dataBinding { enabled = true } ... } dependencies { ... kapt "com.android.databinding:compiler:$plugin_version" ... } 

Очень важно, чтобы версия компилятора databinding и версия плагина были идентичны.
Также обратите внимание, что с помощью kapt3 вы больше не должны использовать флаг generateStubs .


Старый ответ

Если подключить плагин Android Studio недостаточно, вам также нужно немного настроить ваши файлы градиента (добавьте и примените kotlin-gradle-plugin ). Вот выдержки из моих файлов градиентов с работающими Java и Kotlin Databinding

В вашем проекте build.gradle :

 buildscript { ... dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.5" classpath 'com.android.tools.build:gradle:2.2.3' ... } } 

и в вашем приложении build.gradle :

 apply plugin: "kotlin-android" ... android { ... dataBinding { enabled = true } ... } kapt { generateStubs = true } dependencies { ... kapt "com.android.databinding:compiler:2.2.0" ... } 

(Я использую более новую версию компилятора привязки данных здесь, вы, вероятно, тоже должны это сделать)

Попытайтесь включить недостающие блоки в ваши файлы градиентов с помощью следующего исходного файла источника градиента.

Уровень приложения Build.Gradle

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' android { compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { applicationId "com.example.adventure.abc" minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main.java.srcDirs += 'src/main/kotlin/com/dougritter/marvelmovies' } dataBinding { enabled = true } } kapt { generateStubs = true } dependencies { //Compatibility compile fileTree(dir: 'libs', include: ['*.jar']) compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) kapt 'com.android.databinding:compiler:2.3.0' //Libraries testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support:design:25.3.1' compile 'com.android.support:support-vector-drawable:25.3.1' compile 'com.android.support:support-v4:25.3.1' compile project(':domain') compile project(':androidutils') compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.jakewharton.timber:timber:4.5.1' } 

Уровень проекта Build.Gradle

  // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.1.2-2' repositories { maven { url 'https://maven.google.com' } jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-alpha1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() maven { url 'https://maven.google.com' } mavenCentral() } } task clean(type: Delete) { delete rootProject.buildDir }