Impossible de trouver le symbole DataBindingComponent sur le projet Android Studio 3.2 Canary 16 Kotlin


90

Je viens de créer un nouveau projet sur Android Studio 3.2 Canary 16 avec Kotlin activé. Ensuite, j'ai également activé la liaison de données, mais j'obtiens une erreur indiquant qu'il n'a pas pu trouver la classe DataBindingComponent.

Voici mon projet 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
}

Mon fichier gradle de module:

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"
}

Le xml de mon activité:

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

Et voici le résultat de la construction:

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

Quel est le problème avec mon projet?

PS: Le problème se produit également sur Android Studio 3.1.2


avez-vous une solution?
Brijesh Joshi

@BrijeshJoshi voir ma réponse ci
Edijae Crusar

Pour moi, la véritable erreur a été imprimée après cela. Après avoir corrigé cette erreur, celle-ci disparaît également.
Mygod

1
Dans mon cas, aucune autre erreur n'a été affichée dans le journal, mais après avoir examiné mes différences, j'ai trouvé une annotation non importée dans un fichier kt. Après avoir corrigé l'importation, la construction fonctionne. Semble être un problème dans le processeur kapt.
androidguy

1
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. l'ajout de ceci pour grade.propertiesrésoudre mon problème
MMK

Réponses:


58

Les bibliothèques de liaison de données sont en cours de refactorisation dans le cadre de la refactorisation d'Androidx.

J'ai trouvé le lien de dépendance du processeur d'annotation de liaison de données à partir du référentiel maven de Google ici .

J'ai construit la dépendance réelle de gradle à partir de là.

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

Mise à jour Depuis le studio Android 3.2.0-beta01, la liaison de données n'a plus besoin que sa dépendance de processeur d'annotation soit déclarée dans le fichier gradle, car la liaison de données est capable de résoudre sa dépendance.


4
J'ai supprimé cette dépendance et essayé toutes les solutions ci-dessous mais rien ne semble fonctionner
Sanjeev

Quelle version de studio utilisez-vous?
Samuel Robert

Android studio 3.3 Canary 11 avec gradle 4.10
Sanjeev

Erreur: impossible de trouver le symbole DataBindingComponent, j'ai l'activation de la liaison de données en gradle, je ne sais pas quel est le problème
Sanjeev

Activé DataBinding dans le gradle?
Samuel Robert

61

Avec la configuration suivante

Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, construit le 8 octobre 2018 JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: VM serveur OpenJDK 64 bits par JetBrains sro macOS 10.13.3

Et DataBinding permet simplement de l'avoir dans mon application build.gradle

apply plugin: 'kotlin-kapt'

puis

    dataBinding {
        enabled = true
    }

et aussi ceci dans mes propriétés gradle.wrapper

android.databinding.enableV2=true

J'ai eu les mêmes erreurs:

could not find the DataBindingComponent class.

J'en avais plus de 100. Il s'est avéré que ces erreurs n'étaient pas importantes et que la véritable erreur sous-jacente n'était pas montrée par l'EDI. Par conséquent, j'ai augmenté le nombre d'erreurs que le compilateur Kotlin peut afficher en ajoutant ceci dans build.gradle:

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

Un tout à coup, juste en dessous de toutes ces fausses erreurs, j'ai vu la vraie causée par une résolution de conflit de fusion ratée 😔


Salut, comment puis-je faire cela dans un projet java?
Tosin John

tas de fausses erreurs initialement à faire avec DataBindingComponent. puis quand j'augmente la taille de l'erreur. J'ai vu que c'était un problème avec moi en utilisant la mauvaise portée avec le poignard.
filthy_wizard

C'était la seule solution qui fonctionnait ... Merci beaucoup ... cela a aidé.
Deepak Ganachari

Impossible de trouver le symbole DataBindingComponent lors de la construction à partir de la ligne de commande à l'aide de ./gradlew assembleDebug
Chetan Chaudhari

3
Je passe des jours dans ma vie à rechercher des erreurs sans messages ...! Merci mon pote, tu es l'homme de l'année :-D
m.zander

31

