Nie można znaleźć symbolu DataBindingComponent w projekcie Android Studio 3.2 Canary 16 Kotlin

91

Właśnie stworzyłem nowy projekt na Android Studio 3.2 Canary 16 z włączonym Kotlin. Następnie włączyłem również powiązanie danych, ale pojawia się błąd informujący, że nie można znaleźć klasy DataBindingComponent.

Oto moja ocena projektu:

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

Mój plik oceny modułu:

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 mojej aktywności:

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

A oto wynik kompilacji:

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

Co jest nie tak z moim projektem?

PS: Problem występuje również w Android Studio 3.1.2

Juliano Nunes Silva Oliveira
źródło
czy masz jakieś rozwiązanie?
Brijesh Joshi
@BrijeshJoshi zobacz moją odpowiedź poniżej
Edijae Crusar
Dla mnie prawdziwy błąd został faktycznie wydrukowany po tym. Po naprawieniu tego błędu ten również znika.
Mygod
1
W moim przypadku żaden inny błąd nie został pokazany w logu, ale po przejrzeniu moich różnic znalazłem niezaimportowaną adnotację w jakimś pliku kt. Po naprawieniu importu kompilacja działa. Wygląda na to, że jest jakiś problem w procesorze KAPT.
androidguy
1
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. dodanie tego do grade.propertiesrozwiązania mojego problemu
MMK

Odpowiedzi:

58

Biblioteki wiązań danych są refaktoryzowane w ramach refaktoryzacji Androidx.

Znalazłem łącze zależności procesora adnotacji wiążące dane z repozytorium Maven Google tutaj .

Stamtąd skonstruowałem rzeczywistą zależność gradle.

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

Aktualizacja Począwszy od wersji Android Studio 3.2.0-beta01 wiązanie danych nie wymaga już deklarowania zależności procesora adnotacji w pliku gradle, ponieważ wiązanie danych jest w stanie rozwiązać jego zależność.

Samuel Robert
źródło
4
Usunąłem tę zależność i wypróbowałem wszystkie poniższe rozwiązania, ale wydaje się, że nic nie działa
Sanjeev
Jakiej wersji studia używasz?
Samuel Robert
Android studio 3.3 Canary 11 z gradle 4.10
Sanjeev
Błąd: nie można znaleźć symbolu DataBindingComponent, mam możliwość powiązania danych w gradle, nie wiem, w czym problem
Sanjeev
Włączono wiązanie danych w gradle?
Samuel Robert,
62

Z następującą konfiguracją

Android Studio 3.2.1 Numer kompilacji AI-181.5540.7.32.5056338, zbudowany 8 października 2018 r. JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: OpenJDK 64-bitowa maszyna wirtualna serwera firmy JetBrains sro macOS 10.13.3

A DataBinding po prostu włącz, mając to w mojej aplikacji build.gradle

apply plugin: 'kotlin-kapt'

i wtedy

    dataBinding {
        enabled = true
    }

a także to w moich właściwościach gradle.wrapper

android.databinding.enableV2=true

Miałem te same błędy:

could not find the DataBindingComponent class.

Miałem ich ponad 100. Okazało się, że błędy te nie były istotne i że IDE nie wykazało prawdziwego błędu podstawowego. Dlatego zwiększyłem liczbę błędów, które może wyświetlić kompilator Kotlin, dodając to w pliku build.gradle:

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

Nagle, tuż pod tymi wszystkimi fałszywymi błędami, zobaczyłem prawdziwy błąd spowodowany nieudanym rozwiązaniem konfliktu scalania 😔

Hamady C.
źródło
Cześć, jak mam to zrobić w projekcie Java?
Tosin John
kilka fałszywych błędów, które początkowo należy wykonać z DataBindingComponent. wtedy, gdy zwiększę rozmiar błędu. Widziałem, że to był problem, gdy użyłem niewłaściwego lunety ze sztyletem.
filthy_wizard,
To było jedyne rozwiązanie, które zadziałało… Wielkie dzięki… pomogło.
Deepak Ganachari
Nie można odnaleźć symbol DataBindingComponent podczas kompilacji z wiersza poleceń za pomocą ./gradlew assembleDebug
Chetan Chaudhari
3
Spędzam całe życie na wyszukiwaniu błędów bez komunikatów ...! Dzięki kolego, jesteś człowiekiem roku :-D
m.zander
31

