No se puede encontrar el símbolo DataBindingComponent en el proyecto Android Studio 3.2 Canary 16 Kotlin

91

Acabo de crear un nuevo proyecto en Android Studio 3.2 Canary 16 con Kotlin habilitado. Luego también habilité el enlace de datos, pero recibo un error que dice que no pudo encontrar la clase DataBindingComponent.

Aquí está mi proyecto gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.2.41'
    ext.android_plugin_version = '3.2.0-alpha10'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0-alpha16'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Mi archivo de módulo gradle:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-kapt'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "net.julianonunes.myapp"
        minSdkVersion 22
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding {
        enabled = true
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    implementation 'com.android.support:design:27.1.1'
    kapt "com.android.databinding:compiler:3.1.2"
}

Xml de mi actividad:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="data"
            type="net.julianonunes.myapp.RegisterData" />
    </data>

    ....
</layout>

Y aquí está el resultado de la compilación:

Executing tasks: [clean, :app:assembleDebug]

Configuration on demand is an incubating feature.

> Configure project :app
app: 'annotationProcessor' dependencies won't be recognized as kapt annotation processors. Please change the configuration name to 'kapt' for these artifacts: 'androidx.databinding:databinding-compiler:3.2.0-alpha16'.

> Task :clean
> Task :app:clean
> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild
> Task :app:compileDebugAidl NO-SOURCE
> Task :app:compileDebugRenderscript
> Task :app:checkDebugManifest
> Task :app:generateDebugBuildConfig
> Task :app:prepareLintJar UP-TO-DATE
> Task :app:mainApkListPersistenceDebug
> Task :app:generateDebugResValues
> Task :app:generateDebugResources
> Task :app:mergeDebugResources
> Task :app:createDebugCompatibleScreenManifests
> Task :app:processDebugManifest
> Task :app:splitsDiscoveryTaskDebug
> Task :app:processDebugResources
> Task :app:generateDebugSources
> Task :app:dataBindingExportBuildInfoDebug
> Task :app:transformDataBindingBaseClassLogWithDataBindingMergeGenClassesForDebug
> Task :app:transformDataBindingWithDataBindingMergeArtifactsForDebug
> Task :app:dataBindingGenBaseClassesDebug
Download https://dl.google.com/dl/android/maven2/com/android/databinding/compiler/3.1.2/compiler-3.1.2.pom
Download https://dl.google.com/dl/android/maven2/com/android/databinding/compiler/3.1.2/compiler-3.1.2.jar
> Task :app:kaptGenerateStubsDebugKotlin
e: /home/juliano/Documents/Projetos/myapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/net/julianonunes/myapp/databinding/ActivityMainBinding.java:28: error: cannot find symbol
  protected ActivityMainBinding(DataBindingComponent _bindingComponent, View _root,
                                ^
  symbol:   class DataBindingComponent
  location: class ActivityMainBinding
e: /home/juliano/Documents/Projetos/myapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/net/julianonunes/myapp/databinding/ActivityMainBinding.java:46: error: cannot find symbol
      @Nullable ViewGroup root, boolean attachToRoot, @Nullable DataBindingComponent component) {
                                                                ^
  symbol:   class DataBindingComponent
  location: class ActivityMainBinding
e: /home/juliano/Documents/Projetos/myapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/net/julianonunes/myapp/databinding/ActivityMainBinding.java:57: error: cannot find symbol
      @Nullable DataBindingComponent component) {
                ^
  symbol:   class DataBindingComponent
  location: class ActivityMainBinding
e: /home/juliano/Documents/Projetos/myapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/net/julianonunes/myapp/databinding/ActivityMainBinding.java:68: error: cannot find symbol
      @Nullable DataBindingComponent component) {
                ^
  symbol:   class DataBindingComponent
  location: class ActivityMainBinding
e: [kapt] An exception occurred: java.lang.NullPointerException
    at java.io.File.<init>(File.java:277)
    at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:77)
    at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:203)
    at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:188)
    at android.databinding.annotationprocessor.ProcessDataBinding.doProcess(ProcessDataBinding.java:90)
    at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:65)
    at org.jetbrains.kotlin.kapt3.ProcessorWrapper.process(annotationProcessing.kt:131)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1068)
    at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:87)
    at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:45)
    at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.runAnnotationProcessing(Kapt3Extension.kt:257)
    at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:212)
    at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:95)
    at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM$analyzeFilesWithJavaIntegration$2.invoke(TopDownAnalyzerFacadeForJVM.kt:97)
    at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:107)
    at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:84)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:374)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:64)
    at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:101)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:365)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:130)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:161)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:63)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:107)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:51)
    at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:96)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$1$2.invoke(CompileServiceImpl.kt:405)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$1$2.invoke(CompileServiceImpl.kt:98)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:920)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:98)
    at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:950)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.doCompile(CompileServiceImpl.kt:919)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:404)
    at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

