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

91

Я только что создал новый проект на 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

Жулиано Нуньес Сильва Оливейра
источник
ты нашел какое-нибудь решение?
Brijesh Joshi
@BrijeshJoshi см. Мой ответ ниже
Edijae Crusar
Для меня настоящая ошибка была напечатана после этого. После исправления этой ошибки эта также исчезнет.
Mygod
1
В моем случае в журнале не было отображено никаких других ошибок, но после просмотра моих различий я обнаружил неимпортированную аннотацию в каком-то файле kt. После исправления импорта сборка работает. Кажется, какая-то проблема в процессоре kapt.
androidguy
1
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. добавив это grade.propertiesрешить мою проблему
ММК

Ответы:

58

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

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

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

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

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

Сэмюэл Роберт
источник
4
Я удалил эту зависимость и попробовал все нижеприведенные решения, но, похоже, ничего не работает
Санджив
Какую студийную версию вы используете?
Сэмюэл Роберт
Android studio 3.3 Canary 11 с Gradle 4.10
Санджив
Ошибка: не удается найти символ DataBindingComponent, у меня есть возможность привязки данных к градиенту, я не знаю, в чем проблема
Санджив,
Включил DataBinding в градиенте?
Сэмюэл Роберт
62

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

Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, построенный 8 октября 2018 г. JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: 64-разрядная серверная виртуальная машина OpenJDK от JetBrains sro 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-проекте?
Тосин Джон
куча фальшивых ошибок, которые нужно сделать с помощью DataBindingComponent. затем, когда я увеличиваю размер ошибки. Я увидел, что проблема в том, что я использовал неправильный прицел с кинжалом.
filthy_wizard
Это было единственное решение, которое сработало. Большое спасибо. Помогло.
Дипак Ганачари
Невозможно найти символ DataBindingComponent при сборке из командной строки с использованием ./gradlew AssemblyDebug
Четан Чаудхари
3
Я трачу дни в своей жизни на поиск ошибок без сообщений ...! Спасибо,
дружище
31

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

Дейвидас Стриога
источник
21

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

Нарек Айрапетян
источник
3
Решил для меня, спасибо. Они должны были добавить всплывающую подсказку / автоисправление в IDE.
SpaceMonkey
3
Для этого удвойте. Моя ошибка была немного другой, но это была основная причина. На случай, если кто-то поищет это в Caused by: java.lang.NullPointerException at java.io.File.<init>(File.java:277) at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:77) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:203) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:188) ...
гугле
20

