Cómo usar Data Binding y Kotlin en Android Studio 3.0.0
android-studio android-databinding (4)
Acabo de comenzar a usar Android Studio 3.0.0, pero cada vez que intento construir mi proyecto me sale este error:
Error:Circular dependency between the following tasks:
:app:compileDebugKotlin
+--- :app:dataBindingExportBuildInfoDebug
| /--- :app:compileDebugKotlin (*)
/--- :app:kaptDebugKotlin
/--- :app:dataBindingExportBuildInfoDebug (*)
(*) - details omitted (listed previously)
estoy usando
kapt "com.android.databinding:compiler:2.2.0"
Antes de usar
androidProcessor "com.android.databinding:compiler:2.2.0"
Y estaba funcionando bien ... ¿Qué estoy haciendo mal?
¡Gracias!
Para aquellos que todavía buscan una solución adecuada, Google ya ha solucionado este problema en Android Studio 3.0 Canary 3 build.
Viernes 2 de junio de 2017
Acabamos de lanzar Android Studio 3.0 Canary 3 para los canales Canary y Dev. El complemento Android Gradle 3.0.0-alpha3 también se lanzó a través de maven.google.com. Esta versión tiene correcciones para Gradle , Kotlin y muchas otras correcciones. Continuamos reparando errores en todas las áreas de Studio 3.0 a medida que estabilizamos nuestras características, así que continúe transmitiendo sus comentarios.
Configuración de trabajo gradle:
build.gradle (proyecto)
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 (módulo)
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"
}
Parece que necesita 3 entradas de gradle en la aplicación .gradle a nivel de módulo para agregar el enlace de datos
-
apply plugin: ''kotlin-kapt''
-
android { ... dataBinding { enabled = true } }
-
dependencies { ...... kapt "com.android.databinding:compiler:$compiler_version" }
Tenga en cuenta que hice que la versión del compilador sea una variable en el nivel de proyecto de construcción gradle para que pueda administrarse desde un solo lugar
el valor predeterminado era:
ext.kotlin_version = ''1.1.3-2''
Agregué con la sintaxis de soporte:
ext{
kotlin_version = ''1.1.3-2''
compiler_version = ''3.0.0-beta6''
}
Recientemente escribí Blog para Android de enlace de datos con Kotlin here
Use Classpath
classpath ''com.android.tools.build:gradle:3.0.0-beta2''
Dependencia
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''
}
para más detalles mira esta here
UPD:
Esto se corrigió para el complemento Android Gradle 3.0.0-alpha3, en la raíz del proyecto
build.gradle
, cambie las
dependencies
buildscript
para usar
classpath ''com.android.tools.build:gradle:3.0.0-alpha3''
Esto es en realidad un error en la interacción de Kotlin Gradle plugin 1.1.2-4 con el complemento Android Gradle 3.0.0-alpha1, causado por cómo se configuran las entradas y salidas de las tareas (y, por lo tanto, cómo se conectan las tareas con la relación depende de).
Gracias @VyacheslavGerasimov por crear el problema youtrack.jetbrains.com/issue/KT-17936 .
Como solución temporal, puede intentar volver al complemento Kotlin Gradle 1.1.2-2 y desactivar la compilación incremental:
En la raíz del proyecto
build.gradle
, cambie la versión del complemento Kotlin Gradle:
buildscript {
...
dependencies {
...
classpath ''org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-2''
}
}
Agregue
local.properties
a la raíz del proyecto, con la siguiente línea:
kotlin.incremental=false
Es un problema conocido que el complemento Kotlin Gradle 1.1.2-2 y versiones posteriores se bloquea con las versiones más recientes de AGP, y la desactivación de la compilación incremental parece corregir ese bloqueo.