> Task :app:kaptDebugKotlin FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> Compilation error. See log for more details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.7/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 8s
20 actionable tasks: 19 executed, 1 up-to-date

¿Qué le pasa a mi proyecto?

PD: el problema también ocurre en Android Studio 3.1.2

Juliano Nunes Silva Oliveira
fuente
¿Obtuviste alguna solución?
Brijesh Joshi
@BrijeshJoshi vea mi respuesta a continuación
Edijae Crusar
Para mí, el verdadero error se imprimió después de esto. Después de corregir ese error, este también desaparece.
Mygod
1
En mi caso, no se mostró ningún otro error en el registro, pero después de revisar mis diferencias encontré una anotación no importada en algún archivo kt. Después de arreglar la importación, la compilación funciona. Parece haber algún problema en el procesador kapt.
androidguy
1
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. agregar esto para grade.propertiesresolver mi problema
MMK

Respuestas:

58

Las bibliotecas de enlace de datos se están refactorizando como parte de la refactorización de androidx.

Encontré el enlace de dependencia del procesador de anotaciones de enlace de datos del repositorio maven de Google aquí .

He construido la dependencia real de Gradle a partir de ahí.

kapt "androidx.databinding:databinding-compiler:3.2.0-alpha16"

Actualización A partir de Android Studio 3.2.0-beta01, el enlace de datos ya no necesita que se declare la dependencia del procesador de anotaciones en el archivo gradle, ya que el enlace de datos es capaz de resolver su dependencia.

Samuel Robert
fuente
4
Eliminé esta dependencia y probé todas las soluciones siguientes, pero nada parece funcionar
Sanjeev
¿Qué versión de estudio estás usando?
Samuel Robert
Android Studio 3.3 Canary 11 con gradle 4.10
Sanjeev
Error: no se puede encontrar el símbolo DataBindingComponent, tengo habilitado el enlace de datos para configurar en gradle, no sé cuál es el problema
Sanjeev
¿Habilitado DataBinding en gradle?
Samuel Robert
62

Con la siguiente configuración

Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, construido el 8 de octubre de 2018 JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: OpenJDK 64-Bit Server VM por JetBrains sro macOS 10.13.3

Y DataBinding simplemente habilita al tener esto en mi aplicación build.gradle

apply plugin: 'kotlin-kapt'

y entonces

    dataBinding {
        enabled = true
    }

y también esto en mis propiedades gradle.wrapper

android.databinding.enableV2=true

Tuve los mismos errores:

could not find the DataBindingComponent class.

Tenía más de 100 de ellos. Resultó que esos errores no eran importantes y que el IDE no mostró el verdadero error subyacente. Por lo tanto, aumenté la cantidad de errores que el compilador de Kotlin puede mostrar agregando esto en build.gradle:

dataBinding {
    enabled = true
}
kapt {
        javacOptions {
            // Increase the max count of errors from annotation processors.
            // Default is 100.
            option("-Xmaxerrs", 500)
        }
    }

