android android-studio kotlin android-databinding android-studio-3.0

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

  1. apply plugin: ''kotlin-kapt''
  2. android { ... dataBinding { enabled = true } }
  3. 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.