Das Symbol DataBindingComponent kann im Android Studio 3.2 Canary 16 Kotlin-Projekt nicht gefunden werden


90

Ich habe gerade ein neues Projekt auf Android Studio 3.2 Canary 16 mit aktiviertem Kotlin erstellt. Dann habe ich auch die Datenbindung aktiviert, aber es wird eine Fehlermeldung angezeigt, dass die DataBindingComponent-Klasse nicht gefunden werden konnte.

Hier ist mein Projekt 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
}

Meine Modul-Gradle-Datei:

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

Die XML meiner Aktivität:

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

Und hier ist die Build-Ausgabe:

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

Was ist los mit meinem Projekt?

PS: Das Problem tritt auch unter Android Studio 3.1.2 auf


Hast du eine Lösung bekommen?
Brijesh Joshi

@BrijeshJoshi siehe meine Antwort unten
Edijae Crusar

Für mich wurde der wahre Fehler danach tatsächlich gedruckt. Nachdem dieser Fehler behoben wurde, verschwindet auch dieser.
Mygod

1
In meinem Fall wurde kein anderer Fehler im Protokoll angezeigt, aber nachdem ich meine Unterschiede überprüft hatte, fand ich in einer kt-Datei eine nicht importierte Anmerkung. Nach dem Korrigieren des Imports funktioniert Build. Scheint ein Problem im kapt-Prozessor zu sein.
AndroidGy

1
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. Hinzufügen, um grade.propertiesmein Problem zu lösen
MMK

Antworten:


58

Datenbindungsbibliotheken werden im Rahmen des Androidx-Refactorings überarbeitet.

Ich habe hier den Link zur Abhängigkeit des Datenbindungs-Annotationsprozessors aus dem Maven-Repository von Google gefunden .

Ich habe die tatsächliche Gradle-Abhängigkeit von dort konstruiert.

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

Update Ab Android Studio 3.2.0-beta01 muss für die Datenbindung die Abhängigkeit des Anmerkungsprozessors nicht mehr in der Gradle-Datei deklariert werden, da die Datenbindung ihre Abhängigkeit auflösen kann.


4
Ich habe diese Abhängigkeit entfernt und alle unten aufgeführten Lösungen ausprobiert, aber nichts scheint zu funktionieren
Sanjeev

Welche Studioversion benutzt du?
Samuel Robert

Android Studio 3.3 Canary 11 mit Gradle 4.10
Sanjeev

Fehler: Symbol DataBindingComponent kann nicht gefunden werden, ich habe Datenbindung aktiviert, um in Gradle zu ture, ich weiß nicht, was das Problem ist
Sanjeev

Aktivierte Datenbindung im Gradle?
Samuel Robert

60

Mit dem folgenden Setup

Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, erstellt am 8. Oktober 2018 JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: OpenJDK 64-Bit-Server-VM von JetBrains sro macOS 10.13.3

Und DataBinding wird einfach aktiviert, indem Sie dies in meiner App build.gradle haben

apply plugin: 'kotlin-kapt'

und dann

    dataBinding {
        enabled = true
    }

und auch das in meinen gradle.wrapper Eigenschaften

android.databinding.enableV2=true

Ich hatte die gleichen Fehler:

could not find the DataBindingComponent class.

Ich hatte mehr als 100 davon. Es stellte sich heraus, dass diese Fehler nicht wichtig waren und dass der wahre zugrunde liegende Fehler von der IDE nicht angezeigt wurde. Daher habe ich die Anzahl der Fehler erhöht, die der Kotlin-Compiler anzeigen kann, indem ich diese in build.gradle hinzufügte:

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

Plötzlich, direkt unter all diesen falschen Fehlern, sah ich den echten, der durch eine fehlgeschlagene Lösung von Zusammenführungskonflikten verursacht wurde 😔


Hallo, wie mache ich das in einem Java-Projekt?
Tosin John

