Не удается найти символ DataBindingComponent в проекте Android Studio 3.2 Canary 16 Kotlin

Я только что создал новый проект на Android Studio 3.2 Canary 16 с включенным Kotlin. Затем я также включил привязку данных, но получаю сообщение об ошибке, что не удалось найти класс 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

Для меня настоящая ошибка была напечатана после этого. После исправления этой ошибки эта также исчезнет.

Mygod 19.09.2018 14:42

В моем случае в журнале не было никакой другой ошибки, но после просмотра моих различий я обнаружил неимпортированную аннотацию в каком-то файле kt. После исправления импорта сборка работает. Кажется, какая-то проблема в процессоре kapt.

androidguy 16.10.2018 02:31

Не удается найти символ DataBindingComponent при сборке из командной строки с помощью ./gradlew assemblyDebug

Chetan Chaudhari 10.01.2019 11:09
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. добавление этого в grade.properties решило мою проблему
MMK 02.03.2019 11:53
96
4
56 523
32
Перейти к ответу Данный вопрос помечен как решенный

Ответы 32

Я исправляю это, обновляя Android Studio в Canary 16 И это в gradle.wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip

Я уже использую Canary 16 и Gradle 4.7, но это не работает.

Juliano Nunes Silva Oliveira 30.05.2018 11:03

Я использую Android studio 3.3 Canary 11 и Gradle 4.10, и я получаю сообщение об ошибке, поэтому это решение мне не подходит.

Sanjeev 25.09.2018 12:03

Я была такая же проблема.

Замена Kapt на annotationProcessor только для DataBinding решила проблему для меня.

Я удалил зависимость, и она тоже работает.

John Glen 01.04.2021 17:04
Ответ принят как подходящий

Библиотеки привязки данных подвергаются рефакторингу в рамках рефакторинга androidx.

Я нашел ссылку на зависимость процессора аннотаций привязки данных из репозитория Google Maven здесь.

Я построил фактическую зависимость от Gradle оттуда.

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

Обновлять Начиная с Android Studio 3.2.0-beta01, привязке данных больше не требуется объявлять зависимость от процессора аннотаций в файле gradle, поскольку привязка данных способна разрешить эту зависимость.

Я удалил эту зависимость и попробовал все нижеприведенные решения, но, похоже, ничего не работает

Sanjeev 25.09.2018 12:11

Какую студийную версию вы используете?

Samuel Robert 25.09.2018 12:12

Android Studio 3.3 Canary 11 с Gradle 4.10

Sanjeev 25.09.2018 12:16

Ошибка: не удается найти символ DataBindingComponent, у меня есть возможность привязки данных для работы в градиенте, я не знаю, в чем проблема

Sanjeev 25.09.2018 12:19

Включил DataBinding в градиенте?

Samuel Robert 25.09.2018 12:20

Я включил его в градиенте, я следил за всем в developer.android.com/topic/libraries/data-binding/start

Sanjeev 25.09.2018 12:23

Спасибо, что спасли меня от катастрофы, наконец-то моя проблема решена с помощью вашего решения, я использовал kapt "androidx.databinding: databinding-compiler: 3.2.0" Версия Gradle и версия привязки должны быть одинаковыми

habib ullah 27.09.2018 14:31

@habibullah для использования "androidx.databinding: databinding-compiler: 3.2.0", необходимо включить androidX в свойства Gradle. Потому что я пробовал, но ваше решение, но все еще возникает такая же проблема

Krunal Shah 16.01.2019 11:47

Простое стирание строки kapt ... в разделе зависимостей файла gradle также решило проблему для меня. (Android Studio 3.3)

Nantoka 20.01.2019 22:00

спасибо и здорово, это тоже устранило мою проблему (AS 3.2.1) @SamuelRobert

mochadwi 18.02.2019 03:34

id 'kotlin-kapt' Я удаляю эту строку из плагинов, и теперь ошибка исчезла.

