Не вдається знайти символ 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вирішення моєї проблеми
MMK

Відповіді:


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 with gradle 4.10
Sanjeev

Помилка: не вдається знайти символ DataBindingComponent, у мене є можливість прив'язки даних, щоб ture в gradle, я не знаю, в чому проблема
Санджеєв

Увімкнено прив'язку даних у gradle?
Семюель Роберт

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: OpenJDK 64-Bit Server VM by 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)
        }
    }

Несподівано, прямо під усіма тими фальшивими помилками, я побачив справжню, спричинену невдалим вирішенням конфлікту mer


Привіт, як мені це зробити в Java-проекті?
Тосін Джон

купу помилкових помилок спочатку робити з DataBindingComponent. тоді, коли я збільшую розмір помилки. Я побачив, що це проблема зі мною через неправильну область дії з кинджалом.
filthy_wizard

Це було єдине рішення, яке спрацювало .. Дякую ... допомогло.
Діпак Ганачарі,

Не вдається знайти символ DataBindingComponent під час збірки з командного рядка за допомогою ./gradlew assembleDebug
Chetan Chaudhari

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

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 у вашому проекті (у 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

Щиро дякую за це
kkl260,

1
OMG, дякую, дякую, дякую. Це спрацювало !! Дякую! Я переходив на androidx, і на завершальній стадії, після закінчення, у мене було близько 70 помилок, таких як OP. Ваш фокус виявив 13 основних помилок. Я сказав тобі спасибі? : D
Альберто Гаррідо

Зараз це Android Studio 3.6.1. Ще потрібно дотримуватися цього трюку, щоб побачити фактичну помилку. :(
криш

Це чудово! Дякую!
Takeshi Kaga

15

Наскільки це варте, у мене була подібна проблема, і це було результатом поганого запиту Room, який був пов'язаний із прив'язкою даних.


1
працює для мене, я вимкнув перетворювач типів для перевірки, і він спрацював
Мурат,

2
Дякую! У мене була проблема щодо Кімнати. Я використовував ArrayListяк повернення до запиту, де він повинен бути List.
Ван

1
Це погано. Цю проблему викликає абсолютно не пов’язана проблема в кімнаті.
Карсон

Це НЕ ексклюзивно для Кімната. Будь-який інший процесор анотацій, який ви використовуєте, може створити виняток під час компіляції.
Vitor Hugo Schwaab

і ця помилка залишалася похованою між помилкою, зазначеною як питання.
Reejesh PK

14

У моєму випадку це була погана анотація кинджала. Я розміщую спеціальну область дії на модулі, замість того, щоб розміщувати її на методі забезпечує.

¯\_(ツ)_/¯


1
У мене відсутній оператор імпорту для значення анотації та параметра методу. З Dagger 2.19 я отримав дурниці щодо прив'язки даних вище. На щастя Кинджал 2.21 направив мене у правильному напрямку.
Євген

8

У мене була та сама проблема.

Перехід Kaptна annotationProcessorлише для DataBinding вирішив проблему для мене.


7

я стикаюся з цією проблемою під час оновлення до android studio 3.2, я міняю плагін gradle з 3.2.0 на 3.1.4, і він працює нормально -> я думаю, це проблема gradle, він буде оновлений напевно дуже скоро


спробуйте змінити gradle та видалити kapt "com.android.databinding: compiler: 3.1.2"
B.mansouri

Я взагалі не використовую kapt "com.android.databinding: compiler: 3.1.2", але я зрозумів проблему, це було пов'язано з неправильною структурою пакету і переміщенням файлів з однієї папки в іншу
Санджеєв

6

Кинжал також може бути причиною. Зміна версії кинджала з 2.17 на 2.16 може вирішити цю проблему на даний момент.

Обговорення: https://github.com/google/dagger/issues/1245

Оновлення

Dagger 2.18 вийшов, але, на жаль, він все одно не буде працювати після тестування (я щось пропустив?)

Оновлення2

Dagger 2.19 також не буде працювати, і обговорення закрито.

Але в google issueetracke є рішення / обхідні шляхи. Я тестував, і вони працювали. Позначте його, якщо хочете використовувати найновіший кинджал.

Оновлення3

Проблему з кинджалом виправлено в Android Studio 3.3.


Я також впевнений, що це викликано Dagger2 у моєму / нашому випадку. В офіційній документації DataBindingComponent навіть згадується кинджал: "Якщо використовується Dagger 2, розробник повинен розширити цей інтерфейс і анотувати розширений інтерфейс як компонент". (джерело: developer.android.com/reference/android/databinding/… ). Але я точно не розумію, що тут робити і якщо це виправить помилку.
muetzenflo

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

@muetzenflo Я спробував рішення, але воно не спрацювало. Я думаю, це набуває ефекту лише під час запуску програми, але проблема виникає під час компіляції.
Dewey Reed

2.19 вийшов, і проблема все ще є
Ернест Замельчик

@ErnestZamelczyk Ви маєте рацію. Але я знайшов деякий обхідний шлях у випускнику програм. Перевірте оновлену відповідь, якщо вам цікаво.
Dewey Reed

5

я нарешті вирішив свою проблему, оскільки використовував анотації Android, і вони випустили нову версію 4.5.1 1 годину тому, де вони підтримують Grade Plugin 3.2.0.

Я тиждень шукав цю помилку, і зараз я щасливий. Сподіваюся, це допоможе і вам!


4

Моя проблема полягала в тому, що я намагався увімкнути прив'язку даних для свого Loginмодуля, але не Appмодуля. Після додавання:

dataBinding {
    enabled = true
}

до Appмодуля і видалив його з Loginмодуля, це спрацювало.


Ви, сер, врятували мою кар'єру в самостійній роботі. Це було як спроби та помилки протягом> 8 годин. Потрібно сказати, що мені просто не вистачало "buildFeatures.dataBinding = true" в модулі App. Потрібно було встановити однакове для всіх модулів функцій. Нехай ваше життя завжди буде наповнене медом та молоком.
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

Це моя найдурніша помилка! Я насправді створив приватну змінну для прив'язки даних, і це спричинило цю проблему.

Просто використовуйте a lateinit var bindingі це спрацювало.

Це може комусь допомогти!


Це вирішило проблему зі мною. Дякую! Мені знадобилося 2 години, щоб знайти це, і я не прокрутив вниз досить далеко, щоб побачити ваш коментар. :(
Олівер Мец,

Радий, що це вам допомогло! Помилки прив'язки даних важко інтерпретувати !!
Kannan_SJD

2

Просто видаліть залежність kapt "com.android.databinding ...". Якщо ви використовуєте Android Studio 3.2 або новішу версію.


2

У моєму випадку, якщо ви використовуєте модуль динамічної функції:

build.gradle (додаток)

dataBinding {
    enabled true
}

Це потрібно ввімкнути як для кореневого, так і для дочірнього файлів gradle (не забудьте додати плагін kapt).


THANNNNKKKKKK YOOOOOUUUUUUUU FFS
ilansas

@zeromod Чи можете ви, будь ласка, додати, який плагін kapt? Крім того, що робити, якщо в моєму проекті немає котліна?
Shubham Agrawal,

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 мого проекту


Не працював у мене. Що робить вищезазначене? Де ти його знайшов?
Amir Uval

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.


0

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


0

Мені довелося видалити наступний імпорт із Gradle,

androidx.room:room-compiler:2.1.0-alpha06

Незважаючи на свою дивну проблему, просто спробуйте видалити необхідний імпорт, це повинно працювати.


0

Якщо ви використовуєте з базою даних кімнати, перевірте всі свої класи Dao, якщо у вас є проблема з імпортом або не вказано необхідне використання TypeConverter @TypeConverters, ця помилка вводить в оману і повинна бути виправлена, якщо ви оновите версію інструментів збірки gradle рівня проекту до останньої. Я classpath 'com.android.tools.build:gradle:3.4.0'правильно використав та отримав помилку.


0

У моєму випадку сталася якась помилка в класі елемента бази даних Room ... Помилка стосувалася приватного модифікатора, який повинен бути загальнодоступним для змінних-членів класу елементів db Room.

Використовуйте та досліджуйте командний рядок ./gradlew assembleDebug, щоб побачити стек.

# Кімната # База даних # Клас таблиці # DAO

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.