Cannot find symbol DataBindingComponent on Android Studio 3.2 Canary 16 Kotlin project

匿名 (未验证) 提交于 2019-12-03 01:10:02

问题:

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

回答1:

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 based on the build tool version



回答2:

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.



回答3:

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



回答4:

I had the same issue.

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



回答5:

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



回答6:

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



回答7:

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



回答8:

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.



回答9:

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



回答10:

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.



回答11:

I solved the error by adding

android.useAndroidX=true android.enableJetifier=true 

in my project's gradle.properties file



回答12:

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 


回答13:

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.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!