103

I just created a new project on Android Studio 3.2 Canary 16 with Kotlin enabled. Then I also enabled data binding, but I'm getting an error saying that it could not find the DataBindingComponent class.

Here's my project 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
}

My module gradle file:

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

My activity's xml:

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

And here's the build output:

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

What is wrong with my project?

PS: The problem also happens on Android Studio 3.1.2

Zoe
  • 27,060
  • 21
  • 118
  • 148
juliano.net
  • 7,982
  • 13
  • 70
  • 164
  • For me the true error was actually printed after this. After fixing that error, this one goes away as well. – Mygod Sep 19 '18 at 12:42
  • 1
    In my case no other error was shown in log, but after reviewing my diffs I found an unimported annotation in some kt file. After fixing import, build works. Seems to be some problem in kapt processor. – androidguy Oct 16 '18 at 00:31
  • Cannot find symbol DataBindingComponent when build from command line using ./gradlew assembleDebug – Chetan Chaudhari Jan 10 '19 at 10:09
  • 1
    `android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false`. adding this to `grade.properties` solved my problem – MMK Mar 02 '19 at 10:53

34 Answers34

65

Databinding libraries are being refactored as a part of androidx refactoring.

I found the databinding annotation processor dependency link from google's maven repository here.

I've constructed the actual gradle dependency from there.

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

Update As of Android studio 3.2.0-beta01, databinding no longer needs its annotation processor dependency to be declared in the gradle file, since databinding is capable of resolving its dependency.

In the latest versions of Android Studio you just to enable the databinding/viewbinding in the gradle file of the app module.

buildFeatures {
    viewBinding true
    dataBinding true
}
Samuel Robert
  • 10,106
  • 7
  • 39
  • 60
64

With the following setup

Android Studio 3.2.1 Build #AI-181.5540.7.32.5056338, built on October 8, 2018 JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o macOS 10.13.3

And DataBinding simply enable by having this in my app build.gradle

apply plugin: 'kotlin-kapt'

and then

    dataBinding {
        enabled = true
    }

and also this in my gradle.wrapper properties

android.databinding.enableV2=true

I had the same errors:

could not find the DataBindingComponent class.

I had more than 100 of them. It turned out that those errors were not important and that the true underlying error was not showed by the IDE. Therefore, I increased the number of errors that the Kotlin compiler can display by adding this in build.gradle:

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

An suddenly, right below all those fake errrors, I saw the real one caused by a failed merge conflict resolution

Hamady C.
  • 1,205
  • 11
  • 13
34