De repente, justo debajo de todos esos errores falsos, vi el verdadero causado por una resolución de conflicto de fusión fallida 😔

Hamady C.
fuente
Hola, ¿cómo hago esto en un proyecto java?
Tosin John
montón de errores falsos inicialmente relacionados con DataBindingComponent. luego, cuando aumente el tamaño del error. Vi que era un problema al usar el visor incorrecto con la daga.
filthy_wizard
Esta fue la única solución que funcionó ... muchas gracias ... ayudó.
Deepak Ganachari
No se puede encontrar el símbolo DataBindingComponent mientras se compila desde la línea de comando usando ./gradlew assembleDebug
Chetan Chaudhari
3
¡Paso días en mi vida buscando errores sin mensajes ...! Gracias amigo, eres el hombre del año :-D
m.zander
31

Simplemente elimine la dependencia del compilador (kapt "com.android.databinding: compiler: $ gradleVersion), que funcionó para mí. Aparentemente, se proporciona con el complemento de enlace de 3.2.0.

Deividas Strioga
fuente
21

Si ya está utilizando la versión estable de Android Studio 3.2 , simplemente elimine la dependencia, ya está incluida.

Narek Hayrapetyan
fuente
3
Me lo resolvió, gracias. Deberían haber agregado una información sobre herramientas / autofix en el IDE.
SpaceMonkey
3
Doble por esto. Mi error fue un poco diferente, pero esta fue la causa principal. En caso de que alguien lo Caused by: java.lang.NullPointerException at java.io.File.<init>(File.java:277) at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:77) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:203) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:188) ...
busque en Google
20

Mismo error aquí en Android Studio 3.3.1, sin Kotlin, Java puro, usando androidx

build.gradle contiene

    dataBinding {
        enabled true
    }

gradle.properties contiene

android.useAndroidX=true
android.enableJetifier=true
android.databinding.enableV2=true

He estado luchando contra el problema durante horas y luego lo resolví de la siguiente manera:

Declare temporalmente una interfaz vacía para DataBindingComponent en su proyecto (en src/main/java/androidx.databinding/DataBindingComponent.java)

package androidx.databinding;

public interface DataBindingComponent {
}

Déjelo compilar y el error desaparecerá. Pero ahora se revelará el error de raíz real. El que en realidad estaba causando todos los problemas, pero de alguna manera fue tragado. En mi caso, venía de AutoValue, lo que indica que lo estaba usando incorrectamente

error: Parameter type java.lang.Boolean of setter method should be boolean to match getter

arreglar eso y luego eliminar la interfaz ficticia vuelve feliz al compilador.