Po prostu usuń zależność kompilatora (kapt "com.android.databinding: kompilator: $ gradleVersion), która działała dla mnie. Najwyraźniej jest ona wyposażona we wtyczkę wiążącą z wersji 3.2.0.

Deividas Strioga
źródło
21

Jeśli używasz już stabilnej wersji Androida Studio 3.2 , po prostu usuń zależność, jest już uwzględniona.

Narek Hayrapetyan
źródło
3
Rozwiązałem to dla mnie, dziękuję. Powinni dodać podpowiedź / autofix w IDE.
SpaceMonkey,
3
Podwój za to. Mój błąd był trochę inny, ale to była główna przyczyna. Na wypadek, gdyby ktoś 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) ...
poszukał w Google
20

Ten sam błąd w Android Studio 3.3.1, brak Kotlina, czysta Java, przy użyciu androidx

build.gradle zawiera

    dataBinding {
        enabled true
    }

gradle.properties zawiera

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

Walczyłem z tym problemem przez wiele godzin, a potem rozwiązałem go w następujący sposób:

Tymczasowo zadeklaruj pusty interfejs dla DataBindingComponent w projekcie (w src/main/java/androidx.databinding/DataBindingComponent.java)

package androidx.databinding;

public interface DataBindingComponent {
}

Pozwól mu się skompilować, a błąd zniknie. Ale teraz zostanie ujawniony rzeczywisty błąd roota. Ten, który sprawiał wszystkie kłopoty, ale został w jakiś sposób połknięty. W moim przypadku pochodziło z AutoValue, wskazując, że nieprawidłowo go używałem

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

naprawienie tego, a następnie usunięcie atrapy interfejsu sprawia, że ​​kompilator znów jest szczęśliwy.

