Não é possível encontrar o símbolo DataBindingComponent no projeto Android Studio 3.2 Canary 16 Kotlin

90

Acabei de criar um novo projeto no Android Studio 3.2 Canary 16 com Kotlin habilitado. Em seguida, também habilitei a vinculação de dados, mas estou recebendo um erro informando que não foi possível encontrar a classe DataBindingComponent.

Este é o meu projeto 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
}

Meu arquivo gradle do módulo:

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 da minha atividade:

<?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>

E aqui está o resultado da compilação:

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

O que há de errado com meu projeto?

PS: O problema também acontece no Android Studio 3.1.2

Juliano Nunes Silva Oliveira
fonte
você conseguiu alguma solução?
Brijesh Joshi
@BrijeshJoshi veja minha resposta abaixo
Edijae Crusar
Para mim, o verdadeiro erro foi impresso depois disso. Depois de corrigir esse erro, este também desaparece.
Mygod
1
No meu caso, nenhum outro erro foi mostrado no log, mas depois de revisar minhas diferenças, encontrei uma anotação não importada em algum arquivo kt. Depois de corrigir a importação, crie obras. Parece haver algum problema no processador kapt.
androidguy
1
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. adicionar isso para grade.propertiesresolver meu problema
MMK

Respostas:

58

Bibliotecas de ligação de dados estão sendo refatoradas como parte da refatoração do androidx.

Encontrei o link de dependência do processador de anotação de ligação de dados do repositório maven do Google aqui .

Eu construí a dependência gradle real a partir daí.

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

Atualização A partir do Android Studio 3.2.0-beta01, a vinculação de dados não precisa mais que sua dependência do processador de anotação seja declarada no arquivo gradle, uma vez que a vinculação de dados é capaz de resolver sua dependência.

Samuel Robert
fonte
4
Removi esta dependência e tentei todas as soluções abaixo, mas nada parece estar funcionando
Sanjeev
Qual versão de estúdio você está usando?
Samuel Robert
Android Studio 3.3 Canary 11 com gradle 4.10
Sanjeev
Erro: não é possível encontrar o símbolo DataBindingComponent, tenho que permitir vinculação de dados no gradle, não sei qual é o problema
Sanjeev
DataBinding habilitado no gradle?
Samuel Robert
61

Com a seguinte configuração

Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, construído em 8 de outubro de 2018 JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: OpenJDK 64-Bit Server VM da JetBrains sro macOS 10.13.3

E o DataBinding simplesmente habilita tendo isso em meu app build.gradle

apply plugin: 'kotlin-kapt'

e depois

    dataBinding {
        enabled = true
    }

e também isso nas minhas propriedades gradle.wrapper

android.databinding.enableV2=true

Eu tive os mesmos erros:

could not find the DataBindingComponent class.

Eu tive mais de 100 deles. Descobriu-se que esses erros não eram importantes e que o verdadeiro erro subjacente não foi mostrado pelo IDE. Portanto, aumentei o número de erros que o compilador Kotlin pode exibir adicionando isto em build.gradle:

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

De repente, logo abaixo de todos aqueles erros falsos, vi o verdadeiro causado por uma falha na resolução de conflito de mesclagem 😔

Hamady C.
fonte
Oi, como faço isso em um projeto java?
Tosin John
monte de erros falsos inicialmente para fazer com DataBindingComponent. então, quando eu aumentar o tamanho do erro. Percebi que era um problema usar o escopo incorreto com a adaga.
filthy_wizard
Esta foi a única solução que funcionou .. Muito obrigado .. ajudou.
Deepak Ganachari
Não é possível encontrar o símbolo DataBindingComponent durante a compilação da linha de comando usando ./gradlew assembleDebug
Chetan Chaudhari
3
Passo dias na minha vida procurando erros sem mensagens ...! Obrigado amigo, você é o homem do ano :-D
m.zander
31

Basta excluir a dependência do compilador (kapt "com.android.databinding: compiler: $ gradleVersion), que funcionou para mim. Aparentemente, ele é fornecido com o plugin de ligação de 3.2.0.

Deividas Strioga
fonte
21

Se você já está usando a versão estável do Android Studio 3.2 , basta remover a dependência, ela já está incluída.

Narek Hayrapetyan
fonte
3
Resolvido para mim, obrigado. Eles deveriam ter adicionado uma dica de ferramenta / autofix no IDE.
SpaceMonkey
3
Duplique por isso. Meu erro foi um pouco diferente, mas essa foi a causa raiz. Caso alguém pesquise no Google: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) ...
cayleyh
20