Mubashir Murtaza 09.06.2021 06:38

Просто удалите зависимость компилятора (kapt "com.android.databinding: compiler: $ gradleVersion), которая у меня работала. Видимо, она предоставляется с плагином привязки из 3.2.0.

Я пробовал 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. Когда я исправил все красные файлы, проблема исчезла.

Я решил ошибку, добавив

android.useAndroidX=true
android.enableJetifier=true

в файле моего проекта gradle.properties

У меня не сработало. Что делает вышеперечисленное? Где вы его нашли?

Amir Uval 17.09.2018 15:46

@auval android.useAndroidX: Если установлено значение true, этот флаг указывает, что вы хотите начать использовать AndroidX с этого момента. Если флаг отсутствует, Android Studio ведет себя так, как если бы флаг был установлен на false. android.enableJetifier: Если установлено значение true, этот флаг указывает на то, что вы хотите иметь поддержку инструмента (из плагина Android Gradle) для автоматического преобразования существующих сторонних библиотек, как если бы они были написаны для AndroidX. Если флаг отсутствует, Android Studio ведет себя так, как если бы флаг был установлен на false.

Edijae Crusar 17.09.2018 16:25

У меня не получилось, я использую Android studio 3.3, эти параметры уже присутствуют

Sanjeev 25.09.2018 12:04

Это определенно требуется, если вы переходите на Android X и используете привязку данных и т. д. Я мигрировал на одном компьютере, но ошибка появилась на другом, потому что gradle.properties не находится в системе управления версиями

Daniel Wilson 26.11.2018 15:04

В моем случае это была плохая аннотация кинжала. Я помещаю настраиваемую область в модуль вместо того, чтобы помещать ее в метод обеспечения.

¯\_(ツ)_/¯

У меня отсутствовал оператор импорта для значения аннотации и параметра метода. С Dagger 2.19 я получил чушь о привязке данных, описанную выше. К счастью, Dagger 2.21 указал мне правильное направление.

Eugen Pechanec 04.02.2019 17:14

Еще кое-что, чтобы попробовать :) Я пытался вставить GithubBrowserSample в Android Studio 3.2 (RC3). Я продолжал получать много странных ошибок при связывании данных, даже несмотря на то, что он не указывает версии привязки данных в основном build.gradle. Решением было удали эти две строки из gradle.properties:

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

Если вы уже используете стабильную версию Android Studio 3.2, просто удалите зависимость, она уже включена.

Решил для меня, спасибо. Они должны были добавить всплывающую подсказку / автоисправление в IDE.

SpaceMonkey 29.09.2018 10:14

Для этого удвойте. Моя ошибка была немного другой, но это была основная причина. На случай, если кто-то погулит: Caused by: java.lang.NullPointerException at java.io.File.<init>(File.java:277) at android.databinding.annotationprocessor.ProcessExpressions.o‌​nHandleStep(ProcessE‌​xpressions.java:77) at android.databinding.annotationprocessor.ProcessDataBinding$P‌​rocessingStep.runSte‌​p(ProcessDataBinding‌​.java:203) at android.databinding.annotationprocessor.ProcessDataBinding$P‌​rocessingStep.access‌​$000(ProcessDataBind‌​ing.java:188) ...

cayleyh 05.10.2018 01:36

Я сталкиваюсь с этой проблемой при обновлении до Android Studio 3.2, я меняю плагин gradle с 3.2.0 на 3.1.4, и он отлично работает -> Я думаю, что это проблема с градиентом, он обязательно будет обновлен очень скоро

попробуйте изменить градиент и удалить kapt "com.android.databinding: compiler: 3.1.2"

B.mansouri 25.09.2018 17:59

Я вообще не использую kapt "com.android.databinding: compiler: 3.1.2", но я понял проблему, это было связано с неправильной структурой пакета и перемещением файлов из одной папки в другую