Ginie
źródło
Wielkie dzięki za tę odpowiedź. Dużo walczyłem z powodu tego problemu.
Farooq Zaman
Dziękuję bardzo za to
kkl260
1
OMG, dziękuję, dziękuję, dziękuję. To zadziałało !! Dziękuję Ci! Migrowałem na androidx i na końcowych etapach po skończeniu miałem około 70 błędów jak OP. Twoja sztuczka ujawniła 13 podstawowych błędów. Czy powiedziałem dziękuję? : D
Alberto Garrido,
Teraz jest to Android Studio 3.6.1. Nadal musisz wykonać tę sztuczkę, aby zobaczyć rzeczywisty błąd. :(
krishh
To jest świetne! Dziękuję Ci!
Takeshi Kaga
15

Co jest warte, miałem podobny problem i był to wynik złego zapytania dotyczącego pokoju, które było związane z wiązaniem danych.

Bink
źródło
1
działa u mnie, wyłączyłem typekonwerter do sprawdzenia i zadziałało
Murat
2
Dzięki! Miałem też problem dotyczący pokoju. Używałem ArrayListjako powrotu do zapytania, w którym musi to być plik List.
Van,
1
To jest złe. Całkowicie niezwiązany problem w pokoju powoduje ten problem.
Carson Holzheimer,
Nie dotyczy to wyłącznie Pokoju. Każdy inny używany procesor adnotacji może zgłosić wyjątek podczas kompilacji, powodując awarię, zanim procesor DataBinding zostanie uruchomiony.
Vitor Hugo Schwaab
i ten błąd pozostał pogrzebany pomiędzy błędem zadanym jako pytanie.
Reejesh PK
14

W moim przypadku był to zły sztylet. Umieszczam zakres niestandardowy w module zamiast umieszczać go w metodzie dostarczania.

¯\_(ツ)_/¯

mbonnin
źródło
1
Brakowało mi instrukcji importu dla wartości adnotacji i parametru metody. W przypadku Daggera 2.19 mam powyżej ten nonsens związany z danymi. Na szczęście Dagger 2.21 wskazał mi właściwy kierunek.
Eugen Pechanec
8

Miałem ten sam problem.

Zmiana Kaptna annotationProcessortylko dla DataBinding rozwiązała problem.

Saeed.re
źródło
7

napotykam ten problem podczas aktualizacji do Android Studio 3.2, zmieniam wtyczkę Gradle z 3.2.0 na 3.1.4 i działa dobrze -> myślę, że to problem z gradle, na pewno wkrótce zostanie zaktualizowany

B.mansouri
źródło
spróbuj zmienić gradle i usunąć kapt "com.android.databinding: kompilator: 3.1.2"
B.mansouri
W ogóle nie używam kapt "com.android.databinding: compiler: 3.1.2", ale zorientowałem się, że problem był spowodowany złą strukturą pakietu i przenoszeniem plików z jednego folderu do drugiego
Sanjeev
6

Przyczyną może być również sztylet. Zmiana wersji sztyletu z 2.17 na 2.16 może na razie rozwiązać ten problem.

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

Aktualizacja

Dagger 2.18 wyszedł, ale niestety po przetestowaniu nadal nie działa (czy coś przeoczyłem?).

Aktualizacja2

Dagger 2.19 również nie zadziała, a dyskusja jest zablokowana.

Ale w Google Issuetracke są rozwiązania / obejścia. Testowałem i zadziałały. Zaznacz, jeśli chcesz skorzystać z najnowszego sztyletu.

Aktualizacja3

Problem sztyletu został naprawiony w Android Studio 3.3.

Dewey Reed
źródło
Jestem też całkiem pewien, że w moim / naszym przypadku jest to spowodowane przez Dagger2. Oficjalna dokumentacja DataBindingComponent wspomina nawet o sztyletach: „Jeśli używasz Daggera 2, programista powinien rozszerzyć ten interfejs i oznaczyć rozszerzony interfejs jako komponent”. (źródło: developer.android.com/reference/android/databinding/… ). Ale nie rozumiem dokładnie, co tutaj robić i czy to naprawi błąd.
muetzenflo
@muetzenflo Twoje informacje wydają się obiecujące. Spróbuję rozszerzyć ten komponent i zobaczę, czy może naprawić błąd.
Dewey Reed
@muetzenflo Próbowałem rozwiązania, ale nie zadziałało. Wydaje mi się, że działa to tylko wtedy, gdy aplikacja jest uruchomiona, ale problem pojawia się w czasie kompilacji.
Dewey Reed
2.19 jest dostępny i problem nadal istnieje
Ernest Zamelczyk
@ErnestZamelczyk Masz rację. Ale znalazłem obejście problemu w Issuetracker. Sprawdź zaktualizowaną odpowiedź, jeśli jesteś zainteresowany.
Dewey Reed
5

w końcu rozwiązałem swój problem, ponieważ korzystałem z adnotacji Androida i wydali nową wersję 4.5.1 godzinę temu , w której obsługują one Grade Plugin 3.2.0.

Szukałem tego błędu przez tydzień i teraz jestem szczęśliwy. Mam nadzieję, że to też pomoże!

Sandra
źródło
4

Mój problem polegał na tym, że próbowałem włączyć powiązanie danych dla mojego Loginmodułu, ale nie dla Appmodułu. Po dodaniu:

dataBinding {
    enabled = true
}

do Appmodułu i wyjąłem go z Loginmodułu, zadziałało.

Aleksander Aleksic
źródło
Panie, uratowałeś moją karierę dzięki samozatrudnieniu. To było jak próba i błąd przez> 8 godzin. Muszę jednak powiedzieć, że po prostu brakowało mi „buildFeatures.dataBinding = true” w module aplikacji. Musiałem ustawić to samo dla wszystkich modułów funkcji. Niech twoje życie zawsze będzie wypełnione miodem i mlekiem.
nulldroid
2

Próbowałem classpath 'com.android.tools.build:gradle:3.2.0-beta05' zi bez wyraźnej zależnościkapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"

I wciąż otrzymuję ten sam wyjątek.

Próbowałem też 3.3.0-alpha06 ale nic się nie zmieniło.

AKTUALIZACJA: Po 2 dniach rozwiązałem problem. To, co zrobiłem, to ręczne naprawienie wszystkich plików, które miały problemy z powodu migracji do AndroidX (złe pakiety w imporcie i XML itp.). Dodatkowo musiałem zaktualizować Glide z 4.7 do 4.8. Kiedy naprawiłem wszystkie czerwone pliki, problem zniknął.

Stanisław Barański
źródło
2

To mój najgłupszy błąd! Właściwie utworzyłem prywatną zmienną dla Databinding i to było przyczyną tego problemu.

Po prostu użyj lateinit var bindingi zadziałało.

To mogłoby komuś pomóc!

Kannan_SJD
źródło
To rozwiązało problem ze mną. Dzięki! Znalezienie tego zajęło mi 2 godziny i nie przewinęłam wystarczająco daleko, aby zobaczyć Twój komentarz. :(
Oliver Metz
Cieszę się, że ci to pomogło! Błędy w wiązaniu danych są trudne do interpretacji !!
Kannan_SJD
2

Po prostu usuń zależność kapt „com.android.databinding ...”. Jeśli używasz Android Studio 3.2 lub nowszej wersji.

Naimish Vinchhi
źródło
2

W moim przypadku, jeśli używasz Dynamic Feature Module:

build.gradle (aplikacja)

dataBinding {
    enabled true
}

Musi to być włączone zarówno dla plików root, jak i podrzędnych (nie zapomnij dodać wtyczki kapt).

zeromod
źródło
THANNNNKKKKKK YOOOOOUUUUUUUU FFS
ilansas
@zeromod Czy możesz dodać którą wtyczkę KAPT? A co jeśli nie mam kotlina w swoim projekcie?
Shubham Agrawal
1

Naprawiłem to, aktualizując Android Studio do Canary 16 ORAZ to w gradle.wrapper.propertiesdistributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip

Eduardo Dornel
źródło
2
Używam już Canary 16 i Gradle 4.7, ale nie działa.
Juliano Nunes Silva Oliveira
Używam Android Studio 3.3 Canary 11 i Gradle 4.10 i pojawia się błąd, więc to rozwiązanie mi nie wystarcza
Sanjeev
1

Błąd rozwiązałem dodając

android.useAndroidX=true
android.enableJetifier=true

w pliku gradle.properties mojego projektu

Edijae Crusar
źródło
Nie działa dla mnie. Co to robi? Gdzie to znalazłeś?
Amir Uval
1
@auval android.useAndroidX:Gdy jest ustawiona na true, ta flaga wskazuje, że chcesz zacząć używać AndroidX od teraz. Jeśli flaga jest nieobecna, Android Studio zachowuje się tak, jakby flaga była ustawiona na false. android.enableJetifier:Po ustawieniu trueta flaga wskazuje, że chcesz mieć obsługę narzędzi (z wtyczki Android Gradle), aby automatycznie konwertować istniejące biblioteki innych firm, tak jakby zostały napisane dla AndroidX. Jeśli flaga jest nieobecna, Android Studio zachowuje się tak, jakby flaga była ustawiona na false.
Edijae Crusar
U mnie nie działa, używam Android Studio 3.3 te parametry są już obecne
Sanjeev
Jest to zdecydowanie wymagane, jeśli migrujesz do Androida X i używasz wiązania danych itp. Migrowałem na jednym komputerze, ale błąd pojawił się na innym, ponieważ gradle.properties nie jest w kontroli źródła
Daniel Wilson
1

W moim przypadku problem został rozwiązany poprzez zmianę:

androidExtensions.experimental = true

(tj. gradle DSL jako jednowierszowy)

do

androidExtensions {
    experimental = true
}

oprócz could not find the DataBindingComponent class miałem też error: incompatible types: NonExistentClass cannot be converted to Annotationskojarzone z kotlinx.android.parcel.Parcelizeadnotacją (@Parcelize)

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

kosiara - Bartosz Kosarzycki
źródło
1

Miałem ten sam problem, gdy importowałem klasę w wiązaniu danych, który nie istniał. Użyj również

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

za odbieranie wszystkich komunikatów o błędach w celu znalezienia problemu. Dla mojego projektu było to ograniczone do 50.

Jan Moravec
źródło
1

U mnie wystąpił błąd w moim pliku układu. Odwołałem się do funkcji, która nie istniała.

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

Poniżej znajduje się rozwiązanie:

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

Zainab
źródło
0

Coś innego do wypróbowania :) Próbowałem pobrać GithubBrowserSample do Android Studio 3.2 (RC3). Ciągle otrzymywałem wiele dziwnych błędów podczas wiązania danych, mimo że nie określa ono wersji powiązań danych w głównym pliku build.gradle. Rozwiązaniem było usunięcie tych dwóch linii z gradle.properties:

org.gradle.jvmargs=-Xmx4536m
android.databinding.enableV2=true
Daniel Wilson
źródło
0

Moja sytuacja:

Android Studio w wersji 3.2.1

com.android.tools.build:gradle:3.2.1

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

Zauważyłem, że usunięcie wiązania danych z mojego układu, ponowna kompilacja aplikacji, a następnie ponowne dodanie do niej powiązania danych rozwiązało ten problem.

Zmieniłem na DataBindingUtil.setContentView(...)sprawiedliwy setContentView(...)i zredukowałem układ mojej aktywności do absolutnego 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>

Następnie dodaj oprawę danych kawałek po kawałku.

Tyran
źródło
0

W moim przypadku wystąpił błąd importu w jednym z plików. Po prostu otwarcie tego pliku powodowało automatyczne importowanie, a następnie budowanie projektu.

Szkoda, że ​​AS dał na to zero wskazań, podobnie jak błąd stacktrace.

Jeśli nic z wysłanej odpowiedzi nie pomaga - po prostu przejrzyj wszystkie pliki w projekcie i poszukaj pliku, który ma nieprawidłową instrukcję importu.

azizbekian
źródło
0

To błąd w jetifier. Oto obejście do następnej aktualizacji. Umieść to w ocenie swojego projektu:

buildscript {
    dependencies {
        classpath 'com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta02'
    }
}
Ernest Zamelczyk
źródło
0

Jeśli korzystasz z biblioteki dataroom, sprawdź adnotację @√ w swoich klasach DAO. W moim przypadku zapomniałem dodać atrybutu @√ do interfejsu RoomDatabase'√.

bdpqchen
źródło
0

Błędy kompilacji dla wygenerowanych interfejsów, takie jak, DataBindingComponentzwykle wprowadzają w błąd. Spróbuj poszukać innych błędów kompilacji i najpierw je napraw, a następnie skompiluj ponownie.

owjsub
źródło
0

Musiałem usunąć następujący import z Gradle,

androidx.room:room-compiler:2.1.0-alpha06

Mimo że jest to dziwny problem, po prostu spróbuj usunąć niepotrzebny import, powinien działać.

Zumry Mohamed
źródło
0

Jeśli używasz z bazą danych pomieszczeń, sprawdź wszystkie swoje klasy Dao, jeśli masz problem z importem lub nie określono wymaganego TypeConvertera @TypeConverters, ten błąd jest mylący i powinien zostać naprawiony, jeśli zaktualizujesz wersję narzędzi do budowania gradle na poziomie projektu do najnowszej. Użyłem classpath 'com.android.tools.build:gradle:3.4.0'i poprawnie otrzymałem błąd.

abitcode
źródło
0

W moim przypadku wystąpił błąd w klasie pozycji bazy danych Room ... Błąd dotyczył prywatnego modyfikatora, który powinien być publiczny dla zmiennych składowych klasy pozycji bazy danych Room.

Użyj i zbadaj wiersz poleceń ./gradlew assembleDebug, aby zobaczyć stacktrace.

#Room #Database #Table class #DAO

Himanshu Mori
źródło