solucionar - No se puede encontrar el símbolo DataBindingComponent en Android Studio 3.2 Proyecto Canary Kotlin 16
gradle project sync failed android studio 3.0 1 (27)
¡Este es mi error más estúpido! Realmente he creado una variable privada para Databinding y eso estaba causando este problema.
Simplemente use un
lateinit var binding
y funcionó.
¡Esto podría ayudar a alguien!
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 se 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 módulo de archivo 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"
}
El 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á la salida de 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é está mal con mi proyecto?
PD: El problema también ocurre en Android Studio 3.1.2.
Algo más que probar :) Estaba tratando de obtener GithubBrowserSample en Android Studio 3.2 (RC3). Seguí recibiendo muchos errores extraños en el enlace de datos, aunque no especifica las 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
Arreglo actualizando
Android Studio a Canary 16
Y esto en gradle.wrapper.properties
distributionUrl=https/://services.gradle.org/distributions/gradle-4.7-all.zip
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 VM de servidor de 64 bits de 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.
Tuve más de 100 de ellos. Resultó que esos errores no eran importantes y que el IDE no mostraba el verdadero error subyacente. Por lo tanto, aumenté el número 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 fallida de conflicto de fusión 😔
Daga también puede ser la causa.
Cambiar la versión de la daga 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á fuera, pero lamentablemente todavía no funcionará después de la prueba (¿Me he perdido algo?).
Actualización2
Dagger 2.19 tampoco funcionará y la discusión está bloqueada.
Pero
en google issuetracke
, hay soluciones / soluciones alternativas.
Probé y trabajaron.
Compruébalo si quieres usar la última Dagger.
Actualización3
Daga problema se ha solucionado en el Android Studio 3.3.
El mismo error aquí en Android Studio 3.3.1, no 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 {
}
Deja que se compile 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, provení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 quitar la interfaz ficticia hace que el compilador vuelva a ser feliz.
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 class
también tuve un
error: incompatible types: NonExistentClass cannot be converted to Annotation
asociada con
kotlinx.android.parcel.Parcelize
anotación (@Parcelize)
Android Studio 3.3; gradle-4.10.1-todos; tools.build:gradle 3.3.0
En mi caso fue una mala anotación de daga. Pongo un alcance personalizado en un módulo en lugar de ponerlo en un método de provisión.
¯/_(ツ)_/¯
En mi caso hubo un error de importación en uno de los archivos. Simplemente abriendo ese archivo, las importaciones se realizarán automáticamente y, posteriormente, se construirá el proyecto.
Es una pena que AS no haya dado ninguna indicación de esto, tampoco lo hizo el error stacktrace.
En caso de que nada de la respuesta publicada ayude, solo navegue por todos los archivos del proyecto y busque un archivo que tenga una declaración de importación incorrecta.
Es un error en el jetifier. Aquí hay una solución 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''
}
}
Finalmente solucioné mi problema porque estaba usando 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 por una semana y ahora estoy feliz. ¡Espero que esto le ayude también!
He intentado
classpath ''com.android.tools.build:gradle:3.2.0-beta05''
con y sin dependencia explícita
kapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"
Y sigue recibiendo la misma excepción.
También he intentado 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ó.
Las bibliotecas de enlace de datos se están refaccionando como parte de la refactorización de androidx.
Encontré el enlace de dependencia del procesador de anotación de datos del repositorio de Google here .
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 su dependencia del procesador de anotaciones en el archivo gradle, ya que el enlace de datos es capaz de resolver su dependencia.
Los errores de compilación para interfaces generadas como
DataBindingComponent
suelen ser engañosos.
Trate de buscar cualquier otro error de compilación y corríjalos primero, luego vuelva a compilarlos.
Mi problema fue que intenté habilitar el enlace de datos para mi módulo de
Login
pero no el módulo de la
App
.
Después de agregar:
dataBinding {
enabled = true
}
al módulo de la
App
y lo eliminó del módulo de
Login
, funcionó.
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, volver a compilar la aplicación y luego agregar el enlace de datos de nuevo solucionó este problema.
Cambié el
DataBindingUtil.setContentView(...)
para simplemente
setContentView(...)
y reduje mi diseño de 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>
A continuación, agregue el enlace de datos de nuevo en una pieza por pieza.
Para lo que vale, tuve un problema similar y fue el resultado de una consulta de sala incorrecta relacionada con un enlace de datos.
Resolví el error añadiendo
android.useAndroidX=true
android.enableJetifier=true
en el archivo gradle.properties de mi proyecto
Si está utilizando la biblioteca dataroom, verifique la anotación de @Dao en sus clases DAO. En mi caso, olvidé agregar @Dao a mi interfaz de RoomDatabase''Dao.
Si usa Room Database, verifique todas sus clases de Dao si tiene algún problema de importación o no especificó el TypeConverter que usa
@TypeConverters
, este error es engañoso, y debería solucionarse si actualiza la versión de las herramientas de construcción de gradle de nivel de proyecto a la última versión.
Utilicé
classpath ''com.android.tools.build:gradle:3.4.0''
y obtuve el error correctamente.
Si ya está utilizando la versión estable de Android Studio 3.2 , simplemente elimine la dependencia, ya está incluida.
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.
Simplemente elimine la dependencia kapt "com.android.databinding ...". Si está utilizando Android Studio 3.2 o una versión mayor.
Tenía el mismo problema cuando estaba importando una clase en el enlace de datos, que no existía. Tambien usar
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xmaxerrs" << "1000"
}
}
}
para recibir todos los mensajes de error para encontrar el problema. Para mi proyecto se limitó a 50.
Tuve el mismo problema.
Cambiar
Kapt
a
annotationProcessor
solo para DataBinding solucionó el problema.
Tuve que quitar la siguiente importación de Gradle,
androidx.room:room-compiler:2.1.0-alpha06
A pesar de que es un problema extraño, solo intenta eliminar las importaciones innecesarias, debería funcionar.
me enfrento a este problema cuando actualizo a Android Studio 3.2, cambio el plugin de Gradle de 3.2.0 a 3.1.4 y funciona bien -> Creo que es un problema de Gradle, se actualizará con seguridad muy pronto