Impossibile trovare il simbolo DataBindingComponent nel progetto Android Studio 3.2 Canary 16 Kotlin


90

Ho appena creato un nuovo progetto su Android Studio 3.2 Canary 16 con Kotlin abilitato. Quindi ho anche abilitato il data binding, ma ricevo un errore che dice che non è stato possibile trovare la classe DataBindingComponent.

Ecco il mio progetto 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
}

Il mio file gradle del modulo:

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 della mia attività:

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

Ed ecco l'output della build:

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

Cosa c'è di sbagliato nel mio progetto?

PS: il problema si verifica anche su Android Studio 3.1.2


hai avuto qualche soluzione?
Brijesh Joshi

@BrijeshJoshi vedi la mia risposta qui sotto
Edijae Crusar

Per me il vero errore è stato effettivamente stampato dopo questo. Dopo aver corretto l'errore, anche questo scompare.
Mygod

1
Nel mio caso nessun altro errore è stato mostrato nel registro, ma dopo aver esaminato i miei diff ho trovato un'annotazione non importata in alcuni file kt. Dopo aver corretto l'importazione, build funziona. Sembra esserci qualche problema nel processore kapt.
androidguy

1
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. aggiungendo questo per grade.propertiesrisolvere il mio problema
MMK

Risposte:


58

Le librerie di associazione di dati sono in fase di refactoring come parte del refactoring di androidx.

Ho trovato il collegamento di dipendenza del processore di annotazione di associazione dati dal repository Maven di Google qui .

Da lì ho costruito la reale dipendenza dei gradi.

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

Aggiornamento A partire da Android Studio 3.2.0-beta01, l'associazione dati non ha più bisogno di dichiarare la sua dipendenza dal processore di annotazione nel file gradle, poiché l'associazione dati è in grado di risolvere la sua dipendenza.


4
Ho rimosso questa dipendenza e ho provato tutte le soluzioni sottostanti ma niente sembra funzionare
Sanjeev

Quale versione di studio stai usando?
Samuel Robert,

Studio Android 3.3 Canary 11 con gradle 4.10
Sanjeev

Errore: non riesco a trovare il simbolo DataBindingComponent, ho il data binding abilitato a ture in gradle, non so qual è il problema
Sanjeev

DataBinding abilitato nel gradle?
Samuel Robert,

61

Con la seguente configurazione

Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, creato l'8 ottobre 2018 JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: VM server OpenJDK a 64 bit di JetBrains sro macOS 10.13.3

E DataBinding abilita semplicemente avendo questo nella mia app build.gradle

apply plugin: 'kotlin-kapt'

e poi

    dataBinding {
        enabled = true
    }

e anche questo nelle mie proprietà gradle.wrapper

android.databinding.enableV2=true

Ho avuto gli stessi errori:

could not find the DataBindingComponent class.

Ne avevo più di 100. Si è scoperto che quegli errori non erano importanti e che il vero errore sottostante non veniva mostrato dall'IDE. Pertanto, ho aumentato il numero di errori che il compilatore Kotlin può visualizzare aggiungendo questo in build.gradle:

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

E all'improvviso, proprio sotto tutti quei falsi errori, ho visto quello vero causato da una fallita risoluzione del conflitto di unione 😔


Ciao, come posso farlo in un progetto Java?
Tosin John il

un mucchio di falsi errori inizialmente da fare con DataBindingComponent. allora quando aumento la dimensione dell'errore. Ho visto che era un problema con me che utilizzavo il mirino sbagliato con il pugnale.
filthy_wizard

Questa è stata l'unica soluzione che ha funzionato .. Grazie mille .. ha aiutato.
Deepak Ganachari

Impossibile trovare il simbolo DataBindingComponent durante la compilazione dalla riga di comando utilizzando ./gradlew assembleDebug
Chetan Chaudhari

3
Trascorro giorni nella mia vita a cercare errori senza messaggi ...! Grazie amico, sei l'uomo dell'anno
MrGreen

31