Ginie
fuente
Muchas gracias por esta respuesta. He luchado mucho por este problema.
Farooq Zaman
Muchas gracias por esto
kkl260
1
Dios mío, gracias, gracias, gracias. ¡¡Esto funcionó !! ¡gracias! Estaba migrando a androidx y en las etapas finales, después de terminar, tuve como 70 errores como OP. Tu truco reveló 13 errores subyacentes. ¿Dije gracias? : D
Alberto Garrido
Ahora es Android Studio 3.6.1. Todavía es necesario seguir este truco para ver el error real. :(
krishh
¡Esto es genial! ¡Gracias!
Takeshi Kaga
15

Por lo que vale, tuve un problema similar y fue el resultado de una consulta de Room incorrecta que estaba relacionada con un enlace de datos.

Bink
fuente
1
funciona para mí, desactivé typeconverter para verificar y funcionó
Murat
2
¡Gracias! También tuve un problema con la habitación. Estaba usando ArrayListcomo retorno a una consulta donde tiene que ser un List.
Van
1
Esto es malo. Un problema completamente ajeno a la habitación causa este problema.
Carson Holzheimer
Esto NO es exclusivo de Room. Cualquier otro procesador de anotaciones que utilice puede generar una excepción durante la compilación, fallando antes de que el procesador DataBinding entre en juego.
Vitor Hugo Schwaab
y ese error quedó enterrado entre el error planteado como la pregunta.
Reejesh PK
14

En mi caso fue una mala anotación. Pongo un alcance personalizado en un módulo en lugar de ponerlo en un método proporciona.

¯\_(ツ)_/¯

mbonnin
fuente
1
Me faltaba una declaración de importación para un valor de anotación y un parámetro de método. Con Dagger 2.19 obtuve la tontería de enlace de datos anterior. Afortunadamente, Dagger 2.21 me apuntó en la dirección correcta.
Eugen Pechanec
8

Tuve el mismo problema.

Cambiar Kapta annotationProcessorsolo para DataBinding solucionó el problema para mí.

Saeed.re
fuente
7

Me enfrento a este problema al actualizar a Android Studio 3.2, cambio el complemento de Gradle de 3.2.0 a 3.1.4 y funciona bien -> Creo que es un problema de Gradle, seguro que se actualizará muy pronto

B.mansouri
fuente
intente cambiar el gradle y eliminar kapt "com.android.databinding: compiler: 3.1.2"
B.mansouri
No estoy usando en absoluto kapt "com.android.databinding: compiler: 3.1.2", pero descubrí el problema, se debía a la estructura incorrecta del paquete y al mover archivos de una carpeta a otra
Sanjeev
6

La daga también puede ser la causa. Cambiar la versión de dagger de 2.17 a 2.16 puede solucionar este problema por ahora.

Discusión: https://github.com/google/dagger/issues/1245

Actualizar

Dagger 2.18 está disponible, pero desafortunadamente aún no funcionará después de que lo probé (¿me he perdido algo?).

Actualización2

Dagger 2.19 tampoco funcionará y la discusión está bloqueada.

Pero en la lista de problemas de Google , hay soluciones / soluciones. Probé y funcionaron. Márcalo si quieres usar la última Dagger.

Actualización3

El problema de Dagger se ha solucionado en Android Studio 3.3.

Dewey Reed
fuente
También estoy bastante seguro de que es causado por Dagger2 en mi / nuestro caso. La documentación oficial de DataBindingComponent incluso menciona a dagger: "Si usa Dagger 2, el desarrollador debe extender esta interfaz y anotar la interfaz extendida como un Componente". (fuente: developer.android.com/reference/android/databinding/… ). Pero no entiendo exactamente qué hacer aquí y si solucionará el error.
muetzenflo
@muetzenflo Tu información parece prometedora. Intentaré extender ese componente y ver si puede corregir el error.
Dewey Reed
@muetzenflo Probé la solución pero no funcionó. Supongo que solo tiene efectos cuando la aplicación se está ejecutando, pero el problema ocurre en el tiempo de compilación.
Dewey Reed
2.19 está disponible y el problema sigue ahí
Ernest Zamelczyk
@ErnestZamelczyk Tienes razón. Pero encontré una solución en el seguimiento de problemas. Compruebe la respuesta actualizada si está interesado.
Dewey Reed
5

Finalmente solucioné mi problema porque estaba usando las anotaciones de Android y lanzaron una nueva versión 4.5.1 hace 1 hora, donde son compatibles con Grade Plugin 3.2.0.

Estuve buscando este error durante una semana y ahora estoy feliz. ¡Espero que esto le ayude también!

Sandra
fuente
4

Mi problema fue que intenté habilitar el enlace de datos para mi Loginmódulo pero no para el Appmódulo. Después de agregar:

dataBinding {
    enabled = true
}

al Appmódulo y lo quitó del Loginmódulo, funcionó.

Aleksander Aleksic
fuente
Usted señor, salvó mi carrera en el trabajo por cuenta propia. Fue como prueba y error durante más de 8 horas. Sin embargo, debo decir que me faltaba "buildFeatures.dataBinding = true" en el módulo de la aplicación. También tuve que configurar lo mismo para todos los módulos de funciones. Que tu vida esté siempre llena de miel y leche.
nulldroid
2

Lo he intentado classpath 'com.android.tools.build:gradle:3.2.0-beta05' con y sin dependencia explícitakapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"

Y sigue recibiendo la misma excepción.

También probé 3.3.0-alpha06 pero nada cambió.

ACTUALIZACIÓN: Después de 2 días, resolví el problema. Lo que hice fue arreglar manualmente todos los archivos que tenían problemas debido a la migración a AndroidX (paquetes incorrectos en importaciones y XML, etc.). Además, necesitaba actualizar Glide de 4.7 a 4.8. Cuando arreglé todos los archivos rojos, el problema desapareció.

Stanislaw Baranski
fuente
2

¡Este es mi error más estúpido! De hecho, he creado una variable privada para el enlace de datos y eso estaba causando este problema.

Solo usa a lateinit var bindingy funcionó.

¡Esto podría ayudar a alguien!

Kannan_SJD
fuente
Esto resolvió el problema conmigo. ¡Gracias! Me tomó 2 horas encontrar esto y no me desplacé lo suficiente para ver tu comentario. :(
Oliver Metz
¡Me alegro de que esto te haya ayudado! ¡Los errores de enlace de datos son difíciles de interpretar!
Kannan_SJD
2

Simplemente elimine la dependencia kapt "com.android.databinding ...". Si está utilizando Android Studio 3.2 o una versión superior.

Naimish Vinchhi
fuente
2

En mi caso, si usa el módulo de funciones dinámicas:

build.gradle (aplicación)

dataBinding {
    enabled true
}

Esto debe habilitarse tanto en archivos gradle raíz como secundarios (no olvide agregar el complemento kapt).

zeromod
fuente
THANNNNKKKKKK YOOOOOUUUUUUUU FFS
ilansas
@zeromod ¿Puedes agregar qué complemento kapt? Además, ¿qué pasa si no tengo kotlin en mi proyecto?
Shubham Agrawal
1

Lo solucioné actualizando Android Studio a Canary 16 Y esto en gradle.wrapper.propertiesdistributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip

Eduardo Dornel
fuente
2
Ya estoy usando Canary 16 y Gradle 4.7, pero no funciona.
Juliano Nunes Silva Oliveira
Estoy usando Android Studio 3.3 Canary 11 y Gradle 4.10, y recibo el error, por lo que esta solución no me
sirve
1

Resolví el error agregando

android.useAndroidX=true
android.enableJetifier=true

en el archivo gradle.properties de mi proyecto

Edijae Crusar
fuente
No funcionó para mí. ¿Qué hace lo anterior? ¿Dónde lo encontraste?
Amir Uval
1
@auval android.useAndroidX:Cuando se establece en true, esta bandera indica que desea comenzar a usar AndroidX a partir de ahora. Si la bandera está ausente, Android Studio se comporta como si la bandera estuviera configurada en false. android.enableJetifier:Cuando se establece en true, esta marca indica que desea tener soporte de herramientas (del complemento Gradle de Android) para convertir automáticamente las bibliotecas de terceros existentes como si estuvieran escritas para AndroidX. Si la bandera está ausente, Android Studio se comporta como si la bandera estuviera configurada en false.
Edijae Crusar
No funcionó para mí, estoy usando Android Studio 3.3, estos parámetros ya están presentes
Sanjeev
Esto definitivamente es necesario si migra a Android X y usa el enlace de datos, etc. Migré en una máquina pero el error apareció en una diferente porque gradle.properties no está en el control de fuente
Daniel Wilson
1

En mi caso, el problema se resolvió cambiando:

androidExtensions.experimental = true

(es decir, Gradle DSL como una sola línea)

a

androidExtensions {
    experimental = true
}

además de could not find the DataBindingComponent classque también me había error: incompatible types: NonExistentClass cannot be converted to Annotationasociado con la kotlinx.android.parcel.Parcelizeanotación (@Parcelize)

Android Studio 3.3; gradle-4.10.1-todos; tools.build:gradle 3.3.0

kosiara - Bartosz Kosarzycki
fuente
1

Tuve el mismo problema cuando estaba importando la clase en el enlace de datos, que no existía. También use

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xmaxerrs" << "1000"
        }
    }
}

para recibir todos los mensajes de error para encontrar el problema. Para mi proyecto estaba limitado a 50.

Jan Moravec
fuente
1

Para mí, hubo un error en mi archivo de diseño. Hice referencia a una función que no existía.

android:text="@{() -> sleepTrackerViewModel.nightStrings}"

A continuación se muestra la solución:

android:text="@{sleepTrackerViewModel.nightStrings}"

Zainab
fuente
0

Algo más para probar :) Estaba tratando de obtener el GithubBrowserSample en Android Studio 3.2 (RC3). Seguí recibiendo muchos errores extraños en el enlace de datos a pesar de que no especifica versiones de enlace de datos en el build.gradle principal. La solución fue eliminar estas dos líneas de gradle.properties:

org.gradle.jvmargs=-Xmx4536m
android.databinding.enableV2=true
Daniel Wilson
fuente
0

Mi situación:

Android Studio v3.2.1

com.android.tools.build:gradle:3.2.1

https://services.gradle.org/distributions/gradle-4.10.2-all.zip

Descubrí que al eliminar el enlace de datos de mi diseño, recompilar la aplicación y luego volver a agregar el enlace de datos solucionó este problema.

Cambié el DataBindingUtil.setContentView(...)a solo setContentView(...)y reduje el diseño de mi actividad al mínimo:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello"/>

