tutorial - Problema con el enlace de datos usando Kotlin para Android
the android gradle plugin supports only kotlin gradle plugin version 1.2.51 and higher (2)
Edición: Con Kotlin 1.1 y Kapt3 funciona ligeramente diferente:
en tu proyecto 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"
...
}
}
y en tu app build.gradle
:
apply plugin: "kotlin-android"
apply plugin: "kotlin-kapt"
...
android {
...
dataBinding {
enabled = true
}
...
}
dependencies {
...
kapt "com.android.databinding:compiler:$plugin_version"
...
}
Es realmente importante que la versión del compilador de enlace de datos y la versión del complemento sean idénticas.
También tenga en cuenta que con kapt3
, ya no debe usar la kapt3
generateStubs
.
Respuesta antigua
Tener el complemento de Android Studio habilitado no es suficiente, también necesita ajustar un poco sus archivos de gradle (agregue y aplique el kotlin-gradle-plugin
) Aquí hay algunos extractos de mis archivos de gradle con Java y Kotlin Databinding.
En tu proyecto build.gradle
:
buildscript {
...
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.5"
classpath ''com.android.tools.build:gradle:2.2.3''
...
}
}
y en tu app build.gradle
:
apply plugin: "kotlin-android"
...
android {
...
dataBinding {
enabled = true
}
...
}
kapt {
generateStubs = true
}
dependencies {
...
kapt "com.android.databinding:compiler:2.2.0"
...
}
(Estoy usando una versión más reciente del compilador de enlace de datos aquí, probablemente debería hacer esto también)
Estoy tratando de habilitar el enlace de datos para mi proyecto de Android usando Kotlin. Tengo el complemento Kotlin habilitado, pero no puedo habilitar el enlace de datos. Sigo recibiendo el siguiente error
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
Tengo las siguientes dependencias para el enlace de datos en mi archivo de gradle
dependencies {
...
kapt ''com.android.databinding:compiler:2.0.0-beta6''
}
kapt {
generateStubs = true
}
Intente incluir los bloques que faltan en sus archivos de gradle con la ayuda de la siguiente fuente de referencia de archivo de gradle.
Nivel de aplicación 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''
}
Nivel de proyecto 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
}