Android Studio 3.2 Canary 16 Kotlin 프로젝트에서 기호 DataBindingComponent를 찾을 수 없습니다.


91

Kotlin이 활성화 된 Android Studio 3.2 Canary 16에서 새 프로젝트를 방금 만들었습니다. 그런 다음 데이터 바인딩도 활성화했지만 DataBindingComponent 클래스를 찾을 수 없다는 오류가 발생합니다.

내 프로젝트 gradle은 다음과 같습니다.

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.2.41'
    ext.android_plugin_version = '3.2.0-alpha10'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0-alpha16'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

내 모듈 gradle 파일 :

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-kapt'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "net.julianonunes.myapp"
        minSdkVersion 22
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding {
        enabled = true
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    implementation 'com.android.support:design:27.1.1'
    kapt "com.android.databinding:compiler:3.1.2"
}

내 활동의 xml :

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="data"
            type="net.julianonunes.myapp.RegisterData" />
    </data>

    ....
</layout>

다음은 빌드 출력입니다.

Executing tasks: [clean, :app:assembleDebug]

Configuration on demand is an incubating feature.

> Configure project :app
app: 'annotationProcessor' dependencies won't be recognized as kapt annotation processors. Please change the configuration name to 'kapt' for these artifacts: 'androidx.databinding:databinding-compiler:3.2.0-alpha16'.

> Task :clean
> Task :app:clean
> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild
> Task :app:compileDebugAidl NO-SOURCE
> Task :app:compileDebugRenderscript
> Task :app:checkDebugManifest
> Task :app:generateDebugBuildConfig
> Task :app:prepareLintJar UP-TO-DATE
> Task :app:mainApkListPersistenceDebug
> Task :app:generateDebugResValues
> Task :app:generateDebugResources
> Task :app:mergeDebugResources
> Task :app:createDebugCompatibleScreenManifests
> Task :app:processDebugManifest
> Task :app:splitsDiscoveryTaskDebug
> Task :app:processDebugResources
> Task :app:generateDebugSources
> Task :app:dataBindingExportBuildInfoDebug
> Task :app:transformDataBindingBaseClassLogWithDataBindingMergeGenClassesForDebug
> Task :app:transformDataBindingWithDataBindingMergeArtifactsForDebug
> Task :app:dataBindingGenBaseClassesDebug
Download https://dl.google.com/dl/android/maven2/com/android/databinding/compiler/3.1.2/compiler-3.1.2.pom
Download https://dl.google.com/dl/android/maven2/com/android/databinding/compiler/3.1.2/compiler-3.1.2.jar
> Task :app:kaptGenerateStubsDebugKotlin
e: /home/juliano/Documents/Projetos/myapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/net/julianonunes/myapp/databinding/ActivityMainBinding.java:28: error: cannot find symbol
  protected ActivityMainBinding(DataBindingComponent _bindingComponent, View _root,
                                ^
  symbol:   class DataBindingComponent
  location: class ActivityMainBinding
e: /home/juliano/Documents/Projetos/myapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/net/julianonunes/myapp/databinding/ActivityMainBinding.java:46: error: cannot find symbol
      @Nullable ViewGroup root, boolean attachToRoot, @Nullable DataBindingComponent component) {
                                                                ^
  symbol:   class DataBindingComponent
  location: class ActivityMainBinding
e: /home/juliano/Documents/Projetos/myapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/net/julianonunes/myapp/databinding/ActivityMainBinding.java:57: error: cannot find symbol
      @Nullable DataBindingComponent component) {
                ^
  symbol:   class DataBindingComponent
  location: class ActivityMainBinding
e: /home/juliano/Documents/Projetos/myapp/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/net/julianonunes/myapp/databinding/ActivityMainBinding.java:68: error: cannot find symbol
      @Nullable DataBindingComponent component) {
                ^
  symbol:   class DataBindingComponent
  location: class ActivityMainBinding
e: [kapt] An exception occurred: java.lang.NullPointerException
    at java.io.File.<init>(File.java:277)
    at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:77)
    at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:203)
    at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:188)
    at android.databinding.annotationprocessor.ProcessDataBinding.doProcess(ProcessDataBinding.java:90)
    at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:65)
    at org.jetbrains.kotlin.kapt3.ProcessorWrapper.process(annotationProcessing.kt:131)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1068)
    at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:87)
    at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:45)
    at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.runAnnotationProcessing(Kapt3Extension.kt:257)
    at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:212)
    at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:95)
    at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM$analyzeFilesWithJavaIntegration$2.invoke(TopDownAnalyzerFacadeForJVM.kt:97)
    at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:107)
    at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:84)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:374)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:64)
    at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:101)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:365)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:130)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:161)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:63)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:107)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:51)
    at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:96)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$1$2.invoke(CompileServiceImpl.kt:405)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$1$2.invoke(CompileServiceImpl.kt:98)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:920)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:98)
    at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:950)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.doCompile(CompileServiceImpl.kt:919)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:404)
    at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