Mesmo erro aqui no Android Studio 3.3.1, sem Kotlin, Java puro, usando androidx

build.gradle contém

    dataBinding {
        enabled true
    }

gradle.properties contém

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

Estou lutando contra o problema há horas e, em seguida, resolvi-o da seguinte maneira:

Declarar temporariamente uma interface vazia para DataBindingComponent em seu projeto (em src/main/java/androidx.databinding/DataBindingComponent.java)

package androidx.databinding;

public interface DataBindingComponent {
}

Deixe-o compilar e o erro desaparecerá. Mas agora o erro raiz real será revelado. O que estava realmente causando todos os problemas, mas foi de alguma forma engolido. No meu caso, vinha do AutoValue, indicando que eu o estava usando incorretamente

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

consertar isso e remover a interface fictícia deixa o compilador feliz novamente.

Ginie
fonte
Muito obrigado por esta resposta. Eu tenho lutado muito por causa desse problema.
Farooq Zaman
Muito obrigado por isso
kkl260
1
OMG, obrigado, obrigado, obrigado. Isso funcionou !! obrigado! Eu estava migrando para o androidx e na fase final, após terminar, tinha uns 70 erros como OP. Seu truque revelou 13 erros subjacentes. Eu disse obrigado? : D
Alberto Garrido
Agora é o Android Studio 3.6.1. Ainda precisa seguir este truque para ver o erro real. :(
krishh
Isso é ótimo! Obrigado!
Takeshi Kaga
15

Pelo que vale a pena, eu tive um problema semelhante e foi o resultado de uma consulta incorreta do Room que estava relacionada a uma vinculação de dados.

Bink
fonte
1
funciona para mim, desativei o conversor de tipos para cheque e funcionou
Murat VAROL 01 de
2
Obrigado! Eu tive um problema com relação ao quarto também. Eu estava usando ArrayListcomo retorno a uma consulta onde tem que ser um List.
Van
1
Isto é mau. Um problema totalmente não relacionado na sala causa esse problema.
Carson Holzheimer
Isso NÃO é exclusivo do Room. Qualquer outro processador de anotação que você usar pode lançar uma exceção durante a compilação, falhando antes que o processador DataBinding entre em jogo.
Vitor Hugo Schwaab
e esse erro permaneceu enterrado entre o erro declarado como a questão.
Reejesh PK
14

No meu caso, foi uma anotação de punhal ruim. Eu coloquei o escopo personalizado em um módulo em vez de colocá-lo em um método fornece.

¯\_(ツ)_/¯

mbonnin
fonte
1
Eu tinha uma declaração de importação ausente para um valor de anotação e parâmetro de método. Com Dagger 2.19 eu entendi o absurdo da ligação de dados acima. Felizmente, Dagger 2.21 me indicou a direção certa.
Eugen Pechanec
8

Eu tive o mesmo problema.

Mudar Kaptpara annotationProcessorapenas para DataBinding corrigiu o problema para mim.

Saeed.re
fonte
7

Eu enfrento esse problema ao atualizar para o Android Studio 3.2, eu mudo o plugin do Gradle 3.2.0 para 3.1.4 e ele funciona bem -> eu acho que é um problema do Gradle, ele será atualizado com certeza muito em breve

B.mansouri
fonte
tente alterar o gradle e remover kapt "com.android.databinding: compiler: 3.1.2"
B.mansouri
Não estou usando kapt "com.android.databinding: compiler: 3.1.2", mas descobri o problema, era devido à estrutura de pacote errada e à movimentação de arquivos de uma pasta para outra
Sanjeev
6

A adaga também pode ser a causa. Alterar a versão do punhal de 2.17 de volta para 2.16 pode corrigir esse problema por enquanto.

Discussão: https://github.com/google/dagger/issues/1245

Atualizar

O Dagger 2.18 foi lançado, mas infelizmente ainda não funcionará depois que eu testei (Será que perdi algo?).

Update2

Dagger 2.19 também não funcionará e a discussão está bloqueada.

Mas no google issuetracke , existem soluções / soluções alternativas. Eu testei e eles funcionaram. Marque se quiser usar o punhal mais recente.

Update3

O problema do punhal foi corrigido no Android Studio 3.3.

Dewey Reed
fonte
Também tenho certeza de que é causado por Dagger2 em meu / nosso caso. A documentação oficial do DataBindingComponent menciona até mesmo o dagger: "Se estiver usando o Dagger 2, o desenvolvedor deve estender essa interface e anotar a interface estendida como um componente." (fonte: developer.android.com/reference/android/databinding/… ). Mas não entendo exatamente o que fazer aqui e se vai consertar o erro.
muetzenflo
@muetzenflo Suas informações parecem promissoras. Vou tentar estender esse componente e ver se ele pode corrigir o erro.
Dewey Reed,
@muetzenflo Já tentei a solução, mas não funcionou. Eu acho que só surte efeito quando o aplicativo está rodando, mas o problema acontece durante a compilação.
Dewey Reed
2.19 foi lançado e o problema ainda está lá
Ernest Zamelczyk
@ErnestZamelczyk Você está certo. Mas encontrei alguma solução alternativa no issuetracker. Verifique a resposta atualizada se estiver interessado.
Dewey Reed
5

Finalmente resolvi meu problema porque estava usando o Android Annotations e eles lançaram uma nova versão 4.5.1 há 1 hora, onde suportam o Grade Plugin 3.2.0.

Procurei esse bug por uma semana e estou feliz agora. Espero que isso ajude voçe tambem!

Sandra
fonte
3

Meu problema é que tentei habilitar a vinculação de dados para meu Loginmódulo, mas não para o Appmódulo. Depois de adicionar:

dataBinding {
    enabled = true
}

para o Appmódulo e removê-lo do Loginmódulo, funcionou.

Aleksander Aleksic
fonte
2

Eu tentei classpath 'com.android.tools.build:gradle:3.2.0-beta05' com e sem dependência explícitakapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"

E ainda obtendo a mesma exceção.

Eu também tentei 3.3.0-alpha06, mas nada mudou.

ATUALIZAÇÃO: após 2 dias, resolvi o problema. O que fiz foi consertar manualmente todos os arquivos que apresentavam problemas, por causa da Migração para AndroidX (pacotes errados nas importações e XMLs etc.). Além disso, eu precisava atualizar o Glide de 4.7 para 4.8. Quando consertei todos os arquivos vermelhos, o problema desapareceu.

Stanislaw Baranski
fonte
2

Este é o meu erro mais estúpido! Na verdade, criei uma variável privada para Databinding e isso estava causando esse problema.

Basta usar um lateinit var bindinge funcionou.

Isso pode ajudar alguém!

Kannan_SJD
fonte
Isso resolveu o problema comigo. Obrigado! Levei 2 horas para encontrar isso e não rolei para baixo o suficiente para ver seu comentário. :(
Oliver Metz,
Que bom que isso ajudou você! Erros de ligação de dados são difíceis de interpretar !!
Kannan_SJD
2

Basta remover a dependência kapt "com.android.databinding ...". Se você estiver usando o Android Studio 3.2 ou uma versão superior.

Naimish Vinchhi
fonte
2

No meu caso, se você estiver usando o Módulo de recursos dinâmicos:

build.gradle (app)

dataBinding {
    enabled true
}

Isso precisa ser habilitado nos arquivos gradle raiz e filho (não se esqueça de adicionar o plugin kapt).

zeromod
fonte
THANNNNKKKKKK YOOOOOUUUUUUUU FFS
ilansas
1

Corrijo -o atualizando o Android Studio para Canary 16 E isso em gradle.wrapper.propertiesdistributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip

Eduardo dornel
fonte
2
Já estou usando o Canary 16 e o ​​Gradle 4.7, mas não está funcionando.
Juliano Nunes Silva Oliveira
Estou usando o Android Studio 3.3 Canary 11 e Gradle 4.10 e estou recebendo o erro, então esta solução não serve para mim
Sanjeev
1

Resolvi o erro adicionando

android.useAndroidX=true
android.enableJetifier=true

no arquivo gradle.properties do meu projeto

Edijae Crusar
fonte
Não funcionou para mim. O que o acima faz? Onde você achou isso?
Amir Uval
1
@auval android.useAndroidX:Quando definido como true, este sinalizador indica que você deseja começar a usar o AndroidX a partir de agora. Se o sinalizador estiver ausente, o Android Studio se comportará como se o sinalizador estivesse definido como false. android.enableJetifier:Quando definido como true, este sinalizador indica que você deseja ter suporte de ferramenta (do plug-in Android Gradle) para converter automaticamente bibliotecas de terceiros existentes como se fossem escritas para AndroidX. Se o sinalizador estiver ausente, o Android Studio se comportará como se o sinalizador estivesse definido como false.
Edijae Crusar
Não funcionou para mim, estou usando o Android Studio 3.3. Esses parâmetros já estão presentes
Sanjeev
Isso é definitivamente necessário se você migrar para o Android X e usar databinding etc. Eu migrei em uma máquina, mas o erro apareceu em outra porque gradle.properties não está no controle de origem
Daniel Wilson
1

No meu caso, o problema foi resolvido alterando:

androidExtensions.experimental = true

(ou seja, gradle DSL como um liner)

para

androidExtensions {
    experimental = true
}

Além de could not find the DataBindingComponent classque também tinha error: incompatible types: NonExistentClass cannot be converted to Annotationassociado com kotlinx.android.parcel.Parcelizeanotação (@Parcelize)

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

kosiara - Bartosz Kosarzycki
fonte
1

Tive o mesmo problema quando estava importando aula no databinding, que não existia. Também use

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

para receber todas as mensagens de erro para encontrar o problema. Para meu projeto, foi limitado a 50.

Jan Moravec
fonte
1

Para mim, ocorreu um erro no meu arquivo de layout. Referenciei uma função que não existia.

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

Abaixo está a solução:

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

Zainab
fonte
0

Outra coisa para tentar :) Eu estava tentando obter o GithubBrowserSample no Android Studio 3.2 (RC3). Continuei recebendo muitos erros estranhos na vinculação de dados, embora ela não especifique as versões de vinculação de dados no build.gradle principal. A solução foi remover essas duas linhas de gradle.properties:

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

Minha situação:

Android Studio v3.2.1

com.android.tools.build:gradle:3.2.1

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

Descobri que, ao remover a ligação de dados do meu layout, recompilar o aplicativo e, em seguida, adicionar a ligação de dados de volta corrigiu esse problema.

Mudei o DataBindingUtil.setContentView(...)para justo setContentView(...)e reduzi meu layout de atividade ao 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>

Em seguida, adicione a ligação de dados peça por peça.

Capataz
fonte
0

No meu caso, ocorreu um erro de importação em um dos arquivos. Basta abrir esse arquivo para que as importações ocorram automaticamente e, a partir daí, o projeto seja construído.

É uma pena que o AS não tenha dado nenhuma indicação para isso, nem o rastreamento de pilha de erros.

Caso nada da resposta postada ajude - basta navegar por todos os arquivos do projeto e procurar um arquivo que tenha declaração de importação incorreta.

azizbekian
fonte
0

É um bug no jetificador. Aqui está uma solução alternativa por enquanto até a próxima atualização. Coloque isso no gradle do seu projeto:

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

Se você estiver usando a biblioteca da dataroom, verifique a anotação @Dao em suas classes DAO. No meu caso, esqueci de adicionar @Dao à minha interface do RoomDatabase'Dao.

bdpqchen
fonte
0

Erros de compilação para interfaces geradas como DataBindingComponentgeralmente são enganosos. Tente procurar por quaisquer outros erros de compilação e corrija-os primeiro, depois recompile.

Owjsub
fonte
0

Tive que remover a seguinte importação do Gradle,

androidx.room:room-compiler:2.1.0-alpha06

Mesmo que seja um problema estranho, tente remover para importações desnecessárias, ele deve funcionar.

Zumry Mohamed
fonte
0

Se estiver usando com o Room Database, verifique todas as suas classes Dao se você tiver algum problema de importação ou não especificou o TypeConverter necessário usando @TypeConverters, esse erro é enganoso e deve ser corrigido se você atualizar a versão das ferramentas de compilação gradle em nível de projeto para a mais recente. Usei classpath 'com.android.tools.build:gradle:3.4.0'e obtive o erro corretamente.

abitcode
fonte
0

No meu caso, houve algum erro na classe de item do banco de dados Room ... O erro foi sobre o modificador privado que deve ser público para variáveis ​​de membro da classe de item db Room.

Use e explore a linha de comando ./gradlew assembleDebug para ver o stacktrace .

#Room #Database #Table class #DAO

Himanshu Mori
fonte