Supprimez simplement la dépendance du compilateur (kapt "com.android.databinding: compiler: $ gradleVersion), qui a fonctionné pour moi. Apparemment, il est fourni avec le plugin de liaison de 3.2.0.


21

Si vous utilisez déjà la version stable d' Android Studio 3.2 , supprimez simplement la dépendance, elle est déjà incluse.


3
Résolu pour moi, merci. Ils devraient avoir ajouté une info-bulle / une correction automatique dans l'EDI.
SpaceMonkey

3
Doublez pour cela. Mon erreur était un peu différente mais c'était la cause première. Au cas où quelqu'un googlerait pour cela: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

Même erreur ici sur Android Studio 3.3.1, pas de Kotlin, pur Java, en utilisant androidx

build.gradle contient

    dataBinding {
        enabled true
    }

gradle.properties contient

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

Je lutte contre le problème depuis des heures, puis je l'ai résolu comme suit:

Déclarez temporairement une interface vide pour DataBindingComponent dans votre projet (in src/main/java/androidx.databinding/DataBindingComponent.java)

package androidx.databinding;

public interface DataBindingComponent {
}

Laissez-le compiler et l'erreur disparaîtra. Mais maintenant, l'erreur racine réelle sera révélée. Celui qui causait tous les problèmes mais qui a été avalé d'une manière ou d'une autre. Dans mon cas, il provenait d'AutoValue indiquant que je ne l'utilisais pas correctement

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

réparer cela et ensuite supprimer l'interface factice rend le compilateur heureux à nouveau.


Merci beaucoup pour cette réponse. J'ai beaucoup lutté à cause de ce problème.
Farooq Zaman

Merci beaucoup pour cela
kkl260

1
OMG, merci, merci, merci. Cela a fonctionné !! Merci! J'étais en train de migrer vers androidx et dans les dernières étapes, après avoir terminé, j'ai eu comme 70 erreurs comme OP. Votre astuce a révélé 13 erreurs sous-jacentes. Ai-je dit merci? : D
Alberto Garrido

C'est maintenant Android Studio 3.6.1. Il faut toujours suivre cette astuce pour voir l'erreur réelle. :(
krishh

C'est bien! Je vous remercie!
Takeshi Kaga le

15

Pour ce que ça vaut, j'ai eu un problème similaire et c'était le résultat d'une mauvaise requête de salle qui était liée à une liaison de données.


1
fonctionne pour moi, j'ai désactivé le convertisseur de type pour vérifier et cela a fonctionné
Murat VAROL

2
Merci! J'ai eu un problème concernant la chambre aussi. J'utilisais ArrayListcomme retour à une requête où il doit s'agir d'un fichier List.
Van

1
C'est mauvais. Un problème totalement indépendant dans la salle provoque ce problème.
Carson Holzheimer

Ce n'est PAS exclusif à Room. Tout autre processeur d'annotation que vous utilisez peut lever une exception lors de la compilation, échouant avant que le processeur DataBinding n'entre en jeu.
Vitor Hugo Schwaab le

et cette erreur est restée enfouie entre l'erreur énoncée comme la question.
Reejesh PK le

14

Dans mon cas, c'était une mauvaise annotation de poignard. J'ai mis une portée personnalisée sur un module au lieu de le mettre sur une méthode fournit.

¯\_(ツ)_/¯


1
J'avais une déclaration d'importation manquante pour une valeur d'annotation et un paramètre de méthode. Avec Dagger 2.19, j'ai obtenu le non-sens de liaison de données ci-dessus. Heureusement, Dagger 2.21 m'a orienté dans la bonne direction.
Eugen Pechanec

8

J'ai eu le même problème.

Le passage Kaptà annotationProcessoruniquement pour DataBinding a résolu le problème pour moi.


7

Je suis confronté à ce problème lors de la mise à jour vers android studio 3.2, je change le plugin gradle de 3.2.0 à 3.1.4 et cela fonctionne bien -> je pense que c'est un problème gradle, il sera mis à jour à coup sûr très bientôt


essayez de changer le gradle et de supprimer kapt "com.android.databinding: compiler: 3.1.2"
B.mansouri

Je n'utilise pas du tout kapt "com.android.databinding: compiler: 3.1.2", mais j'ai compris le problème, il était dû à une mauvaise structure de paquet et au déplacement de fichiers d'un dossier à un autre
Sanjeev

6

Dagger peut également en être la cause. Changer la version de la dague de 2.17 à 2.16 peut résoudre ce problème pour le moment.

Discussion: https://github.com/google/dagger/issues/1245

Mettre à jour

Dagger 2.18 est sorti mais malheureusement il ne fonctionnera toujours pas après avoir testé (ai-je manqué quelque chose?).

Mise à jour2

Dagger 2.19 ne fonctionnera pas non plus et la discussion est verrouillée.

Mais dans Google issuetracke , il existe des solutions / contournements. J'ai testé et ils ont fonctionné. Cochez-le si vous souhaitez utiliser la dernière Dagger.

Mise à jour3

Le problème de la dague a été corrigé dans Android Studio 3.3.


Je suis également presque sûr que cela est causé par Dagger2 dans mon / notre cas. La documentation officielle de DataBindingComponent mentionne même dagger: "Si vous utilisez Dagger 2, le développeur doit étendre cette interface et annoter l'interface étendue en tant que composant." (source: developer.android.com/reference/android/databinding/… ). Mais je ne comprends pas exactement quoi faire ici et si cela corrigera l'erreur.
muetzenflo

@muetzenflo Vos informations semblent prometteuses. Je vais essayer d'étendre ce composant et voir s'il peut corriger l'erreur.
Dewey Reed

@muetzenflo J'ai essayé la solution mais cela n'a pas fonctionné. Je suppose que cela ne prend des effets que lorsque l'application est en cours d'exécution, mais le problème se produit au moment de la compilation.
Dewey Reed

2.19 est sorti et le problème est toujours là
Ernest Zamelczyk

@ErnestZamelczyk Vous avez raison. Mais j'ai trouvé une solution de contournement dans le issuetracker. Vérifiez la réponse mise à jour si vous êtes intéressé.
Dewey Reed

5

J'ai finalement résolu mon problème car j'utilisais les annotations Android et ils ont publié une nouvelle version 4.5.1 il y a 1 heure, où ils prennent en charge Grade Plugin 3.2.0.

Je cherchais ce bug depuis une semaine et je suis heureux maintenant. J'espère que ça va t'aider aussi!


3

Mon problème était que j'ai essayé d'activer la liaison de données pour mon Loginmodule mais pas le Appmodule. Après avoir ajouté:

dataBinding {
    enabled = true
}

au Appmodule et l'a retiré du Loginmodule, cela a fonctionné.


2

J'ai essayé classpath 'com.android.tools.build:gradle:3.2.0-beta05' avec et sans dépendance explicitekapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"

Et toujours la même exception.

J'ai également essayé 3.3.0-alpha06 mais rien n'a changé.

MISE À JOUR: après 2 jours, j'ai résolu le problème. Ce que j'ai fait, c'est de réparer manuellement tous les fichiers qui avaient des problèmes, à cause de la migration vers AndroidX (mauvais packages dans les importations et XML, etc.). De plus, j'avais besoin de mettre à jour Glide de 4.7 à 4.8. Lorsque j'ai corrigé tous les fichiers rouges, le problème a disparu.


2

C'est ma plus stupide erreur! J'ai en fait créé une variable privée pour la liaison de données et cela causait ce problème.

Utilisez simplement un lateinit var bindinget cela a fonctionné.

Cela pourrait aider quelqu'un!


Cela a résolu le problème avec moi. Merci! Il m'a fallu 2 heures pour le trouver et je n'ai pas fait défiler assez loin pour voir votre commentaire. :(
Oliver Metz

Heureux que cela vous ait aidé! Les erreurs de liaison de données sont difficiles à interpréter !!
Kannan_SJD

2

Supprimez simplement la dépendance kapt "com.android.databinding ...". Si vous utilisez Android Studio 3.2 ou une version supérieure.


2

Dans mon cas, si vous utilisez le module de fonctionnalités dynamiques:

build.gradle (application)

dataBinding {
    enabled true
}

Cela doit être activé à la fois sur les fichiers de graduation racine et enfants (n'oubliez pas d'ajouter le plugin kapt).


THANNNNKKKKKK YOOOOOUUUUUUUU FFS
ilansas


1

J'ai résolu l'erreur en ajoutant

android.useAndroidX=true
android.enableJetifier=true

dans le fichier gradle.properties de mon projet


Cela n'a pas fonctionné pour moi. Que fait ce qui précède? Où l'as tu trouvé?
Amir Uval

1
@auval android.useAndroidX:Lorsqu'il est défini sur true, cet indicateur indique que vous souhaitez commencer à utiliser AndroidX à partir de maintenant. Si l'indicateur est absent, Android Studio se comporte comme si l'indicateur était défini sur false. android.enableJetifier:Lorsqu'il est défini sur true, cet indicateur indique que vous souhaitez bénéficier d'une prise en charge d'outils (à partir du plug-in Android Gradle) pour convertir automatiquement les bibliothèques tierces existantes comme si elles étaient écrites pour AndroidX. Si l'indicateur est absent, Android Studio se comporte comme si l'indicateur était défini sur false.
Edijae Crusar

Cela n'a pas fonctionné pour moi, j'utilise Android Studio 3.3 ces paramètres sont déjà présents
Sanjeev

Ceci est absolument nécessaire si vous migrez vers Android X et utilisez la liaison de données, etc. J'ai migré sur une machine mais l'erreur est apparue sur une autre car gradle.properties n'est pas dans le contrôle de code source
Daniel Wilson

1

Dans mon cas, le problème a été résolu en modifiant:

androidExtensions.experimental = true

(c.-à-d. gradle DSL comme une seule ligne)

à

androidExtensions {
    experimental = true
}

à part could not find the DataBindingComponent classj'avais aussi error: incompatible types: NonExistentClass cannot be converted to Annotationassocié à l' kotlinx.android.parcel.Parcelizeannotation (@Parcelize)

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


1

J'ai eu le même problème lorsque j'importais une classe dans la liaison de données, cela n'existait pas. Utiliser aussi

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

pour recevoir tous les messages d'erreur pour trouver le problème. Pour mon projet, il était limité à 50.


1

Pour moi, il y avait une erreur dans mon fichier de mise en page. J'ai fait référence à une fonction qui était inexistante.

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

Voici la solution:

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


0

Quelque chose d'autre à essayer :) J'essayais d'obtenir le GithubBrowserSample dans Android Studio 3.2 (RC3). J'ai continué à recevoir beaucoup d'erreurs étranges sur la liaison de données même si cela ne spécifie pas les versions de liaison de données dans le build.gradle principal. La solution était de supprimer ces deux lignes du gradle.properties:

org.gradle.jvmargs=-Xmx4536m
android.databinding.enableV2=true

0

Ma situation:

Android Studio v3.2.1

com.android.tools.build:gradle:3.2.1

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

J'ai constaté qu'en supprimant la liaison de données de ma mise en page, en recompilant l'application, puis en y ajoutant la liaison de données, ce problème était résolu.

J'ai changé la disposition de mon activité DataBindingUtil.setContentView(...)juste setContentView(...)et réduit au strict minimum:

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

Puis rajoutez la liaison de données pièce par pièce.


0

Dans mon cas, il y a eu une erreur d'importation dans l'un des fichiers. Le simple fait d'ouvrir ce fichier faisait que les importations se produisaient automatiquement et le projet était ensuite construit.

C'est dommage qu'AS n'ait donné aucune indication à cela, ni l'erreur stacktrace.

Dans le cas où rien de la réponse publiée ne vous aide, surfez simplement sur tous les fichiers du projet et recherchez un fichier contenant une déclaration d'importation incorrecte.


0

C'est un bug dans le jetifier. Voici une solution de contournement pour l'instant jusqu'à la prochaine mise à jour. Mettez ceci dans votre gradle de projet:

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

0

Si vous utilisez la bibliothèque de dataroom, vérifiez l'annotation @Dao dans vos classes DAO. Dans mon cas, j'ai oublié d'ajouter @Dao à mon interface de RoomDatabase'Dao.


0

Les erreurs de construction pour les interfaces générées comme DataBindingComponentsont généralement trompeuses. Essayez de rechercher toutes les autres erreurs de construction et corrigez-les d'abord, puis recompilez.


0

J'ai dû supprimer l'importation suivante de Gradle,

androidx.room:room-compiler:2.1.0-alpha06

Même si son problème étrange, essayez simplement de supprimer les importations inutiles, cela devrait fonctionner.


0

Si vous utilisez avec la base de données de salle, vérifiez toutes vos classes Dao si vous avez un problème d'importation ou si TypeConverter n'est pas spécifié requis à l'aide @TypeConverters, cette erreur est trompeuse et doit être corrigée si vous mettez à jour la version des outils de construction gradle au niveau du projet vers la dernière. J'ai utilisé classpath 'com.android.tools.build:gradle:3.4.0'et obtenu une erreur correctement.


0

Dans mon cas, il y avait une erreur dans la classe d'éléments de la base de données de la salle ... L'erreur concernait le modificateur privé qui devrait être public pour les variables membres de la classe d'éléments de la base de données de la salle.

Utilisez et explorez la ligne de commande ./gradlew assembleDebug pour voir stacktrace.

#Room #Database #Table class #DAO

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.