Такая же ошибка здесь, в 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 в своем проекте (in 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

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

Джини
источник
Большое спасибо за этот ответ. Я много боролся из-за этой проблемы.
Фарук Заман
Большое вам спасибо за это
kkl260
1
OMG, спасибо, спасибо, спасибо. Это сработало !! Спасибо! Я переходил на androidx, и на последних этапах, после завершения, у меня было около 70 ошибок, таких как OP. Ваш трюк выявил 13 основных ошибок. Я сказал спасибо? : D
Альберто Гарридо
Сейчас это Android Studio 3.6.1. По-прежнему нужно следовать этому трюку, чтобы увидеть фактическую ошибку. :(
krishh
Это круто! Спасибо!
Такеши Кага
15

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

Бинк
источник
1
у меня работает, я отключил преобразователь типов для проверки, и он сработал
Мурат
2
Благодарность! У меня тоже была проблема с комнатой. Я использовал ArrayListв качестве возврата к запросу, где должен быть List.
Ван
1
Это плохо. Эту проблему вызывает совершенно не связанная с этим проблема в номере.
Carson Holzheimer
Это НЕ эксклюзивно для Room. Любой другой обработчик аннотаций, который вы используете, может вызвать исключение во время компиляции, выйдя из строя до того, как процессор DataBinding вступит в игру.
Витор Хьюго Швааб
и эта ошибка осталась похороненной между ошибкой, указанной как вопрос.
Reejesh PK,
14

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

¯\_(ツ)_/¯

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

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

Изменение Kaptк annotationProcessorтолько DataBinding исправили проблему для меня.

Saeed.re
источник
7

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

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

Кинжал также может быть причиной. Изменение версии 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
@muetzenflo Ваша информация кажется многообещающей. Я попытаюсь расширить этот компонент и посмотреть, сможет ли он исправить ошибку.
Дьюи Рид,
@muetzenflo Я пробовал решение, но оно не сработало. Я предполагаю, что это действует только тогда, когда приложение работает, но проблема возникает во время компиляции.
Дьюи Рид,
2.19 уже нет, и проблема все еще существует
Эрнест Замельчик
@ErnestZamelczyk Вы правы. Но я нашел обходной путь в Issetracker. Проверьте обновленный ответ, если вам интересно.
Дьюи Рид
5

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

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

Сандра
источник
4

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

dataBinding {
    enabled = true
}

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

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

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

Станислав Барански
источник
2

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

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

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

Kannan_SJD
источник
Это решило проблему со мной. Благодарность! Мне потребовалось 2 часа, чтобы найти это, и я не прокрутил достаточно далеко, чтобы увидеть ваш комментарий. :(
Оливер Метц
Рад, что это помогло тебе! Ошибки привязки данных трудно интерпретировать !!
Kannan_SJD
2

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

Наимиш Винчи
источник
2

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

build.gradle (приложение)

dataBinding {
    enabled true
}

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

зеромод
источник
THANNNNKKKKKK YOOOOOUUUUUUUU FFS
Илансас
@zeromod Не могли бы вы добавить, какой плагин kapt? А что, если в моем проекте нет котлина?
Шубхам Агравал
1

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

Эдуардо Дорнель
источник
2
Я уже использую Canary 16 и Gradle 4.7, но это не работает.
Джулиано Нуньес Сильва Оливейра
Я использую Android studio 3.3 Canary 11 и Gradle 4.10, и я получаю сообщение об ошибке, поэтому это решение не подходит для меня,
Санджив
1

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

android.useAndroidX=true
android.enableJetifier=true

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

Эдиджа Крусар
источник
У меня не получилось. Что делает вышеперечисленное? Где вы его нашли?
Амир Уваль
1
@auval android.useAndroidX:Если установлено значение true, этот флаг указывает, что вы хотите начать использовать AndroidX с этого момента. Если флаг отсутствует, Android Studio ведет себя так, как если бы флаг был установлен на false. android.enableJetifier:Если установлено значение true, этот флаг указывает на то, что вы хотите иметь поддержку инструмента (из плагина Android Gradle) для автоматического преобразования существующих сторонних библиотек, как если бы они были написаны для AndroidX. Если флаг отсутствует, Android Studio ведет себя так, как если бы флаг был установлен на false.
Edijae Crusar
У меня не получилось, я использую Android studio 3.3, эти параметры уже присутствуют
Санджив
Это определенно требуется, если вы переходите на Android X и используете привязку данных и т. Д. Я мигрировал на одном компьютере, но ошибка появилась на другом, потому что gradle.properties не находится в системе контроля версий
Дэниел Уилсон
1

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

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

Косиара - Бартош Косаржицкий
источник
1

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

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

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

Ян Моравец
источник
1

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

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

Вот решение:

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

Зайнаб
источник
0

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

org.gradle.jvmargs=-Xmx4536m
android.databinding.enableV2=true
Дэниел Уилсон
источник
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>

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

Надсмотрщик
источник
0

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

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

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

азизбекский
источник
0

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

buildscript {
    dependencies {
        classpath 'com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta02'
    }
}
Эрнест Замельчик
источник
0

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

bdpqchen
источник
0

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

owjsub
источник
0

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

androidx.room:room-compiler:2.1.0-alpha06

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

Зумри Мохамед
источник
0

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

abitcode
источник
0

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

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

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

Химаншу Мори
источник