【问题标题】:Cannot find symbol DataBindingComponent on Android Studio 3.2 Canary 16 Kotlin project在 Android Studio 3.2 Canary 16 Kotlin 项目中找不到符号 DataBindingComponent
【发布时间】:2018-11-08 16:59:54
【问题描述】:

我刚刚在启用 Kotlin 的 Android Studio 3.2 Canary 16 上创建了一个新项目。然后我也启用了数据绑定,但是我收到一个错误,说它找不到 DataBindingComponent 类。

这是我的项目 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
}

我的模块 gradle 文件:

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:

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

这是构建输出:

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

我的项目有什么问题?

PS:这个问题也发生在 Android Studio 3.1.2

【问题讨论】:

  • 对我来说,真正的错误实际上是在此之后打印的。修复该错误后,此错误也会消失。
  • 在我的情况下,日志中没有显示其他错误,但在查看了我的差异后,我在一些 kt 文件中发现了一个未导入的注释。修复导入后,构建工作。似乎是 kapt 处理器中的一些问题。
  • 使用 ./gradlew assembleDebug 从命令行构建时找不到符号 DataBindingComponent
  • android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false。将此添加到grade.properties 解决了我的问题

标签: android kotlin android-databinding


【解决方案1】:

正在重构数据绑定库,作为 androidx 重构的一部分。

我从 google 的 maven 存储库 here 中找到了数据绑定注释处理器依赖项链接。

我已经从那里构建了实际的 gradle 依赖项。

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

更新 从 Android Studio 3.2.0-beta01 开始,数据绑定不再需要在 gradle 文件中声明其注解处理器依赖项,因为数据绑定能够解析其依赖项。

【讨论】:

  • 我已删除此依赖项并尝试了以下所有解决方案,但似乎没有任何效果
  • 你用的是什么工作室版本?
  • Android Studio 3.3 Canary 11 和 gradle 4.10
  • 错误:找不到符号DataBindingComponent,我在gradle中启用了数据绑定,不知道是什么问题
  • 只需擦除 gradle 文件的依赖部分中的 kapt ... 行也为我解决了这个问题。 (Android Studio 3.3)
【解决方案2】:

使用以下设置

Android Studio 3.2.1 Build #AI-181.5540.7.32.5056338,于 10 月构建 2018 年 8 月 JRE:1.8.0_152-release-1136-b06 x86_64 JVM:OpenJDK 64 位 JetBrains s.r.o macOS 10.13.3 的服务器虚拟机

DataBinding 只需在我的应用 build.gradle 中启用即可

apply plugin: 'kotlin-kapt'

然后

    dataBinding {
        enabled = true
    }

这也在我的 gradle.wrapper 属性中

android.databinding.enableV2=true

我也有同样的错误:

could not find the DataBindingComponent class.

我有超过 100 个。事实证明,这些错误并不重要,IDE 并未显示真正的潜在错误。因此,我通过在 build.gradle 中添加这个来增加 Kotlin 编译器可以显示的错误数量:

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

突然,在所有这些虚假错误的下方,我看到了由合并冲突解决失败引起的真实错误?

【讨论】:

  • 嗨,我如何在 java 项目中做到这一点?
  • 一堆虚假错误最初与 DataBindingComponent 相关。然后当我增加错误大小时。我发现这是我使用不正确的 dagger 范围的问题。
  • 这是唯一有效的解决方案..非常感谢..它有帮助。
  • 我一生中都会花费数天时间来搜索没有消息的错误......!谢谢伙计,你是年度风云人物:-D
  • 选项(“-Xmaxerrs”,500)的技巧做到了。看不到正确的错误,因为它甚至没有显示出来。谢谢!
【解决方案3】:

只需删除对我有用的编译器依赖项 (kapt "com.android.databinding:compiler:$gradleVersion)。显然,它提供了 3.2.0 的绑定插件。

【讨论】:

  • 它就像一个魅力,谢谢
【解决方案4】:

在 Android Studio 3.3.1 上出现同样的错误,没有 Kotlin,纯 Java,使用 androidx

build.gradle 包含

    dataBinding {
        enabled true
    }

gradle.properties 包含

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

我已经解决了几个小时的问题,然后解决了如下:

在你的项目中临时为 DataBindingComponent 声明一个空接口(@98​​7654323@)

package androidx.databinding;

public interface DataBindingComponent {
}

让它编译,错误就会消失。但现在将揭示实际的根本错误。那个实际上造成了所有麻烦但不知何故被吞没的人。就我而言,它来自 AutoValue,表明我使用不正确

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

修复它然后删除虚拟接口使编译器再次高兴。

【讨论】:

  • 非常感谢您的回答。因为这个问题,我很挣扎。
  • 天啊,谢谢,谢谢,谢谢。这有效!谢谢!我正在迁移到 androidx,在最后阶段,完成后,我有 70 个类似 OP 的错误。你的把戏揭示了 13 个潜在的错误。我说谢谢了吗? :D
  • 现在是Android Studio 3.6.1。仍然需要遵循这个技巧才能看到实际的错误。 :(
  • 这太棒了!谢谢!
  • 非常感谢您的回答。它节省了我的时间。继续努力@Ginie
【解决方案5】:

如果您已经在使用Android Studio 3.2稳定版,只需删除依赖,它已经包含。

【讨论】:

  • 帮我解决了,谢谢。他们应该在 IDE 中添加了工具提示/自动修复。
  • 为此加倍。我的错误有点不同,但这是根本原因。如果有人用谷歌搜索它:Caused by: java.lang.NullPointerException at java.io.File.&lt;init&gt;(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) ...
【解决方案6】:

不管怎样,我遇到了类似的问题,这是与数据绑定相关的错误 Room 查询的结果。

【讨论】:

  • 对我有用,我禁用了 typeconverter 进行检查,它有效
  • 谢谢!我也有关于房间的问题。我使用ArrayList 作为对必须是List 的查询的返回。
  • 这很糟糕。房间里一个完全不相关的问题导致了这个问题。
  • 这不是 Room 独有的。您使用的任何其他注释处理器都可能在编译期间引发异常,在 DataBinding 处理器发挥作用之前失败。
  • 并且该错误仍然隐藏在作为问题陈述的错误之间。
【解决方案7】:

就我而言,这是一个糟糕的匕首注释。我将自定义范围放在模块上,而不是放在提供方法上。

¯\_(ツ)_/¯

【讨论】:

  • 我缺少注释值和方法参数的导入语句。使用 Dagger 2.19,我得到了上面的数据绑定废话。幸运的是 Dagger 2.21 为我指明了正确的方向。
【解决方案8】:

我遇到了同样的问题。

Kapt 更改为 annotationProcessor 仅为 DataBinding 解决了我的问题。

【讨论】:

  • 我删除了依赖,它也可以工作。
【解决方案9】:

我在更新到 android studio 3.2 时遇到了这个问题,我将 gradle 插件从 3.2.0 更改为 3.1.4,它工作正常 --> 我认为这是一个 gradle 问题,它肯定会很快更新

【讨论】:

  • 尝试更改 gradle 并删除 kapt "com.android.databinding:compiler:3.1.2"
  • 我根本没有使用 kapt "com.android.databinding:compiler:3.1.2",但我发现了问题,这是由于错误的包结构和从一个文件夹移动文件到另一个
【解决方案10】:

匕首也可能是原因。 将 dagger 版本从 2.17 改回 2.16 暂时可以解决这个问题。

讨论:https://github.com/google/dagger/issues/1245

更新

Dagger 2.18 已经发布,但不幸的是,经过我的测试,它仍然无法工作(我错过了什么吗?)。

更新2

Dagger 2.19 也不行,讨论被锁定。

但是in the google issuetracke,有解决方案/解决方法。我进行了测试,他们奏效了。如果您想使用最新的 Dagger,请检查它。

更新3

Dagger 问题已在 Android Studio 3.3 中修复。

【讨论】:

  • 我也很确定在我/我们的情况下它是由 Dagger2 引起的。 DataBindingComponent的官方文档中甚至提到了dagger:“如果使用Dagger 2,开发者应该扩展这个接口,并将扩展的接口注解为一个Component。” (来源:developer.android.com/reference/android/databinding/…)。但我不明白在这里做什么以及它是否会修复错误。
  • @muetzenflo 您的信息似乎很有希望。我将尝试扩展该组件,看看它是否可以修复错误。
  • @muetzenflo 我已经尝试过解决方案,但没有奏效。我猜它只在应用程序运行时生效,但问题发生在编译时。
  • 2.19 出来了,问题依然存在
  • @ErnestZamelczyk 你是对的。但我在问题跟踪器中找到了一些解决方法。如果您有兴趣,请查看更新的答案。
【解决方案11】:

我的问题是我尝试为 Login 模块启用数据绑定,但没有为 App 模块启用数据绑定。添加后:

dataBinding {
    enabled = true
}

App 模块并将其从Login 模块中删除,它可以工作。

【讨论】:

  • 您先生,拯救了我的自营职业生涯。这就像 > 8 小时的反复试验。不过我得说,我只是在 App 模块中缺少“buildFeatures.dataBinding = true”。也必须为所有功能模块设置相同的值。愿你的生活永远充满蜂蜜和牛奶。
【解决方案12】:

我终于解决了我的问题,因为我使用的是 Android Annotations,他们在 1 小时前发布了一个新的 4.5.1 版本,他们支持 Grade Plugin 3.2.0。

我花了一周时间寻找这个错误,现在我很高兴。希望这对你也有帮助!

【讨论】:

    【解决方案13】:

    只需删除 kapt "com.android.databinding..." 依赖项。如果您使用的是 Android Studio 3.2 或更高版本。

    【讨论】:

      【解决方案14】:

      就我而言, 如果您使用动态功能模块:

      build.gradle(app)

      dataBinding {
          enabled true
      }
      

      这需要在根和子 gradle 文件上启用(不要忘记添加 kapt 插件)。

      【讨论】:

      • THANNNNKKKKKK YOOOOOUUUUUUU FFS
      • @zeromod 你能添加哪个 kapt 插件吗?另外,如果我的项目中没有 kotlin 怎么办?
      【解决方案15】:

      我试过classpath 'com.android.tools.build:gradle:3.2.0-beta05' 有和没有显式依赖kapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"

      仍然遇到同样的异常。

      我也尝试过 3.3.0-alpha06,但没有任何改变。

      更新: 2天后,我解决了这个问题。 我所做的是,手动修复所有有问题的文件,因为迁移到 AndroidX(导入和 XML 中的错误包等)。此外,我需要将 Glide 从 4.7 更新到 4.8。当我修复所有红色文件时,问题就消失了。

      【讨论】:

        【解决方案16】:

        我通过添加解决了错误

        android.useAndroidX=true
        android.enableJetifier=true
        

        在我项目的 gradle.properties 文件中

        【讨论】:

        • 对我不起作用。以上是做什么的?你在哪里找到的?
        • @auval android.useAndroidX: 当设置为 true 时,此标志表示您想从现在开始使用 AndroidX。如果该标志不存在,Android Studio 的行为就好像该标志设置为 falseandroid.enableJetifier: 当设置为 true 时,此标志表示您希望获得工具支持(来自 Android Gradle 插件)以自动转换现有的第三方库,就好像它们是为 AndroidX 编写的一样。如果标志不存在,Android Studio 的行为就像标志设置为 false
        • 对我不起作用,我使用的是 Android Studio 3.3 这些参数已经存在
        • 如果您迁移到 Android X 并使用数据绑定等,这绝对是必需的。我在一台机器上迁移但错误出现在另一台机器上,因为 gradle.properties 不在源代码管理中
        【解决方案17】:

        这是我最愚蠢的错误! 我实际上已经为数据绑定创建了一个私有变量,这就是导致这个问题的原因。

        只需使用lateinit var binding 即可。

        这可以帮助某人!

        【讨论】:

        • 这解决了我的问题。谢谢!我花了 2 个小时才找到这个并且没有向下滚动到足以看到您的评论。 :(
        • 很高兴这对您有所帮助!数据绑定错误很难解释!!
        【解决方案18】:

        就我而言,我仅在动态功能模块中启用了数据绑定。我在根模块中启用数据绑定后,错误消失了。

        来自documentation

        注意:您必须为依赖于使用数据绑定的库的应用模块配置数据绑定,即使该应用模块不直接使用数据绑定。

        此外,您可能需要使缓存无效并重新启动。

        【讨论】:

          【解决方案19】:

          对我来说,我的布局文件中有一个错误。我引用了一个不存在的函数。

          android:text="@{() -&gt; sleepTrackerViewModel.nightStrings}"

          解决方法如下:

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

          【讨论】:

            【解决方案20】:

            我修复它更新 Android Studio to Canary 16 和这个在 gradle.wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip

            【讨论】:

            • 我已经在使用 Canary 16 和 Gradle 4.7,但无法正常工作。
            • 我正在使用 Android Studio 3.3 Canary 11 和 Gradle 4.10,但我收到了错误,所以这个解决方案不适合我
            【解决方案21】:

            就我而言,问题已通过更改解决

            androidExtensions.experimental = true
            

            (即 gradle DSL 作为单线)

            androidExtensions {
                experimental = true
            }
            

            除了could not find the DataBindingComponent class,我还有error: incompatible types: NonExistentClass cannot be converted to Annotationkotlinx.android.parcel.Parcelize注解(@Parcelize)相关联

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

            【讨论】:

              【解决方案22】:

              当我在数据绑定中导入类时遇到了同样的问题,但不存在。也可以使用

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

              用于接收所有错误消息以查找问题。对于我的项目,它限制为 50 个。

              【讨论】:

                【解决方案23】:

                其他尝试 :) 我试图将 GithubBrowserSample 放入 Android Studio 3.2 (RC3)。即使在主 build.gradle 中没有指定数据绑定版本,我也不断收到很多关于数据绑定的奇怪错误。解决方案是从 gradle.properties 删除这两行

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

                【讨论】:

                  【解决方案24】:

                  我的情况:

                  Android Studio v3.2.1

                  com.android.tools.build:gradle:3.2.1

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

                  我发现通过从我的布局中删除数据绑定,重新编译应用程序,然后将数据绑定重新添加到其中可以解决此问题。

                  我将 DataBindingUtil.setContentView(...) 更改为 setContentView(...) 并将我的活动布局减少到最低限度:

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

                  然后逐个添加数据绑定。

                  【讨论】:

                    【解决方案25】:

                    就我而言,其中一个文件存在导入错误。只需打开该文件即可自动进行导入,然后构建项目。

                    很遗憾,AS 对此给出了零指示,错误堆栈跟踪也没有。

                    如果发布的答案没有任何帮助 - 只需浏览项目中的所有文件并寻找导入语句不正确的文件。

                    【讨论】:

                      【解决方案26】:

                      这是jetifier中的一个错误。在下一次更新之前,这是一个暂时的解决方法。把它放在你的项目 gradle 中:

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

                      【讨论】:

                        【解决方案27】:

                        如果您使用的是数据室库,请检查您的 DAO 类中的 @Dao 注释。 就我而言,我忘记将@Dao 添加到我的 RoomDatabase'Dao 界面中。

                        【讨论】:

                          【解决方案28】:

                          生成的接口(如DataBindingComponent)的构建错误通常具有误导性。尝试查找任何其他构建错误并首先修复这些错误,然后重新编译。

                          【讨论】:

                            【解决方案29】:

                            我不得不从 Gradle 中删除以下导入,

                            androidx.room:room-compiler:2.1.0-alpha06
                            

                            即使它的问题很奇怪,只要尝试删除不必要的导入,它应该可以工作。

                            【讨论】:

                              【解决方案30】:

                              如果与 Room 数据库一起使用,请检查所有 Dao 类是否有任何导入问题或未使用 @TypeConverters 指定所需的 TypeConverter,此错误具有误导性,如果您将项目级别的 gradle 构建工具版本更新为最新版本,则应修复此错误. 我使用classpath 'com.android.tools.build:gradle:3.4.0' 并正确出错。

                              【讨论】:

                                猜你喜欢
                                • 2019-01-06
                                • 1970-01-01
                                • 1970-01-01
                                • 2019-01-13
                                • 1970-01-01
                                • 1970-01-01
                                • 2022-01-02
                                • 1970-01-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多