Я только что создал новый проект на 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
В моем случае в журнале не было никакой другой ошибки, но после просмотра моих различий я обнаружил неимпортированную аннотацию в каком-то файле kt. После исправления импорта сборка работает. Кажется, какая-то проблема в процессоре kapt.
Не удается найти символ DataBindingComponent при сборке из командной строки с помощью ./gradlew assemblyDebug
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. добавление этого в grade.properties решило мою проблему
Я исправляю это, обновляя Android Studio в 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, и я получаю сообщение об ошибке, поэтому это решение мне не подходит.
Я была такая же проблема.
Замена Kapt на annotationProcessor только для DataBinding решила проблему для меня.
Я удалил зависимость, и она тоже работает.
Библиотеки привязки данных подвергаются рефакторингу в рамках рефакторинга androidx.
Я нашел ссылку на зависимость процессора аннотаций привязки данных из репозитория Google Maven здесь.
Я построил фактическую зависимость от 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, у меня есть возможность привязки данных для работы в градиенте, я не знаю, в чем проблема
Включил DataBinding в градиенте?
Я включил его в градиенте, я следил за всем в developer.android.com/topic/libraries/data-binding/start
Спасибо, что спасли меня от катастрофы, наконец-то моя проблема решена с помощью вашего решения, я использовал kapt "androidx.databinding: databinding-compiler: 3.2.0" Версия Gradle и версия привязки должны быть одинаковыми
@habibullah для использования "androidx.databinding: databinding-compiler: 3.2.0", необходимо включить androidX в свойства Gradle. Потому что я пробовал, но ваше решение, но все еще возникает такая же проблема
Простое стирание строки kapt ... в разделе зависимостей файла gradle также решило проблему для меня. (Android Studio 3.3)
спасибо и здорово, это тоже устранило мою проблему (AS 3.2.1) @SamuelRobert
id 'kotlin-kapt' Я удаляю эту строку из плагинов, и теперь ошибка исчезла.
Просто удалите зависимость компилятора (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
У меня не сработало. Что делает вышеперечисленное? Где вы его нашли?
@auval android.useAndroidX: Если установлено значение true, этот флаг указывает, что вы хотите начать использовать AndroidX с этого момента. Если флаг отсутствует, Android Studio ведет себя так, как если бы флаг был установлен на false. android.enableJetifier: Если установлено значение true, этот флаг указывает на то, что вы хотите иметь поддержку инструмента (из плагина Android Gradle) для автоматического преобразования существующих сторонних библиотек, как если бы они были написаны для AndroidX. Если флаг отсутствует, Android Studio ведет себя так, как если бы флаг был установлен на false.
У меня не получилось, я использую Android studio 3.3, эти параметры уже присутствуют
Это определенно требуется, если вы переходите на Android X и используете привязку данных и т. д. Я мигрировал на одном компьютере, но ошибка появилась на другом, потому что gradle.properties не находится в системе управления версиями
В моем случае это была плохая аннотация кинжала. Я помещаю настраиваемую область в модуль вместо того, чтобы помещать ее в метод обеспечения.
¯\_(ツ)_/¯
У меня отсутствовал оператор импорта для значения аннотации и параметра метода. С Dagger 2.19 я получил чушь о привязке данных, описанную выше. К счастью, Dagger 2.21 указал мне правильное направление.
Еще кое-что, чтобы попробовать :) Я пытался вставить GithubBrowserSample в Android Studio 3.2 (RC3). Я продолжал получать много странных ошибок при связывании данных, даже несмотря на то, что он не указывает версии привязки данных в основном build.gradle. Решением было удали эти две строки из gradle.properties:
org.gradle.jvmargs=-Xmx4536m
android.databinding.enableV2=true
Если вы уже используете стабильную версию Android Studio 3.2, просто удалите зависимость, она уже включена.
Решил для меня, спасибо. Они должны были добавить всплывающую подсказку / автоисправление в IDE.
Для этого удвойте. Моя ошибка была немного другой, но это была основная причина. На случай, если кто-то погулит: 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) ...
Я сталкиваюсь с этой проблемой при обновлении до 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", но я понял проблему, это было связано с неправильной структурой пакета и перемещением файлов из одной папки в другую
Кинжал также может быть причиной. Изменение версии 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 Я пробовал решение, но оно не сработало. Я предполагаю, что это действует только тогда, когда приложение работает, но проблема возникает во время компиляции.
2.19 отсутствует, и проблема все еще существует
@ErnestZamelczyk Вы правы. Но я нашел обходной путь в Issetracker. Проверьте обновленный ответ, если вам интересно.
Как бы то ни было, у меня была аналогичная проблема, и она была результатом неправильного запроса комнаты, который был связан с привязкой данных.
у меня работает, я отключил typeconverter для проверки, и он заработал
Спасибо! У меня тоже была проблема с комнатой. Я использовал ArrayList в качестве возврата к запросу, где это должен быть List.
Это плохо. Эту проблему вызывает совершенно не связанная с этим проблема в номере.
Это НЕ эксклюзивно для Room. Любой другой обработчик аннотаций, который вы используете, может вызвать исключение во время компиляции, отказав до того, как процессор DataBinding вступит в игру.
и эта ошибка оставалась похороненной между ошибкой, указанной как вопрос.
Я наконец исправил свою проблему, потому что я использовал Аннотации 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-проекте?
куча фальшивых ошибок, которые нужно сделать с помощью DataBindingComponent. затем, когда я увеличиваю размер ошибки. Я видел, что это проблема, когда я использовал неправильный прицел с кинжалом.
Это было единственное решение, которое сработало. Большое спасибо. Оно помогло.
Не удается найти символ DataBindingComponent при сборке из командной строки с помощью ./gradlew assemblyDebug
Я трачу дни в своей жизни на поиск ошибок без сообщений ...! Спасибо дружище, ты мужчина года :-D
Не могу поверить, что это все еще проблема на 10.01.2019. Должно быть что-то вроде [Чтобы увидеть больше ошибок, нажмите здесь]. Спасибо чувак
Уловка с опцией ("- Xmaxerrs", 500) сработала. Не удалось увидеть правильную ошибку, так как она даже не отображалась. Спасибо!
Я тоже застрял здесь так грустно.
да, обнаружил фактическую ошибку посередине, в моем случае это была проблема с запросом в комнате db. Спасибо!
Это ошибка в jetifier. Вот обходной путь до следующего обновления. Поместите это в свой проект gradle:
buildscript {
dependencies {
classpath 'com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta02'
}
}
Это моя самая глупая ошибка! Я фактически создал частную переменную для привязки данных, и это вызывало эту проблему.
Просто используйте lateinit var binding, и он сработает.
Это могло кому-то помочь!
Это решило проблему со мной. Спасибо! Мне потребовалось 2 часа, чтобы найти это, и я не прокрутил достаточно далеко, чтобы увидеть ваш комментарий. :(
Рад, что это помогло тебе! Ошибки привязки данных трудно интерпретировать !!
Моя проблема заключалась в том, что я пытался включить привязку данных для своего модуля Login, но не для модуля App. После добавления:
dataBinding {
enabled = true
}
в модуль App и удалил из модуля Login, заработало.
Вы, сэр, спасли мою карьеру в сфере самозанятости. Это было похоже на метод проб и ошибок более 8 часов. Я должен сказать, что мне просто не хватало buildFeatures.dataBinding = true в модуле приложения. Пришлось установить то же самое для всех функциональных модулей. Пусть ваша жизнь всегда будет наполнена медом и молоком.
В моем случае проблема было решено изменилась:
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
исправление этого, а затем удаление фиктивного интерфейса снова делает компилятор счастливым.
Большое спасибо за этот ответ. Я много боролся из-за этой проблемы.
Спасибо тебе большое за это
OMG, спасибо, спасибо, спасибо. Это сработало !! благодарю вас! Я переходил на androidx, и на последних этапах, после завершения, у меня было около 70 ошибок, таких как OP. Ваш трюк выявил 13 основных ошибок. Я сказал спасибо? : D
Сейчас это Android Studio 3.6.1. По-прежнему нужно следовать этому трюку, чтобы увидеть фактическую ошибку. :(
Это здорово! Спасибо!
Просто удалите зависимость 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
@zeromod Не могли бы вы добавить, какой плагин kapt? А что, если в моем проекте нет котлина?
В моем случае произошла ошибка в классе 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"
Для меня настоящая ошибка была напечатана после этого. После исправления этой ошибки эта также исчезнет.