Sanjeev 27.09.2018 05:04

Кинжал также может быть причиной. Изменение версии dagger с 2.17 на 2.16 пока может решить эту проблему.

Обсуждение: https://github.com/google/dagger/issues/1245

Обновлять

Dagger 2.18 отсутствует, но, к сожалению, он по-прежнему не работает после того, как я протестировал (я что-то пропустил?).

Обновление2

Dagger 2.19 тоже не работает и обсуждение заблокировано.

Но в Google Issueetracke, есть решения / обходные пути. Я тестировал, и они работали. Отметьте его, если хотите использовать последнюю версию Dagger.

Обновление3

Проблема с кинжалом исправлена ​​в Android Studio 3.3.

Я также почти уверен, что это вызвано Dagger2 в моем / нашем случае. В официальной документации DataBindingComponent даже упоминается dagger: «При использовании Dagger 2 разработчик должен расширить этот интерфейс и аннотировать расширенный интерфейс как компонент». (источник: developer.android.com/reference/android/databinding/…). Но я не совсем понимаю, что здесь делать и исправит ли это ошибку.

muetzenflo 21.10.2018 22:55

@muetzenflo Ваша информация кажется многообещающей. Я попытаюсь расширить этот компонент и посмотреть, сможет ли он исправить ошибку.

Dewey Reed 22.10.2018 11:30

@muetzenflo Я пробовал решение, но оно не сработало. Я предполагаю, что это действует только тогда, когда приложение работает, но проблема возникает во время компиляции.

Dewey Reed 24.10.2018 06:31

2.19 отсутствует, и проблема все еще существует

Ernest Zamelczyk 08.11.2018 10:27

@ErnestZamelczyk Вы правы. Но я нашел обходной путь в Issetracker. Проверьте обновленный ответ, если вам интересно.

Dewey Reed 08.11.2018 11:07

Как бы то ни было, у меня была аналогичная проблема, и она была результатом неправильного запроса комнаты, который был связан с привязкой данных.

у меня работает, я отключил typeconverter для проверки, и он заработал

Murat 01.11.2018 12:01

Спасибо! У меня тоже была проблема с комнатой. Я использовал ArrayList в качестве возврата к запросу, где это должен быть List.

Van 26.12.2018 12:11

Это плохо. Эту проблему вызывает совершенно не связанная с этим проблема в номере.

Carson Holzheimer 03.09.2019 08:42

Это НЕ эксклюзивно для Room. Любой другой обработчик аннотаций, который вы используете, может вызвать исключение во время компиляции, отказав до того, как процессор DataBinding вступит в игру.

Vitor Hugo Schwaab 26.09.2019 16:15

и эта ошибка оставалась похороненной между ошибкой, указанной как вопрос.

Reejesh PK 22.04.2020 21:35

Я наконец исправил свою проблему, потому что я использовал Аннотации Android, и они выпустили новый Версия 4.5.1 1 час назад, где они поддерживают подключаемый модуль оценки 3.2.0.

Я искал эту ошибку неделю и теперь счастлив. Надеюсь, это вам тоже поможет!

Моя ситуация:

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>

Затем добавьте привязку данных по частям.

В моем случае в одном из файлов был ошибка импорта. Простое открытие этого файла привело к автоматическому выполнению импорта, и после этого проект был построен.

Жалко, что AS не дала никаких указаний на это, как и трассировка стека ошибок.

Если ничего из опубликованного ответа не помогает - просто просмотрите все файлы в проекте и найдите файл с неправильным оператором импорта.

При следующей настройке

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

И DataBinding просто включите, указав это в моем приложении build.gradle

apply plugin: 'kotlin-kapt'

а потом

    dataBinding {
        enabled = true
    }

а также это в моих свойствах gradle.wrapper

android.databinding.enableV2=true

У меня были такие же ошибки:

could not find the DataBindingComponent class.

У меня их было более 100. Оказалось, что эти ошибки не важны, и что истинная основная ошибка не была показана IDE. Поэтому я увеличил количество ошибок, которые может отображать компилятор Kotlin, добавив это в build.gradle:

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

Внезапно, прямо под всеми этими фальшивыми ошибками, я увидел настоящую, вызванную неудачным разрешением конфликта слияния ?

Привет, как мне это сделать в java-проекте?

Tosin John 04.11.2018 15:29

куча фальшивых ошибок, которые нужно сделать с помощью DataBindingComponent. затем, когда я увеличиваю размер ошибки. Я видел, что это проблема, когда я использовал неправильный прицел с кинжалом.

filthy_wizard 19.12.2018 14:34

Это было единственное решение, которое сработало. Большое спасибо. Оно помогло.

Deepak Ganachari 31.12.2018 15:48

Не удается найти символ DataBindingComponent при сборке из командной строки с помощью ./gradlew assemblyDebug

Chetan Chaudhari 10.01.2019 11:08

Я трачу дни в своей жизни на поиск ошибок без сообщений ...! Спасибо дружище, ты мужчина года :-D

m.zander 04.02.2019 14:12

Не могу поверить, что это все еще проблема на 10.01.2019. Должно быть что-то вроде [Чтобы увидеть больше ошибок, нажмите здесь]. Спасибо чувак

wtk 01.10.2019 16:50

Уловка с опцией ("- Xmaxerrs", 500) сработала. Не удалось увидеть правильную ошибку, так как она даже не отображалась. Спасибо!

Devdroid 07.02.2020 14:33

Я тоже застрял здесь так грустно.

Madona Syombua 07.03.2020 21:09

да, обнаружил фактическую ошибку посередине, в моем случае это была проблема с запросом в комнате db. Спасибо!

Reejesh PK 22.04.2020 21:34

Это ошибка в jetifier. Вот обходной путь до следующего обновления. Поместите это в свой проект gradle:

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

Это моя самая глупая ошибка! Я фактически создал частную переменную для привязки данных, и это вызывало эту проблему.

Просто используйте lateinit var binding, и он сработает.

Это могло кому-то помочь!