> Task :app:kaptDebugKotlin FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> Compilation error. See log for more details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.7/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 8s
20 actionable tasks: 19 executed, 1 up-to-date

내 프로젝트에 어떤 문제가 있습니까?

추신 : 문제는 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 리팩토링의 일부로 리팩터링됩니다.

여기 에서 Google의 maven 저장소에서 데이터 바인딩 주석 프로세서 종속성 링크를 찾았습니다 .

나는 거기에서 실제 gradle 종속성을 구성했습니다.

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

업데이트 Android 스튜디오 3.2.0-beta01부터 데이터 바인딩은 종속성을 해결할 수 있으므로 더 이상 gradle 파일에서 선언 할 주석 프로세서 종속성이 필요하지 않습니다.


4
나는이 종속성을 제거하고 모든 솔루션 아래 시도했지만 아무것도 작동하는 것 같군 없었다
산지 브

어떤 스튜디오 버전을 사용하고 있습니까?
사무엘 로버트

Gradle 4.10이 포함 된 Android 스튜디오 3.3 Canary 11
Sanjeev

오류 : 기호 DataBindingComponent를 찾을 수 없습니다. gradle에서 데이터 바인딩을 사용할 수 있습니다. 문제가 무엇인지 모르겠습니다.
Sanjeev

Gradle에서 DataBinding을 활성화 했습니까?
사무엘 로버트

62

다음 설정으로

Android 스튜디오 3.2.1 빌드 # AI-181.5540.7.32.5056338, 2018 년 10 월 8 일에 빌드 됨 JRE : 1.8.0_152-release-1136-b06 x86_64 JVM : JetBrains sro macOS 10.13.3의 OpenJDK 64 비트 서버 VM

그리고 DataBinding은 내 앱 build.gradle에서 간단히 활성화합니다.

apply plugin: 'kotlin-kapt'

그리고

    dataBinding {
        enabled = true
    }

그리고 이것은 내 gradle.wrapper 속성에서

android.databinding.enableV2=true

동일한 오류가 발생했습니다.

could not find the DataBindingComponent class.

100 개가 넘었습니다. 이러한 오류는 중요하지 않으며 IDE에서 실제 기본 오류를 표시하지 않은 것으로 나타났습니다. 따라서 build.gradle에 다음을 추가하여 Kotlin 컴파일러가 표시 할 수있는 오류 수를 늘 렸습니다.

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

갑자기 모든 가짜 오류 바로 아래에서 병합 충돌 해결 실패로 인한 실제 오류를 보았습니다 😔


안녕하세요, Java 프로젝트에서 어떻게 수행합니까?
Tosin John

처음에는 DataBindingComponent로 할 가짜 오류가 많습니다. 그런 다음 오류 크기를 늘릴 때. 단검으로 잘못된 스코프를 사용하는 것이 문제라는 것을 알았습니다.
filthy_wizard

이것이 효과가 있었던 유일한 해결책이었습니다 .. 정말 감사합니다.
Deepak Ganachari

명령 줄에서 빌드 ./gradlew assembleDebug를 사용하는 동안 기호 DataBindingComponent를 찾을 수 없습니다
Chetan에 차우

3
나는 내 인생에서 메시지없이 오류를 검색하는 데 며칠을 보낸다 ...! 감사합니다 친구, 당신은 올해의 남자입니다 :-D
m.zander

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로 마이그레이션하고 있었고 마지막 단계에서 완료 후 OP와 같은 70 오류가 발생했습니다. 당신의 속임수는 13 개의 근본적인 오류를 밝혀 냈습니다. 내가 감사하다고 말 했나요? : D
Alberto Garrido

이제 Android Studio 3.6.1입니다. 실제 오류를 확인하려면이 트릭을 따라야합니다. :(
krishh

이것은 대단합니다! 감사합니다!
Takeshi Kaga

15

그만한 가치는 비슷한 문제가 있었고 데이터 바인딩과 관련된 잘못된 Room 쿼리의 결과였습니다.


1
나를 위해 일하고, 나는 검사를 위해 typeconverter를 비활성화했고 그것은 작동했습니다
Murat

2
감사! 방에 대해서도 문제가있었습니다. 나는 ArrayList그것이 있어야하는 쿼리에 대한 반환 으로 사용 하고 있었다 List.
Van

1
이것은 나쁘다. 방에서 전혀 관련이없는 문제로 인해이 문제가 발생합니다.
Carson Holzheimer 19 년

이것은 Room에만 국한되지 않습니다. 사용하는 다른 주석 프로세서는 컴파일 중에 예외를 throw 할 수 있으며 DataBinding 프로세서가 작동하기 전에 실패합니다.
Vitor Hugo Schwaab

그리고 그 오류는 질문으로 언급 된 오류 사이에 묻혀있었습니다.
Reejesh PK

14

제 경우에는 잘못된 단검 주석이었습니다. provide 메서드에 넣는 대신 모듈에 사용자 지정 범위를 넣었습니다.

¯\_(ツ)_/¯


1
주석 값과 메서드 매개 변수에 대한 import 문이 누락되었습니다. Dagger 2.19에서는 위의 데이터 바인딩 넌센스가 있습니다. 다행히 Dagger 2.21은 저를 올바른 방향으로 안내했습니다.
Eugen Pechanec 2019

8

나는 같은 문제가 있었다.

DataBinding KaptannotationProcessor대해서만 변경 하면 문제가 해결되었습니다.


7

나는 android studio 3.2로 업데이트 할 때이 문제에 직면하고, gradle 플러그인을 3.2.0에서 3.1.4로 변경하고 잘 작동합니다 .--> gradle 문제라고 생각합니다. 곧 업데이트 될 것입니다.


kapt를 제거 Gradle을을 변경하려고 "com.android.databinding : 컴파일러 : 3.1.2"
B.mansouri

나는 kapt "com.android.databinding : compiler : 3.1.2"를 전혀 사용하지 않지만 문제를 알아 냈습니다. 잘못된 패키지 구조와 한 폴더에서 다른 폴더로 파일을 이동했기 때문입니다
Sanjeev

6

단검도 원인 일 수 있습니다. 단검 버전을 2.17에서 2.16으로 다시 변경하면이 문제를 해결할 수 있습니다.

토론 : https://github.com/google/dagger/issues/1245

최신 정보

Dagger 2.18은 출시되었지만 안타깝게도 테스트 후에도 여전히 작동하지 않습니다.

업데이트 2

Dagger 2.19도 작동하지 않으며 토론이 잠겨 있습니다.

그러나 Google issuetracke 에는 솔루션 / 해결 방법이 있습니다. 나는 테스트했고 그들은 일했습니다. 최신 Dagger를 사용하려면 확인하십시오.

업데이트 3

Android Studio 3.3에서 Dagger 문제가 수정되었습니다.


나는 또한 내 / 우리의 경우 Dagger2로 인해 발생한다고 확신합니다. DataBindingComponent의 공식 문서에는 "Dagger 2를 사용하는 경우 개발자는이 인터페이스를 확장하고 확장 된 인터페이스에 구성 요소로 주석을 추가해야합니다." (출처 : developer.android.com/reference/android/databinding/… ). 하지만 여기서해야 할 일과 오류가 수정되는지 정확히 이해하지 못합니다.
muetzenflo

@muetzenflo 귀하의 정보는 유망한 것 같습니다. 해당 구성 요소를 확장하고 오류를 수정할 수 있는지 확인하겠습니다.
Dewey Reed

@muetzenflo 솔루션을 시도했지만 작동하지 않았습니다. 앱이 실행 중일 때만 효과가 있지만 컴파일 시간에 문제가 발생한다고 생각합니다.
Dewey Reed

2.19 아웃하고 문제는 여전히 존재
어니스트 Zamelczyk

@ErnestZamelczyk 맞아요. 하지만 issuetracker에서 몇 가지 해결 방법을 찾았습니다. 관심이 있으시면 업데이트 된 답변을 확인하십시오.
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"가 누락되었습니다. 모든 기능 모듈에 대해서도 동일하게 설정해야했습니다. 당신의 삶이 항상 꿀과 우유로 채워지기를 바랍니다.
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

이것은 나의 가장 어리석은 실수입니다! 실제로 Databinding에 대한 개인 변수를 만들었으며 이로 인해이 문제가 발생했습니다.

그냥 사용 lateinit var binding .

이것은 누군가를 도울 수 있습니다!


이것은 나와 함께 문제를 해결했습니다. 감사! 이걸 찾는 데 2 ​​시간이 걸렸고 댓글을 볼 수있을만큼 아래로 스크롤하지 않았습니다. :(
Oliver Metz

도움이되었다 니 다행입니다! 데이터 바인딩 오류는 해석하기 어렵습니다 !!
Kannan_SJD 2019

2

kapt "com.android.databinding ..."종속성을 제거하십시오. Android Studio 3.2 이상을 사용하는 경우.


2

제 경우에는 Dynamic Feature Module을 사용하는 경우 :

build.gradle (앱)

dataBinding {
    enabled true
}

이것은 루트 및 하위 gradle 파일 모두에서 활성화되어야합니다 (kapt 플러그인을 추가하는 것을 잊지 마십시오).


THANNNNKKKKKK YOOOOOUUUUUUUUUFFS
ilansas

@zeromod 어떤 kapt 플러그인을 추가해 주시겠습니까? 또한 프로젝트에 kotlin이 없으면 어떻게됩니까?
Shubham Agrawal

1

Android Studio를 Canary 16으로 업데이트 하고 gradle.wrapper.properties에서 수정했습니다.distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip


2
이미 Canary 16과 Gradle 4.7을 사용하고 있지만 작동하지 않습니다.
Juliano Nunes Silva Oliveira

Android 스튜디오 3.3 Canary 11 및 Gradle 4.10을 사용하고 있는데 오류가 발생하므로이 솔루션이 저에게 도움이되지 않습니다
Sanjeev

1

추가하여 오류를 해결했습니다.

android.useAndroidX=true
android.enableJetifier=true

내 프로젝트의 gradle.properties 파일에


나를 위해 일하지 않았다. 위의 기능은 무엇입니까? 어디서 찾았 어?
Amir Uval

1
@auval로 android.useAndroidX:설정 true되면이 플래그는 지금부터 AndroidX 사용을 시작할 것임을 나타냅니다. 플래그가 없으면 Android Studio는 플래그가로 설정된 것처럼 작동합니다 false. android.enableJetifier:로 설정 true되면이 플래그는 기존 타사 라이브러리를 AndroidX 용으로 작성된 것처럼 자동으로 변환하기 위해 도구 지원 (Android Gradle 플러그인에서)을 원함을 나타냅니다. 플래그가 없으면 Android Studio는 플래그가로 설정된 것처럼 작동합니다 false.
Edijae Crusar

나를 위해 작동하지 않았다, 나는 안드로이드 스튜디오 3.3을 사용하고 이러한 매개 변수는 이미 존재
산지 브

이는 Android X로 마이그레이션하고 데이터 바인딩 등을 사용하는 경우 반드시 필요합니다. 한 컴퓨터에서 마이그레이션했지만 gradle.properties가 소스 제어에 없기 때문에 다른 컴퓨터에서 오류가 나타났습니다
Daniel Wilson

1

제 경우에는 다음 을 변경 하여 문제 가 해결 되었습니다.

androidExtensions.experimental = true

(즉, 한 줄로 된 gradle DSL)

...에

androidExtensions {
    experimental = true
}

떨어져에서 could not find the DataBindingComponent classI는했다 error: incompatible types: NonExistentClass cannot be converted to Annotation와 관련된kotlinx.android.parcel.Parcelize 주석 (@Parcelize)

Android Studio 3.3; gradle-4.10.1-all; 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 스튜디오 v3.2.1

com.android.tools.build:gradle:3.2.1

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

레이아웃에서 데이터 바인딩을 제거하고 앱을 다시 컴파일 한 다음 데이터 바인딩을 다시 추가하면이 문제가 해결된다는 것을 알았습니다.

DataBindingUtil.setContentView(...)을 just로 변경하고 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 표시를 제공하지 않았고 오류 스택 추적도 수행하지 않은 것은 유감입니다.

게시 된 답변이 도움이되지 않는 경우 프로젝트의 모든 파일을 검색하고 잘못된 import 문이있는 파일을 찾으십시오.


0

제트기의 버그입니다. 다음 업데이트까지 현재 해결 방법은 다음과 같습니다. 이것을 프로젝트 gradle에 넣으십시오.

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

0

데이터 룸 라이브러리를 사용하는 경우 DAO 클래스에서 @Dao 주석을 확인하십시오. 제 경우에는 RoomDatabase'Dao의 인터페이스에 @Dao를 추가하는 것을 잊었습니다.


0

생성 된 인터페이스에 대한 빌드 오류 DataBindingComponent는 일반적으로 오해의 소지가 있습니다. 다른 빌드 오류를 찾아서 먼저 수정 한 다음 다시 컴파일하십시오.


0

Gradle에서 다음 가져 오기를 제거해야했습니다.

androidx.room:room-compiler:2.1.0-alpha06

그 이상한 문제가 있지만, 필요하지 않은 수입품을 제거하려고 노력하십시오.


0

Room Database와 함께 사용하는 경우 가져 오기 문제가 있거나를 사용하여 필요한 TypeConverter를 지정하지 않은 경우 모든 Dao 클래스를 확인합니다 @TypeConverters.이 오류는 오해의 소지가 있으며 프로젝트 수준의 gradle 빌드 도구 버전을 최신 버전으로 업데이트하는 경우 수정해야합니다. classpath 'com.android.tools.build:gradle:3.4.0'올바르게 사용 하고 오류가 발생했습니다.


0

제 경우에는 Room 데이터베이스 항목 클래스에 오류가있었습니다 ... 오류는 Room db 항목 클래스의 멤버 변수에 대해 공개되어야하는 private modifier에 관한 것입니다.

명령 줄 사용 및 탐색 ./gradlew assembleDebug 를 하여 스택 을 확인하세요.

# 방 # 데이터베이스 # 테이블 클래스 #DAO

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.