Basta eliminare la dipendenza del compilatore (kapt "com.android.databinding: compiler: $ gradleVersion), che ha funzionato per me. Apparentemente, è fornito con il plug-in di binding dalla 3.2.0.


21

Se stai già utilizzando la versione stabile di Android Studio 3.2 , rimuovi la dipendenza, è già inclusa.


3
Risolto per me, grazie. Avrebbero dovuto aggiungere un suggerimento / correzione automatica nell'IDE.
SpaceMonkey

3
Raddoppia per questo. Il mio errore era leggermente diverso ma questa era la causa principale. Nel caso qualcuno lo cerchi su 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

Stesso errore qui su Android Studio 3.3.1, niente Kotlin, Java puro, usando androidx

build.gradle contiene

    dataBinding {
        enabled true
    }

gradle.properties contiene

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

Ho combattuto il problema per ore e poi l'ho risolto come segue:

Dichiara temporaneamente un'interfaccia vuota per DataBindingComponent nel tuo progetto (in src/main/java/androidx.databinding/DataBindingComponent.java)

package androidx.databinding;

public interface DataBindingComponent {
}

Lascia che si compili e l'errore sparirà. Ma ora verrà rivelato l'errore di root effettivo. Quello che stava effettivamente causando tutti i problemi ma che in qualche modo è stato inghiottito. Nel mio caso proveniva da AutoValue che indicava che lo stavo usando in modo errato

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

risolverlo e quindi rimuovere l'interfaccia fittizia rende di nuovo felice il compilatore.


Grazie mille per questa risposta. Ho lottato molto a causa di questo problema.
Farooq Zaman

Grazie mille per questo
kkl260

1
OMG, grazie, grazie, grazie. Questo ha funzionato !! grazie! Stavo migrando ad androidx e nelle fasi finali, dopo aver terminato, ho riscontrato circa 70 errori come OP. Il tuo trucco ha rivelato 13 errori sottostanti. Ho detto grazie? : D
Alberto Garrido

Ora è Android Studio 3.6.1. È ancora necessario seguire questo trucco per vedere l'errore effettivo. :(
krishh

È fantastico! Grazie!
Takeshi Kaga il

15

Per quello che vale, ho avuto un problema simile ed è stato il risultato di una cattiva query della stanza correlata a un data binding.


1
funziona per me, ho disabilitato il typeconverter per il controllo e ha funzionato
Murat VAROL

2
Grazie! Ho avuto anche un problema riguardante la camera. Stavo usando ArrayListcome ritorno a una query in cui deve essere un file List.
Van

1
Questo non va bene. Un problema completamente non correlato nella stanza causa questo problema.
Carson Holzheimer

Questo NON è esclusivo di Room. Qualsiasi altro processore di annotazione che utilizzi può generare un'eccezione durante la compilazione, fallendo prima che il processore DataBinding entri in gioco.
Vitor Hugo Schwaab,

e quell'errore è rimasto sepolto tra l'errore dichiarato come domanda.
Reejesh PK

14

Nel mio caso è stata una cattiva annotazione da pugnale. Ho inserito un ambito personalizzato su un modulo invece di metterlo su un metodo fornisce.

¯\_(ツ)_/¯


1
Avevo una dichiarazione di importazione mancante per un valore di annotazione e un parametro del metodo. Con Dagger 2.19 ho ottenuto l'assurdità dell'associazione dati sopra. Fortunatamente Dagger 2.21 mi ha indirizzato nella giusta direzione.
Eugen Pechanec

8

Ho avuto lo stesso problema.

Il passaggio Kapta annotationProcessorsolo per DataBinding ha risolto il problema per me.


7

affronto questo problema durante l'aggiornamento ad Android Studio 3.2, cambio il plugin gradle da 3.2.0 a 3.1.4 e funziona bene -> penso che sia un problema gradle, verrà aggiornato di sicuro molto presto


prova a cambiare gradle e a rimuovere kapt "com.android.databinding: compiler: 3.1.2"
B.mansouri

Non sto affatto usando kapt "com.android.databinding: compiler: 3.1.2", ma ho scoperto il problema, era dovuto alla struttura sbagliata del pacchetto e allo spostamento dei file da una cartella all'altra
Sanjeev

6

Anche il pugnale potrebbe essere la causa. Cambiare la versione del pugnale dalla 2.17 alla 2.16 può risolvere questo problema per ora.

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

Aggiornare

Dagger 2.18 è uscito ma purtroppo non funziona ancora dopo il test (mi sono perso qualcosa?).

Aggiorna 2

Anche Dagger 2.19 non funzionerà e la discussione è bloccata.

Ma nel percorso di emissione di Google , ci sono soluzioni / soluzioni alternative. Ho provato e hanno funzionato. Selezionalo se vuoi usare l'ultimo Dagger.

Aggiorna 3

Il problema del pugnale è stato risolto in Android Studio 3.3.


Sono anche abbastanza sicuro che sia causato da Dagger2 nel mio / nostro caso. La documentazione ufficiale di DataBindingComponent menziona anche pugnale: "Se si utilizza Dagger 2, lo sviluppatore dovrebbe estendere questa interfaccia e annotare l'interfaccia estesa come un componente." (fonte: developer.android.com/reference/android/databinding/… ). Ma non capisco esattamente cosa fare qui e se risolverà l'errore.
muetzenflo

@muetzenflo Le tue informazioni sembrano promettenti. Cercherò di estendere quel componente e vedere se può correggere l'errore.
Dewey Reed

@muetzenflo Ho provato la soluzione ma non ha funzionato. Immagino che abbia effetto solo quando l'app è in esecuzione, ma il problema si verifica in fase di compilazione.
Dewey Reed

2.19 è uscito e il problema è ancora lì
Ernest Zamelczyk

@ErnestZamelczyk Hai ragione. Ma ho trovato una soluzione alternativa in issuetracker. Controlla la risposta aggiornata se sei interessato.
Dewey Reed

5

Ho finalmente risolto il mio problema perché stavo usando Annotazioni Android e hanno rilasciato una nuova versione 4.5.1 1 ora fa, dove supportano Grade Plugin 3.2.0.

Stavo cercando questo bug per una settimana e ora sono felice. Spero che questo aiuti anche te!


3

Il mio problema era che ho provato ad abilitare il data binding per il mio Loginmodulo ma non per il Appmodulo. Dopo aver aggiunto:

dataBinding {
    enabled = true
}

al Appmodulo e rimosso dal Loginmodulo, ha funzionato.


2

Ho provato classpath 'com.android.tools.build:gradle:3.2.0-beta05' con e senza dipendenza esplicitakapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"

E ancora ottenendo la stessa eccezione.

Ho anche provato 3.3.0-alpha06 ma non è cambiato nulla.

AGGIORNAMENTO: Dopo 2 giorni, ho risolto il problema. Quello che ho fatto è stato correggere manualmente tutti i file che avevano problemi, a causa della migrazione ad AndroidX (pacchetti sbagliati nelle importazioni e negli XML ecc.). Inoltre, avevo bisogno di aggiornare Glide da 4.7 a 4.8. Quando ho corretto tutti i file rossi, il problema è scomparso.


2

Questo è il mio errore più stupido! In realtà ho creato una variabile privata per l'associazione dati e questo stava causando questo problema.

Usa solo un file lateinit var binding e ha funzionato.

Questo potrebbe aiutare qualcuno!


Questo ha risolto il problema con me. Grazie! Mi ci sono volute 2 ore per trovarlo e non ho fatto scorrere abbastanza per vedere il tuo commento. :(
Oliver Metz

Sono contento che questo ti abbia aiutato! Gli errori di associazione dati sono difficili da interpretare !!
Kannan_SJD

2

Basta rimuovere la dipendenza kapt "com.android.databinding ...". Se utilizzi Android Studio 3.2 o versione successiva.


2

Nel mio caso, se utilizzi Dynamic Feature Module:

build.gradle (app)

dataBinding {
    enabled true
}

Questo deve essere abilitato sia sui file root che su quelli secondari (non dimenticare di aggiungere il plugin kapt).


THANNNNKKKKKK YOOOOOUUUUUUUU FFS
ilansas


1

Ho risolto l'errore aggiungendo

android.useAndroidX=true
android.enableJetifier=true

nel file gradle.properties del mio progetto


Non ha funzionato per me. Cosa fa quanto sopra? Dove lo hai trovato?
Amir Uval

1
@auval android.useAndroidX:Se impostato su true, questo flag indica che si desidera iniziare a utilizzare AndroidX da ora in poi. Se il flag è assente, Android Studio si comporta come se il flag fosse impostato su false. android.enableJetifier:Quando è impostato su true, questo flag indica che si desidera disporre del supporto degli strumenti (dal plug-in Android Gradle) per convertire automaticamente le librerie di terze parti esistenti come se fossero scritte per AndroidX. Se il flag è assente, Android Studio si comporta come se il flag fosse impostato su false.
Edijae Crusar

Non ha funzionato per me, sto usando Android Studio 3.3 questi parametri sono già presenti
Sanjeev

Questo è assolutamente necessario se esegui la migrazione ad Android X e utilizzi l'associazione dati ecc. Ho migrato su una macchina ma l'errore è apparso su un'altra perché gradle.properties non è nel controllo del codice sorgente
Daniel Wilson

1

Nel mio caso il problema è stato risolto modificando:

androidExtensions.experimental = true

(cioè gradle DSL come one-liner)

per

androidExtensions {
    experimental = true
}

a parte che could not find the DataBindingComponent classavevo anche error: incompatible types: NonExistentClass cannot be converted to Annotationassociatokotlinx.android.parcel.Parcelize all'annotazione (@Parcelize)

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


1

Ho avuto lo stesso problema quando stavo importando la classe in associazione dati, che non esisteva. Usa anche

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

per aver ricevuto tutti i messaggi di errore per trovare il problema. Per il mio progetto era limitato a 50.


1

Per me, si è verificato un errore nel mio file di layout. Ho fatto riferimento a una funzione che era inesistente.

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

Di seguito la soluzione:

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


0

Qualcos'altro da provare :) Stavo cercando di portare GithubBrowserSample in Android Studio 3.2 (RC3). Ho continuato a ricevere molti strani errori sull'associazione dati anche se non specifica le versioni dell'associazione dati nel build.gradle principale. La soluzione era rimuovere queste due righe da gradle.properties:

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

0

La mia situazione:

Android Studio v3.2.1

com.android.tools.build:gradle:3.2.1

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

Ho scoperto che rimuovendo l'associazione dati dal mio layout, ricompilando l'app e quindi aggiungendo nuovamente l'associazione dati in essa, il problema è stato risolto.

Ho cambiato il DataBindingUtil.setContentView(...)solo setContentView(...)e ridotto il mio layout di attività al minimo indispensabile:

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

Quindi aggiungere nuovamente l'associazione dati pezzo per pezzo.


0

Nel mio caso si è verificato un errore di importazione in uno dei file. La semplice apertura di quel file ha fatto sì che le importazioni avvengano automaticamente e successivamente il progetto è stato costruito.

È un peccato che AS non abbia fornito alcuna indicazione a questo, né lo stacktrace di errore.

Nel caso in cui nulla dalla risposta pubblicata aiuti, basta navigare tra tutti i file nel progetto e cercare un file con un'istruzione di importazione errata.


0

È un bug nel jetifier. Ecco una soluzione alternativa per ora fino al prossimo aggiornamento. Metti questo nel tuo progetto gradle:

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

0

Se stai usando la libreria dataroom, controlla l'annotazione @Dao nelle tue classi DAO. Nel mio caso, ho dimenticato di aggiungere @Dao alla mia interfaccia di RoomDatabase'Dao.


0

Gli errori di compilazione per le interfacce generate come di DataBindingComponentsolito sono fuorvianti. Prova a cercare altri errori di compilazione e risolverli prima, quindi ricompila.


0

Ho dovuto rimuovere la seguente importazione da Gradle,

androidx.room:room-compiler:2.1.0-alpha06

Anche se il suo strano problema, prova a rimuovere le importazioni non necessarie, dovrebbe funzionare.


0

Se si utilizza con Room Database, controllare tutte le classi Dao se si riscontrano problemi di importazione o non è specificato TypeConverter richiesto utilizzando @TypeConverters, questo errore è fuorviante e dovrebbe essere corretto se si aggiorna la versione degli strumenti di build gradle a livello di progetto alla più recente. Ho usato classpath 'com.android.tools.build:gradle:3.4.0'e ho ricevuto correttamente l'errore.


0

Nel mio caso si è verificato un errore nella classe Item database Room ... L'errore riguardava il modificatore privato che dovrebbe essere pubblico per le variabili membro della classe item db Room.

Usa ed esplora la riga di comando ./gradlew assembleDebug per vedere stacktrace.

#Room #Database #Table class #DAO

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.