Это решило проблему со мной. Спасибо! Мне потребовалось 2 часа, чтобы найти это, и я не прокрутил достаточно далеко, чтобы увидеть ваш комментарий. :(

Oliver Metz 05.04.2019 03:26

Рад, что это помогло тебе! Ошибки привязки данных трудно интерпретировать !!

Kannan_SJD 05.04.2019 09:25

Моя проблема заключалась в том, что я пытался включить привязку данных для своего модуля Login, но не для модуля App. После добавления:

dataBinding {
    enabled = true
}

в модуль App и удалил из модуля Login, заработало.

Вы, сэр, спасли мою карьеру в сфере самозанятости. Это было похоже на метод проб и ошибок более 8 часов. Я должен сказать, что мне просто не хватало buildFeatures.dataBinding = true в модуле приложения. Пришлось установить то же самое для всех функциональных модулей. Пусть ваша жизнь всегда будет наполнена медом и молоком.

Nulldroid 25.09.2020 02:49

В моем случае проблема было решено изменилась:

androidExtensions.experimental = true

(т.е. gradle DSL как однострочный)

к

androidExtensions {
    experimental = true
}

помимо could not find the DataBindingComponent class у меня также был error: incompatible types: NonExistentClass cannot be converted to Annotation, связанный с аннотацией kotlinx.android.parcel.Parcelize (@Parcelize)

Android Studio 3.3; gradle-4.10.1-все; tools.build:gradle 3.3.0

Такая же ошибка здесь, в 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 в своем проекте (в src/main/java/androidx.databinding/DataBindingComponent.java)

package androidx.databinding;

public interface DataBindingComponent {
}

Пусть он скомпилируется, и ошибка исчезнет. Но теперь будет обнаружена настоящая корневая ошибка. Тот, который на самом деле создавал все проблемы, но был каким-то образом проглочен. В моем случае это исходило от AutoValue, что указывало на то, что я использовал его неправильно.

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

исправление этого, а затем удаление фиктивного интерфейса снова делает компилятор счастливым.

Большое спасибо за этот ответ. Я много боролся из-за этой проблемы.

Farooq Zaman 08.03.2019 06:23

Спасибо тебе большое за это

kkl260 26.03.2019 21:05

OMG, спасибо, спасибо, спасибо. Это сработало !! благодарю вас! Я переходил на androidx, и на последних этапах, после завершения, у меня было около 70 ошибок, таких как OP. Ваш трюк выявил 13 основных ошибок. Я сказал спасибо? : D

Alberto Garrido 04.07.2019 16:11

Сейчас это Android Studio 3.6.1. По-прежнему нужно следовать этому трюку, чтобы увидеть фактическую ошибку. :(

krishh 24.03.2020 13:04

Это здорово! Спасибо!

Takeshi Kaga 27.04.2020 21:01

Просто удалите зависимость kapt "com.android.databinding ...". Если вы используете Android Studio 3.2 или более позднюю версию.

Если вы используете библиотеку комнаты данных, проверьте аннотацию @Dao в ваших классах DAO. В моем случае я забыл добавить @Dao в свой интерфейс Room Database Dao.

Ошибки сборки для сгенерированных интерфейсов, таких как DataBindingComponent, обычно вводят в заблуждение. Попытайтесь найти любые другие ошибки сборки и сначала исправить их, а затем перекомпилировать.

Была такая же проблема, когда я импортировал класс в привязке данных, которого не существовало. Также используйте

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

для получения всех сообщений об ошибках, чтобы найти проблему. Для моего проекта это было ограничено 50.

Мне пришлось удалить следующий импорт из Gradle,

androidx.room:room-compiler:2.1.0-alpha06

Несмотря на то, что это странная проблема, просто попробуйте удалить ненужный импорт, он должен работать.

При использовании с базой данных комнат проверьте все свои классы Dao, если у вас есть какие-либо проблемы с импортом или не указан требуемый TypeConverter с использованием @TypeConverters, эта ошибка вводит в заблуждение и должна быть исправлена, если вы обновите версию инструментов сборки gradle на уровне проекта до последней. Я использовал classpath 'com.android.tools.build:gradle:3.4.0' и правильно получил ошибку.

В моем случае, Если вы используете модуль динамических функций:

build.gradle(app)

dataBinding {
    enabled true
}

Это необходимо включить как для корневых, так и для дочерних файлов Gradle (не забудьте добавить плагин kapt).

THANNNNKKKKKK YOOOOOUUUUUUU FFS

ilansas 03.04.2020 17:26

@zeromod Не могли бы вы добавить, какой плагин kapt? А что, если в моем проекте нет котлина?

Shubham Agrawal 20.10.2020 11:52

В моем случае произошла ошибка в классе Item базы данных Room ... Ошибка была связана с частным модификатором, который должен быть общедоступным для переменных-членов класса элемента Room db.

Используйте и исследуйте командную строку ./gradlew assemblyDebug, чтобы увидеть трассировку стека.

# Комната # База данных # Таблица класса #DAO

В моем случае я включил привязку данных только в модуле динамических функций. После того, как я включил привязку данных в корневом модуле, ошибка исчезла.

От документация:

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.

Также вам может потребоваться сделать кеши недействительными и перезапустить.

Для меня в моем файле макета была ошибка. Я сослался на несуществующую функцию.

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

Вот решение:

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

это мое решение

реализация "android.arch.lifecycle: extensions: $ lifeCycleExtensionVersion"

менять

реализация "androidx.lifecycle: жизненный цикл-время выполнения-ktx: $ lifeCycleExtensionVersion"

Другие вопросы по теме