</FrameLayout>

Luego, vuelva a agregar la vinculación de datos pieza por pieza.

Capataz
fuente
0

En mi caso, hubo un error de importación en uno de los archivos. Simplemente abrir ese archivo hizo que las importaciones ocurrieran automáticamente y luego se construyó el proyecto.

Es una lástima que AS no haya dado ninguna indicación de esto, ni tampoco el seguimiento de pila de errores.

En caso de que nada de la respuesta publicada ayude, simplemente navegue por todos los archivos del proyecto y busque un archivo que tenga una declaración de importación incorrecta.

azizbeko
fuente
0

Es un error en el jetificador. Aquí hay una solución alternativa por ahora hasta la próxima actualización. Pon esto en tu proyecto gradle:

buildscript {
    dependencies {
        classpath 'com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta02'
    }
}
Ernest Zamelczyk
fuente
0

Si está utilizando la biblioteca de la sala de datos, verifique la anotación @Dao en sus clases de DAO. En mi caso, olvidé agregar @Dao a mi interfaz de RoomDatabase'Dao.

bdpqchen
fuente
0

Los errores de compilación para las interfaces generadas DataBindingComponentsuelen ser engañosos. Intente buscar otros errores de compilación y corríjalos primero, luego vuelva a compilar.

owjsub
fuente
0

Tuve que eliminar la siguiente importación de Gradle,

androidx.room:room-compiler:2.1.0-alpha06

Aunque es un problema extraño, solo intente eliminar las importaciones innecesarias, debería funcionar.

Zumry Mohamed
fuente
0

Si lo usa con Room Database, verifique todas sus clases de Dao si tiene algún problema de importación o si no especifica el TypeConverter requerido @TypeConverters, este error es engañoso y debe corregirse si actualiza la versión de las herramientas de compilación de Gradle a nivel de proyecto a la última versión. Usé classpath 'com.android.tools.build:gradle:3.4.0'y obtuve el error correctamente.

abitcode
fuente
0

Para mi caso, hubo algún error en la clase de elemento de la base de datos de Room ... El error se refería al modificador privado que debería ser público para las variables miembro de la clase de elemento de la base de datos de Room.

Utilice y explore la línea de comandos ./gradlew assembleDebug para ver stacktrace.

# Habitación # Base de datos # Clase de tabla #DAO

Himanshu Mori
fuente