Eine Reihe von gefälschten Fehlern, die anfänglich mit DataBindingComponent zu tun haben. dann, wenn ich die Fehlergröße erhöhe. Ich sah, dass es ein Problem mit mir war, das falsche Zielfernrohr mit Dolch zu verwenden.
filthy_wizard

Dies war die einzige Lösung, die funktioniert hat. Vielen Dank. Es hat geholfen.
Deepak

Das Symbol DataBindingComponent kann beim Erstellen über die Befehlszeile mit ./gradlew assembleDebug
Chetan Chaudhari am

3
Ich verbringe Tage in meinem Leben damit, Fehler ohne Nachrichten zu suchen ...! Danke Kumpel, du bist der Mann des Jahres :-D
m.zander

31

Löschen Sie einfach die Compiler-Abhängigkeit (kapt "com.android.databinding: compiler: $ gradleVersion), die für mich funktioniert hat. Anscheinend ist sie mit einem Bindungs-Plugin ab 3.2.0 ausgestattet.


21

Wenn Sie bereits eine stabile Version von Android Studio 3.2 verwenden , entfernen Sie einfach die Abhängigkeit, sie ist bereits enthalten.


3
Hat es für mich gelöst, danke. Sie sollten einen Tooltip / Autofix in der IDE hinzugefügt haben.
SpaceMonkey

3
Verdoppeln Sie dafür. Mein Fehler war etwas anders, aber dies war die Hauptursache. Für den Fall, dass jemand dafür googelt: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

Gleicher Fehler hier auf Android Studio 3.3.1, kein Kotlin, reines Java, mit Androidx

build.gradle enthält

    dataBinding {
        enabled true
    }

gradle.properties enthält

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

Ich habe stundenlang gegen das Problem gekämpft und es dann wie folgt gelöst:

Deklarieren Sie vorübergehend eine leere Schnittstelle für DataBindingComponent in Ihrem Projekt (in src/main/java/androidx.databinding/DataBindingComponent.java).

package androidx.databinding;

public interface DataBindingComponent {
}

Lassen Sie es kompilieren und der Fehler wird verschwunden sein. Aber jetzt wird der eigentliche Grundfehler aufgedeckt. Derjenige, der tatsächlich den ganzen Ärger verursachte, aber irgendwie verschluckt wurde. In meinem Fall kam es von AutoValue und zeigte an, dass ich es falsch verwendet habe

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

Das zu beheben und dann die Dummy-Schnittstelle zu entfernen, macht den Compiler wieder glücklich.


Vielen Dank für diese Antwort. Ich habe wegen dieses Problems viel zu kämpfen.
Farooq Zaman

Vielen Dank dafür
kkl260

1
OMG, danke, danke, danke. Das hat funktioniert !! Danke! Ich war auf AndroidX migriert und in der letzten Phase hatte ich nach Abschluss 70 Fehler wie OP. Ihr Trick enthüllte 13 zugrunde liegende Fehler. Habe ich danke gesagt? : D
Alberto Garrido

Es ist jetzt Android Studio 3.6.1. Befolgen Sie diesen Trick noch, um den tatsächlichen Fehler zu sehen. :(
krishh

Das ist toll! Danke dir!
Takeshi Kaga

15

Für das, was es wert ist, hatte ich ein ähnliches Problem und es war das Ergebnis einer schlechten Raumabfrage, die sich auf eine Datenbindung bezog.


1
funktioniert für mich, ich habe den Typkonverter zur Überprüfung deaktiviert und es hat funktioniert
Murat VAROL

2
Vielen Dank! Ich hatte auch ein Problem mit Room. Ich habe ArrayListals Rückkehr zu einer Abfrage verwendet, bei der es sich um eine handeln muss List.
Van

1
Das ist schlecht. Ein völlig unabhängiges Problem im Raum verursacht dieses Problem.
Carson Holzheimer

Dies ist NICHT exklusiv für Room. Jeder andere von Ihnen verwendete Anmerkungsprozessor kann während der Kompilierung eine Ausnahme auslösen, die fehlschlägt, bevor der DataBinding-Prozessor ins Spiel kommt.
Vitor Hugo Schwaab

und dieser Fehler blieb zwischen dem als Frage angegebenen Fehler begraben.
Reejesh PK

14

In meinem Fall war es eine schlechte Dolchanmerkung. Ich habe einem Modul einen benutzerdefinierten Bereich zugewiesen, anstatt ihn einer Bereitstellungsmethode zuzuweisen.

¯\_(ツ)_/¯


1
Ich hatte eine fehlende Importanweisung für einen Anmerkungswert und einen Methodenparameter. Mit Dagger 2.19 habe ich den obigen Datenbindungsquatsch bekommen. Zum Glück hat mich Dolch 2.21 in die richtige Richtung gelenkt.
Eugen Pechanec

8

Ich hatte das gleiche Problem.

Das Ändern Kaptauf annotationProcessornur für DataBinding hat das Problem für mich behoben.


7

Ich bin mit diesem Problem konfrontiert, wenn ich auf Android Studio 3.2 aktualisiere. Ich ändere das Gradle-Plugin von 3.2.0 auf 3.1.4 und es funktioniert einwandfrei.> Ich denke, es ist ein Gradle-Problem. Es wird mit Sicherheit sehr bald aktualisiert


versuchen Sie, den Gradle zu ändern und kapt "com.android.databinding: compiler: 3.1.2" zu entfernen
B.mansouri

Ich verwende kapt "com.android.databinding: compiler: 3.1.2" überhaupt nicht, aber ich habe das Problem herausgefunden, es lag an der falschen Paketstruktur und dem Verschieben von Dateien von einem Ordner in einen anderen
Sanjeev

6

Dolch kann auch die Ursache sein. Durch Ändern der Dolchversion von 2.17 auf 2.16 kann dieses Problem vorerst behoben werden.

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

Aktualisieren

Dolch 2.18 ist raus, aber leider funktioniert es nach dem Testen immer noch nicht (Habe ich etwas verpasst?).

Update2

Dolch 2.19 funktioniert auch nicht und die Diskussion ist gesperrt.

Aber in der Google-Ausgabe gibt es Lösungen / Problemumgehungen. Ich habe getestet und sie haben funktioniert. Überprüfen Sie, ob Sie den neuesten Dolch verwenden möchten.

Update3

Das Dolchproblem wurde in Android Studio 3.3 behoben.


Ich bin mir auch ziemlich sicher, dass es in meinem / unserem Fall durch Dagger2 verursacht wird. In der offiziellen Dokumentation von DataBindingComponent wird sogar Dolch erwähnt: "Wenn Sie Dolch 2 verwenden, sollte der Entwickler diese Schnittstelle erweitern und die erweiterte Schnittstelle als Komponente kommentieren." (Quelle: developer.android.com/reference/android/databinding/… ). Aber ich verstehe nicht genau, was ich hier tun soll und ob es den Fehler beheben wird.
Muetzenflo

@muetzenflo Deine Infos scheinen vielversprechend. Ich werde versuchen, diese Komponente zu erweitern und zu prüfen, ob sie den Fehler beheben kann.
Dewey Reed

@muetzenflo Ich habe die Lösung ausprobiert, aber sie hat nicht funktioniert. Ich denke, es wirkt sich nur aus, wenn die App ausgeführt wird, aber das Problem tritt in der Kompilierungszeit auf.
Dewey Reed

2.19 ist raus und das Problem ist immer noch da
Ernest Zamelczyk

@ErnestZamelczyk Du hast recht. Aber ich habe im Issuetracker eine Problemumgehung gefunden. Überprüfen Sie die aktualisierte Antwort, wenn Sie interessiert sind.
Dewey Reed

5

Ich habe mein Problem endlich behoben, weil ich Android Annotations verwendet habe und sie vor 1 Stunde eine neue Version 4.5.1 veröffentlicht haben, in der sie Grade Plugin 3.2.0 unterstützen.

Ich habe eine Woche lang nach diesem Fehler gesucht und bin jetzt glücklich. Hoffe das hilft dir auch!


3

Mein Problem war, dass ich versucht habe, die Datenbindung für mein LoginModul zu aktivieren, aber nicht für das AppModul. Nach dem Hinzufügen:

dataBinding {
    enabled = true
}

zum AppModul und entfernte es aus dem LoginModul, es funktionierte.


2

Ich habe es classpath 'com.android.tools.build:gradle:3.2.0-beta05' mit und ohne explizite Abhängigkeit versuchtkapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"

Und immer noch die gleiche Ausnahme.

Ich habe auch 3.3.0-alpha06 ausprobiert, aber nichts hat sich geändert.

UPDATE: Nach 2 Tagen habe ich das Problem behoben. Ich habe alle Dateien, die aufgrund der Migration auf AndroidX Probleme hatten, manuell behoben (falsche Pakete bei Importen und XMLs usw.). Außerdem musste ich Glide von 4.7 auf 4.8 aktualisieren. Als ich alle roten Dateien repariert habe, ist das Problem verschwunden.


2

Das ist mein dümmster Fehler! Ich habe tatsächlich eine private Variable für die Datenbindung erstellt, die dieses Problem verursacht hat.

Verwenden lateinit var bindingSie einfach ein und es hat funktioniert.

Das könnte jemandem helfen!


Dies löste das Problem bei mir. Vielen Dank! Ich habe 2 Stunden gebraucht, um dies zu finden, und bin nicht weit genug nach unten gescrollt, um Ihren Kommentar zu sehen. :(
Oliver Metz

Ich bin froh, dass dir das geholfen hat! Datenbindungsfehler sind schwer zu interpretieren !!
Kannan_SJD

2

Entfernen Sie einfach die kapt-Abhängigkeit "com.android.databinding ...". Wenn Sie Android Studio 3.2 oder eine höhere Version verwenden.


2

In meinem Fall, wenn Sie das Dynamic Feature Module verwenden:

build.gradle (App)

dataBinding {
    enabled true
}

Dies muss sowohl für Root- als auch für untergeordnete Gradle-Dateien aktiviert sein (vergessen Sie nicht, das kapt-Plugin hinzuzufügen).


THANNNNKKKKKK YOOOOOUUUUUUUU FFS
ilansas


1

Ich habe den Fehler durch Hinzufügen behoben

android.useAndroidX=true
android.enableJetifier=true

in der gradle.properties-Datei meines Projekts


Hat bei mir nicht funktioniert. Was macht das oben genannte? Wo hast du es gefunden?
Amir Uval

1
@auval android.useAndroidX:Wenn truediese Option aktiviert ist , zeigt dieses Flag an, dass Sie AndroidX ab sofort verwenden möchten. Wenn das Flag nicht vorhanden ist, verhält sich Android Studio , als ob das Flag auf gesetzt wurde false. android.enableJetifier:Wenn truediese Option aktiviert ist, bedeutet dies, dass Sie Tool-Unterstützung (über das Android Gradle-Plugin) benötigen, um vorhandene Bibliotheken von Drittanbietern automatisch so zu konvertieren, als wären sie für AndroidX geschrieben worden. Wenn das Flag fehlt, verhält sich Android Studio so, als ob das Flag auf gesetzt wäre false.
Edijae Crusar

Hat bei mir nicht funktioniert, ich benutze Android Studio 3.3 diese Parameter sind bereits vorhanden
Sanjeev

Dies ist definitiv erforderlich, wenn Sie auf Android X migrieren und Datenbindung usw. verwenden. Ich habe auf einem Computer migriert, aber der Fehler trat auf einem anderen Computer auf, da gradle.properties nicht in der Quellcodeverwaltung ist
Daniel Wilson

1

In meinem Fall wurde das Problem durch Ändern behoben :

androidExtensions.experimental = true

(dh Gradle DSL als Einzeiler)

zu

androidExtensions {
    experimental = true
}

abgesehen davon hatte could not find the DataBindingComponent classich auch error: incompatible types: NonExistentClass cannot be converted to Annotationmit kotlinx.android.parcel.Parcelizeannotation verbunden (@Parcelize)

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


1

Hatte das gleiche Problem beim Importieren einer Klasse in die Datenbindung, das es nicht gab. Auch verwenden

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

zum Empfangen aller Fehlermeldungen, um das Problem zu finden. Für mein Projekt war es auf 50 begrenzt.


1

Bei mir ist ein Fehler in meiner Layoutdatei aufgetreten. Ich habe auf eine Funktion verwiesen, die nicht vorhanden war.

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

Unten ist die Lösung:

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


0

Noch etwas zu versuchen :) Ich habe versucht, das GithubBrowserSample in Android Studio 3.2 (RC3) zu bekommen. Ich habe immer wieder viele seltsame Fehler bei der Datenbindung erhalten, obwohl keine Datenbindungsversionen im Haupt-Build.gradle angegeben sind. Die Lösung bestand darin , diese beiden Zeilen aus den gradle.properties zu entfernen :

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

0

Meine 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

Ich habe festgestellt, dass dieses Problem behoben wurde, indem die Datenbindung aus meinem Layout entfernt, die App neu kompiliert und dann die Datenbindung wieder hinzugefügt wurde.

Ich habe das DataBindingUtil.setContentView(...)auf "Just" geändert setContentView(...)und mein Aktivitätslayout auf das Nötigste reduziert:

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

Fügen Sie dann die Datenbindung Stück für Stück wieder hinzu.


0

In meinem Fall ist in einer der Dateien ein Importfehler aufgetreten . Durch einfaches Öffnen dieser Datei wurden die Importe automatisch ausgeführt, und danach wurde das Projekt erstellt.

Es ist schade, dass AS dies nicht angegeben hat, ebenso wenig wie die Fehlerverfolgung.

Falls nichts von der veröffentlichten Antwort hilft - surfen Sie einfach durch alle Dateien im Projekt und suchen Sie nach einer Datei mit einer falschen Importanweisung.


0

Es ist ein Fehler im Jetifier. Hier ist eine Problemumgehung für den Moment bis zum nächsten Update. Fügen Sie dies in Ihr Projekt ein:

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

0

Wenn Sie eine Datenraumbibliothek verwenden, überprüfen Sie die @ Dao-Annotation in Ihren DAO-Klassen. In meinem Fall habe ich vergessen, @Dao zu meiner Oberfläche von RoomDatabase'Dao hinzuzufügen.


0

Erstellungsfehler für generierte Schnittstellen wie DataBindingComponentsind normalerweise irreführend. Versuchen Sie, nach anderen Build-Fehlern zu suchen, diese zuerst zu beheben und dann neu zu kompilieren.


0

Ich musste folgenden Import aus Gradle entfernen,

androidx.room:room-compiler:2.1.0-alpha06

Auch wenn es ein seltsames Problem ist: Versuchen Sie einfach, unnötige Importe zu entfernen, es sollte funktionieren.


0

Wenn Sie mit Room Database arbeiten, überprüfen Sie alle Ihre Dao-Klassen, wenn Sie ein Importproblem haben oder nicht den erforderlichen TypeConverter verwenden @TypeConverters. Dieser Fehler ist irreführend und sollte behoben werden, wenn Sie die Version der Gradle Build Tools auf Projektebene auf den neuesten Stand bringen. Ich classpath 'com.android.tools.build:gradle:3.4.0'habe Fehler richtig verwendet und bekommen.


0

In meinem Fall gab es einen Fehler in der Raumdatenbank-Elementklasse ... Der Fehler betraf den privaten Modifikator, der für Mitgliedsvariablen der Raumdatenbank-Elementklasse öffentlich sein sollte.

Verwenden und untersuchen Sie die Befehlszeile ./gradlew assembleDebug , um die Stapelverfolgung anzuzeigen .

#Room #Datenbank #Tabellenklasse #DAO

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.