Just delete the compiler dependency (kapt "com.android.databinding:compiler:$gradleVersion), that worked for me. Apparently, it is provided with binding plugin from 3.2.0.

Deividas Strioga
  • 1,467
  • 16
  • 24
24

Same Error here on Android Studio 3.3.1, no Kotlin, pure Java, using androidx

build.gradle contains

    dataBinding {
        enabled true
    }

gradle.properties contains

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

I've been fighting the issue for hours and then solved it as follows:

Temporarily declare an empty interface for DataBindingComponent in your Project (in src/main/java/androidx.databinding/DataBindingComponent.java)

package androidx.databinding;

public interface DataBindingComponent {
}

Let it compile and the error will be gone. But now the actual root error will be revealed. The one that was actually causing all the trouble but was somehow swallowed. In my case it was coming from AutoValue indicating that i was using it incorrectly

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

fixing that and then removing the dummy interface makes the compiler happy again.

Ginie
  • 433
  • 5
  • 6
23

If You're already using Android Studio 3.2 stable version, Just remove the dependency, it's already included.

Narek Hayrapetyan
  • 1,731
  • 15
  • 27
  • 3
    Solved it for me, thank you. They should have added a tooltip/autofix in the IDE. – SpaceMonkey Sep 29 '18 at 08:14
  • 3
    Double up for this. My error was a little different but this was the root cause. In case someone googles for it: `Caused by: java.lang.NullPointerException at java.io.File.(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 Oct 04 '18 at 23:36
16

For what it’s worth, I had a similar issue and it was the result of a bad Room query that was related to a data binding.

Bink
  • 1,934
  • 1
  • 25
  • 41
15

In my case it was a bad dagger annotation. I put custom scope on a Module instead of putting it on a provides method.

¯\_(ツ)_/¯

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491
mbonnin
  • 6,893
  • 3
  • 39
  • 55
  • 1
    I had a missing import statement for an annotation value and method parameter. With Dagger 2.19 I got the databinding nonsense above. Luckily Dagger 2.21 pointed me in the right direction. – Eugen Pechanec Feb 04 '19 at 16:14
9

I had the same issue.

Changing Kapt to annotationProcessor only for DataBinding fixed the problem for me.

Saeed.re
  • 740
  • 9
  • 19
7

i face this problem when updating to android studio 3.2 , i change gradle plugin from 3.2.0 to 3.1.4 and it works fine --> i think it's a gradle problem , it will be updated for sure very soon

B.mansouri
  • 376
  • 7
  • 16
  • try to change the gradle and to remove kapt "com.android.databinding:compiler:3.1.2" – B.mansouri Sep 25 '18 at 15:59
  • I am not at all using kapt "com.android.databinding:compiler:3.1.2", but I figured out the problem, it was due to the wrong package structure and moving files from one folder to another – Sanjeev Sep 27 '18 at 03:04
6

Dagger may also be the cause. Changing dagger version from 2.17 back to 2.16 can fix this problem for now.

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

Update

Dagger 2.18 is out but unfortunately it still won't work after I tested(Have I missed something?).

Update2

Dagger 2.19 also won't work and the discussion is locked.

But in the google issuetracke, there're solutions/workarounds. I tested and they worked. Check it if you want to use the latest Dagger.

Update3

Dagger problem has been fixed in the Android Studio 3.3.

Dewey Reed
  • 4,353
  • 2
  • 27
  • 41
  • I am also pretty sure that it is caused by Dagger2 in my/our case. The official documentation of DataBindingComponent even mentions dagger: "If using Dagger 2, the developer should extend this interface and annotate the extended interface as a Component." (source: https://developer.android.com/reference/android/databinding/DataBindingComponent). But I don't understand exactly what to do here and if it will fix the error. – muetzenflo Oct 21 '18 at 20:55
  • @muetzenflo Your info seems promising. I'll try to extend that component and see if it can fix the error. – Dewey Reed Oct 22 '18 at 09:30
  • @muetzenflo I've tried the solution but it didn't work. I guess it only takes effects when the app is running but the problem happens in the compile time. – Dewey Reed Oct 24 '18 at 04:31
  • 2.19 is out and the issue is still there – Ernest Zamelczyk Nov 08 '18 at 09:27
  • @ErnestZamelczyk You're right. But I found some workaround in the issuetracker. Check the updated answer if you're interested. – Dewey Reed Nov 08 '18 at 10:07
5

My issue was that I tried to enable data binding for my Login module but not the App module. After adding:

dataBinding {
    enabled = true
}

to the App module and removed it from the Login module, it worked.

Aleksander Aleksic
  • 1,282
  • 3
  • 12
  • 18
  • 1
    You sir, saved my career in self-employment. It was like trial and error for > 8 hours. I gotta say though, I was just missing "buildFeatures.dataBinding = true" in App module. Had to set the same for all feature modules as well. May your life always be filled with honey and milk. – nulldroid Sep 25 '20 at 00:49
4

i finally fixed my problem because i was using Android Annotations and they released a new Version 4.5.1 1 Hour ago, where they support Grade Plugin 3.2.0.

I was searching for this bug for a week and i´m happy now. Hope this helps you, too!

Sandra
  • 41
  • 1
  • 3
4

In my case I enabled data binding in dynamic feature module only. After I enabled data binding in root module, error disappeared.

From documentation:

Note: You must configure data binding for app modules that depend on libraries that use data binding, even if the app module doesn't directly use data binding.

Also you may need to invalidate caches and restart.

vokilam
  • 10,153
  • 3
  • 45
  • 56
3

I solved the error by adding

android.useAndroidX=true
android.enableJetifier=true

in my project's gradle.properties file

Edijae Crusar
  • 3,473
  • 3
  • 37
  • 74
  • Didn't work for me. What does the above do? Where did you find it? – Amir Uval Sep 17 '18 at 13:46
  • 1
    @auval `android.useAndroidX:` When set to `true`, this flag indicates that you want to start using AndroidX from now on. If the flag is absent, Android Studio behaves as if the flag were set to `false`. `android.enableJetifier:` When set to `true`, this flag indicates that you want to have tool support (from the Android Gradle plugin) to automatically convert existing third-party libraries as if they were written for AndroidX. If the flag is absent, Android Studio behaves as if the flag were set to `false`. – Edijae Crusar Sep 17 '18 at 14:25
  • Didn't work for me, I am using Android studio 3.3 these parameters are already present – Sanjeev Sep 25 '18 at 10:04
  • This is definitely required if you migrate to Android X and use databinding etc. I migrated on one machine but the error appeared on a different one because gradle.properties is not in source control – Daniel Wilson Nov 26 '18 at 14:04
3

Just remove kapt "com.android.databinding..." dependency. If you are using Android Studio 3.2 or greater version.

Naimish Vinchhi
  • 775
  • 8
  • 12
3

In my case, If your using Dynamic Feature Module :

build.gradle(app)

dataBinding {
    enabled true
}

This needs to enabled on both root and child gradle files (don't forget to add kapt plugin).

zeromod
  • 31
  • 3
2

I have tried classpath 'com.android.tools.build:gradle:3.2.0-beta05' with and without explicit dependency kapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"

And still getting the same exception.

I have also tried 3.3.0-alpha06 but nothing changed.

UPDATE: After 2 days, I resolved the issue. What I did is, manually fixing all the files that had problems, because of Migration to AndroidX (wrong packages in imports and XMLs etc.). Additionally, I needed to update Glide from 4.7 to 4.8. When I fixed all red files the problem disappeared.

Stanislaw Baranski
  • 1,308
  • 9
  • 18
2

This is my most stupid mistake! I have actually created a private variable for Databinding and that was causing this issue.

Just use a lateinit var binding and it Worked.

This could help someone!

Kannan_SJD
  • 1,022
  • 2
  • 13
  • 32
2

For me, there was an error in my layout file. I referenced a function that was non-existent.

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

Below is the solution:

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

Zainab
  • 21
  • 2
2

Please add this line in gradle.properties

android.enableJetifier=true
Tanjim ahmed
  • 473
  • 4
  • 15
1

I fix it updating Android Studio to Canary 16 AND this in gradle.wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip

1

In my case the issue was resolved by changing:

androidExtensions.experimental = true

(i.e. gradle DSL as a one-liner)

to

androidExtensions {
    experimental = true
}

apart from could not find the DataBindingComponent class I also had error: incompatible types: NonExistentClass cannot be converted to Annotation associated with kotlinx.android.parcel.Parcelize annotation (@Parcelize)

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

1

Had same issue when I was importing class in databinding, that did not exist. Also use

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

for recieving all error messages to find the issue. For my project it was limited to 50.

Jan Moravec
  • 496
  • 6
  • 9
0

Something else to try :) I was trying to get the GithubBrowserSample into Android Studio 3.2 (RC3). I kept getting lots of weird errors on databinding even though it doesn't specify data binding versions in the main build.gradle. The solution was to remove these two lines from the gradle.properties:

org.gradle.jvmargs=-Xmx4536m
android.databinding.enableV2=true
Daniel Wilson
  • 18,838
  • 12
  • 85
  • 135
0

My 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

I found that by removing databinding from my layout, recompiling the app and then adding the databinding back in it fixed this issue.

I changed the DataBindingUtil.setContentView(...) to just setContentView(...) and reduced my activity layout to the bare 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>

Then add the databinding back in piece by piece.

Taskmaster
  • 966
  • 8
  • 16
0

In my case there was an import error in one of the files. Simply opening that file made imports to happen automatically and thereafter project got built.

It's a pity, that AS gave zero indication to this, neither did error stacktrace.

In case nothing from posted answer helps - just surf through all the files in the project and seek for a file which has incorrect import statement.

azizbekian
  • 60,783
  • 13
  • 169
  • 249
0

It's a bug in jetifier. Here's a workaround for now until the next update. Put this in your project gradle:

buildscript {
    dependencies {
        classpath 'com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta02'
    }
}
Ernest Zamelczyk
  • 2,562
  • 2
  • 18
  • 32
0

If you are using dataroom library, check @Dao annotation in your DAO classes. In my case, I forgot to add @Dao to my interface of RoomDatabase'Dao.

bdpqchen
  • 11
  • 2
0

Build errors for generated interfaces like DataBindingComponent are usually misleading. Try to look for any other build errors and fix those first, then recompile.

owjsub
  • 231
  • 2
  • 4
0

I had to remove following import from Gradle,

androidx.room:room-compiler:2.1.0-alpha06

Even though its weird issue, Just try to remove to un necessary imports, it should work.

Zumry Mohamed
  • 9,318
  • 5
  • 46
  • 51
0

If using with Room Database, check all your Dao classes if you have any import issue or not specified required TypeConverter using @TypeConverters , this error is misleading, and should be fixed if you update project level gradle build tools version to latest. I used classpath 'com.android.tools.build:gradle:3.4.0' and got error correctly.

abitcode
  • 1,420
  • 17
  • 24
0

For my case there was some error in Room database Item class... Error was about private modifier which should be public for member variables of Room db item class.

Use and explore command line ./gradlew assembleDebug to see stacktrace.

#Room #Database #Table class #DAO

Himanshu Mori
  • 873
  • 1
  • 10
  • 20
0

In latest versions, no need of adding dependency like this
kapt "com.android.databinding:compiler:3.2.0-alpha16".
Just adding:

buildFeatures {
        dataBinding true
    }

is sufficient.

greybeard
  • 2,249
  • 8
  • 30
  • 66
-1

this is my solution

implementation "android.arch.lifecycle:extensions:$lifeCycleExtensionVersion"

change

implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifeCycleExtensionVersion"