ไม่พบสัญลักษณ์ DataBindingComponent ในโครงการ Android Studio 3.2 Canary 16 Kotlin


92

ฉันเพิ่งสร้างโปรเจ็กต์ใหม่บน Android Studio 3.2 Canary 16 โดยเปิดใช้งาน Kotlin จากนั้นฉันก็เปิดใช้งานการผูกข้อมูลด้วย แต่ฉันได้รับข้อผิดพลาดที่แจ้งว่าไม่พบคลาส DataBindingComponent

นี่คือผู้เริ่มโครงการของฉัน:

// 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

ห้องสมุด Databinding กำลังถูกปรับโครงสร้างใหม่เป็นส่วนหนึ่งของการปรับโครงสร้าง androidx

ผมพบว่า databinding คำอธิบายประกอบการเชื่อมโยงหน่วยประมวลผลการพึ่งพาจากพื้นที่เก็บข้อมูล Maven ของ Google ที่นี่

ฉันได้สร้างการพึ่งพาการไล่ระดับที่แท้จริงจากที่นั่น

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

อัปเดต ตั้งแต่ Android studio 3.2.0-beta01 การเชื่อมโยงฐานข้อมูลไม่จำเป็นต้องประกาศการอ้างอิงตัวประมวลผลคำอธิบายประกอบในไฟล์ gradle อีกต่อไปเนื่องจากการค้นหาฐานข้อมูลสามารถแก้ไขการอ้างอิงได้


4
ฉันได้ลบการพึ่งพานี้แล้วและลองใช้วิธีแก้ปัญหาด้านล่างทั้งหมด แต่ดูเหมือนจะไม่มีอะไรทำงาน
Sanjeev

คุณใช้สตูดิโอเวอร์ชันใด
Samuel Robert

Android studio 3.3 Canary 11 พร้อม gradle 4.10
Sanjeev

ข้อผิดพลาด: ไม่พบสัญลักษณ์ DataBindingComponent ฉัน hava การผูกข้อมูลเปิดใช้งานเพื่อ ture ใน gradle ฉันไม่รู้ว่ามีปัญหาอะไร
Sanjeev

เปิดใช้ DataBinding ใน gradle หรือไม่
Samuel Robert

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 โดย 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 ได้อย่างไร
Tosin John

ข้อผิดพลาดปลอมจำนวนมากเริ่มต้นด้วย DataBindingComponent จากนั้นเมื่อฉันเพิ่มขนาดข้อผิดพลาด ฉันเห็นว่ามันเป็นปัญหากับฉันโดยใช้ขอบเขตที่ไม่ถูกต้องกับกริช
filthy_wizard

นี่เป็นทางออกเดียวที่ได้ผล .. ขอบคุณมาก.. ที่ช่วย
Deepak Ganachari

ไม่พบสัญลักษณ์ DataBindingComponent ในขณะสร้างจากบรรทัดคำสั่งโดยใช้. /gradlew AssembleDebug
Chetan Chaudhari

3
ฉันใช้เวลาหลายวันในชีวิตเพื่อค้นหาข้อผิดพลาดโดยไม่มีข้อความ ... ! ขอบคุณเพื่อนคุณคือผู้ชายแห่งปี :-D
m.zander

31

เพียงแค่ลบการพึ่งพาคอมไพลเลอร์ (kapt "com.android.databinding: compiler: $ gradleVersion) ซึ่งใช้ได้ผลสำหรับฉันเห็นได้ชัดว่ามันมีปลั๊กอินการผูกจาก 3.2.0


21

หากคุณใช้Android Studio 3.2เวอร์ชันเสถียรอยู่แล้วเพียงแค่ลบการอ้างอิงก็รวมอยู่แล้ว


3
แก้ไขให้ฉันขอบคุณ ควรเพิ่ม tooltip / autofix ใน 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
Alberto Garrido

ตอนนี้เป็น Android Studio 3.6.1 แล้ว ยังคงต้องปฏิบัติตามเคล็ดลับนี้เพื่อดูข้อผิดพลาดที่แท้จริง :(
krishh

นี่มันเยี่ยมมาก! ขอขอบคุณ!
Takeshi Kaga

15

สำหรับสิ่งที่คุ้มค่าฉันมีปัญหาที่คล้ายกันและเป็นผลมาจากการสืบค้นห้องที่ไม่ดีซึ่งเกี่ยวข้องกับการผูกข้อมูล


1
ได้ผลสำหรับฉันฉันปิดการใช้งาน typeconverter เพื่อตรวจสอบและใช้งานได้
Murat

2
ขอบคุณ! ฉันมีปัญหาเกี่ยวกับห้องด้วย ฉันใช้ArrayListเป็นการกลับไปที่แบบสอบถามซึ่งจะต้องเป็นListไฟล์.
รถตู้

1
นี้ไม่ดี. ปัญหาที่ไม่เกี่ยวข้องทั้งหมดในห้องทำให้เกิดปัญหานี้
Carson Holzheimer

นี่ไม่ใช่เฉพาะห้องเท่านั้น ตัวประมวลผลคำอธิบายประกอบอื่น ๆ ที่คุณใช้อาจทำให้เกิดข้อยกเว้นในระหว่างการคอมไพล์ซึ่งล้มเหลวก่อนที่ตัวประมวลผล DataBinding จะเข้ามาเล่น
Vitor Hugo Schwaab

และข้อผิดพลาดนั้นยังคงฝังอยู่ระหว่างข้อผิดพลาดที่ระบุเป็นคำถาม
Reejesh PK

14

ในกรณีของฉันมันเป็นคำอธิบายประกอบกริชที่ไม่ดี ฉันวางขอบเขตที่กำหนดเองในโมดูลแทนที่จะวางไว้ในวิธีการให้

¯\_(ツ)_/¯


1
ฉันมีคำสั่งการนำเข้าที่ขาดหายไปสำหรับค่าคำอธิบายประกอบและพารามิเตอร์วิธีการ ด้วย Dagger 2.19 ฉันได้รับเรื่องไร้สาระเกี่ยวกับฐานข้อมูลด้านบน โชคดีที่ Dagger 2.21 ชี้ฉันไปในทิศทางที่ถูกต้อง
Eugen Pechanec

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" เลย แต่ฉันพบปัญหาเกิดจากโครงสร้างแพ็คเกจที่ไม่ถูกต้องและการย้ายไฟล์จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง
Sanjeev

6

กริชยังอาจเป็นสาเหตุ การเปลี่ยนเวอร์ชันกริชจาก 2.17 กลับเป็น 2.16 สามารถแก้ไขปัญหานี้ได้ในตอนนี้

การสนทนา: https://github.com/google/dagger/issues/1245

อัปเดต

Dagger 2.18 ออกแล้ว แต่น่าเสียดายที่มันยังใช้งานไม่ได้หลังจากที่ฉันทดสอบ (ฉันพลาดอะไรไปหรือเปล่า?)

อัปเดต 2

Dagger 2.19 จะไม่ทำงานและการสนทนาถูกล็อค

แต่ใน Google Issetrackeมีวิธีแก้ปัญหา / วิธีแก้ปัญหา ฉันทดสอบและพวกเขาได้ผล ตรวจสอบว่าคุณต้องการใช้ Dagger รุ่นล่าสุดหรือไม่

อัพเดท 3

ปัญหา Dagger ได้รับการแก้ไขแล้วใน Android Studio 3.3


ฉันค่อนข้างมั่นใจว่ามันเกิดจาก Dagger2 ในกรณีของฉัน / ของเรา เอกสารอย่างเป็นทางการของ DataBindingComponent ยังกล่าวถึงกริช: "หากใช้ Dagger 2 ผู้พัฒนาควรขยายอินเทอร์เฟซนี้และใส่คำอธิบายประกอบอินเทอร์เฟซแบบขยายเป็นส่วนประกอบ" (ที่มา: developer.android.com/reference/android/databinding/… ) แต่ฉันไม่เข้าใจว่าต้องทำอย่างไรที่นี่และจะแก้ไขข้อผิดพลาดได้หรือไม่
muetzenflo

@muetzenflo ข้อมูลของคุณมีแนวโน้มดี ฉันจะพยายามขยายส่วนประกอบนั้นและดูว่าสามารถแก้ไขข้อผิดพลาดได้หรือไม่
Dewey Reed

@muetzenflo ฉันได้ลองวิธีแก้ปัญหาแล้ว แต่ไม่ได้ผล ฉันเดาว่าจะมีผลเฉพาะเมื่อแอปกำลังทำงาน แต่ปัญหาเกิดขึ้นในเวลาคอมไพล์
Dewey Reed

2.19 หมดแล้วและปัญหายังคงอยู่
Ernest Zamelczyk

@ErnestZamelczyk คุณพูดถูก แต่ฉันพบวิธีแก้ปัญหาบางอย่างในเครื่องมือตรวจสอบ ตรวจสอบคำตอบที่อัปเดตหากคุณสนใจ
Dewey Reed

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 แล้ว แต่ไม่มีอะไรเปลี่ยนแปลง

UPDATE: หลังจากผ่านไป 2 วันฉันก็แก้ไขปัญหาได้ สิ่งที่ฉันทำคือแก้ไขไฟล์ทั้งหมดที่มีปัญหาด้วยตนเองเนื่องจากการย้ายไปยัง AndroidX (แพ็กเกจที่ไม่ถูกต้องในการนำเข้าและ XML เป็นต้น) นอกจากนี้ฉันต้องอัปเดต Glide จาก 4.7 เป็น 4.8 เมื่อฉันแก้ไขไฟล์สีแดงทั้งหมดปัญหาก็หายไป


2

นี่เป็นความผิดพลาดที่โง่ที่สุดของฉัน! ฉันได้สร้างตัวแปรส่วนตัวสำหรับ Databinding และนั่นเป็นสาเหตุของปัญหานี้

เพียงใช้ a lateinit var bindingและมันได้ผล

สิ่งนี้สามารถช่วยใครบางคนได้!


สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้ ขอบคุณ! ฉันใช้เวลา 2 ชั่วโมงในการค้นหาสิ่งนี้และไม่ได้เลื่อนลงไปไกลพอที่จะดูความคิดเห็นของคุณ :(
Oliver Metz

ดีใจที่ช่วยคุณได้! ข้อผิดพลาดของ Databinding ตีความยาก !!
Kannan_SJD

2

เพียงแค่ลบการพึ่งพา kapt "com.android.databinding ... " หากคุณใช้ Android Studio 3.2 หรือเวอร์ชันที่สูงกว่า


2

ในกรณีของฉันหากคุณใช้โมดูลคุณลักษณะไดนามิก:

build.gradle (แอป)

dataBinding {
    enabled true
}

สิ่งนี้จำเป็นต้องเปิดใช้งานทั้งบนไฟล์ root และไฟล์ gradle ลูก (อย่าลืมเพิ่มปลั๊กอิน kapt)


THANNNNKKKKKK YOOOOOUUUUUUU FFS
ilansas

@zeromod คุณช่วยเพิ่มปลั๊กอิน kapt ตัวไหนได้ไหม? นอกจากนี้จะเกิดอะไรขึ้นถ้าฉันไม่มี kotlin ในโครงการของฉัน?
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 อยู่แล้ว แต่ใช้งานไม่ได้
Juliano Nunes Silva Oliveira

ฉันใช้ Android studio 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 falseสตูดิโอทำงานเป็นถ้าธงถูกกำหนดให้ android.enableJetifier:เมื่อตั้งค่าเป็นtrueแฟล็กนี้แสดงว่าคุณต้องการรองรับเครื่องมือ (จากปลั๊กอิน Android Gradle) เพื่อแปลงไลบรารีของบุคคลที่สามที่มีอยู่โดยอัตโนมัติราวกับว่าถูกเขียนขึ้นสำหรับ AndroidX ถ้าธงขาด Android falseสตูดิโอทำงานเป็นถ้าธงถูกกำหนดให้
Edijae Crusar

ใช้งานไม่ได้สำหรับฉันฉันใช้ Android studio 3.3 พารามิเตอร์เหล่านี้มีอยู่แล้ว
Sanjeev

สิ่งนี้จำเป็นอย่างยิ่งหากคุณย้ายไปใช้ Android X และใช้ databinding เป็นต้นฉันย้ายข้อมูลในเครื่องเดียว แต่เกิดข้อผิดพลาดในเครื่องอื่นเนื่องจาก gradle.properties ไม่อยู่ในการควบคุมแหล่งที่มา
Daniel Wilson

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

มีปัญหาเดียวกันเมื่อฉันกำลังนำเข้าคลาสใน databinding ซึ่งไม่มีอยู่จริง ยังใช้

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

ฉันพบว่าการลบ databinding ออกจากเค้าโครงของฉันคอมไพล์แอปใหม่แล้วเพิ่มการเชื่อมโยงฐานข้อมูลกลับเข้าไปช่วยแก้ไขปัญหานี้ได้

ฉันเปลี่ยนเป็น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>

จากนั้นเพิ่ม databinding กลับทีละชิ้น


0

ในกรณีของฉันมีข้อผิดพลาดในการนำเข้าในไฟล์ใดไฟล์หนึ่ง เพียงแค่เปิดไฟล์นั้นทำให้การนำเข้าเกิดขึ้นโดยอัตโนมัติและหลังจากนั้นก็มีการสร้างโครงการ

เป็นที่น่าเสียดายที่ AS ให้การบ่งชี้เป็นศูนย์ไม่มีข้อผิดพลาด stacktrace

ในกรณีที่ไม่มีคำตอบใด ๆ จากคำตอบที่โพสต์ไว้ - เพียงแค่ท่องไฟล์ทั้งหมดในโครงการและค้นหาไฟล์ที่มีคำสั่งการนำเข้าไม่ถูกต้อง


0

มันเป็นบั๊กใน jetifier นี่เป็นวิธีแก้ปัญหาสำหรับตอนนี้จนถึงการอัปเดตครั้งต่อไป ใส่สิ่งนี้ไว้ในโครงการของคุณ:

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

หากใช้กับ Room Database ให้ตรวจสอบคลาส Dao ทั้งหมดของคุณหากคุณมีปัญหาในการนำเข้าหรือไม่ได้ระบุ TypeConverter ที่จำเป็นโดยใช้@TypeConvertersข้อผิดพลาดนี้ทำให้เข้าใจผิดและควรได้รับการแก้ไขหากคุณอัปเดตเวอร์ชันเครื่องมือสร้างระดับโปรเจ็กต์ให้เป็นเวอร์ชันล่าสุด ฉันใช้classpath 'com.android.tools.build:gradle:3.4.0'และมีข้อผิดพลาดอย่างถูกต้อง


0

สำหรับกรณีของฉันมีข้อผิดพลาดบางอย่างในคลาสไอเท็มฐานข้อมูลห้อง ... ข้อผิดพลาดเกี่ยวกับตัวปรับแต่งส่วนตัวซึ่งควรเป็นสาธารณะสำหรับตัวแปรสมาชิกของคลาสรายการ db

ใช้และสำรวจบรรทัดคำสั่ง. / gradlew AssembleDebugเพื่อดู stacktrace

# ห้อง # ฐานข้อมูล # ชั้นเรียน #DAO

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.