Không thể tìm thấy biểu tượng DataBindingComponent trên dự án Android Studio 3.2 Canary 16 Kotlin


90

Tôi vừa tạo một dự án mới trên Android Studio 3.2 Canary 16 với Kotlin được bật. Sau đó, tôi cũng đã bật liên kết dữ liệu, nhưng tôi gặp lỗi nói rằng nó không thể tìm thấy lớp DataBindingComponent.

Đây là lớp dự án của tôi:

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

Tệp gradle mô-đun của tôi:

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 của hoạt động của tôi:

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

Và đây là kết quả xây dựng:

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

Dự án của tôi có gì sai?

Tái bút: Sự cố cũng xảy ra trên Android Studio 3.1.2


bạn đã nhận được bất kỳ giải pháp?
Brijesh Joshi,

@BrijeshJoshi xem câu trả lời của tôi dưới đây
Edijae Crusar

Đối với tôi, lỗi thực sự đã thực sự được in ra sau đó. Sau khi sửa lỗi đó, lỗi này cũng biến mất.
Mygod 19/09/18

1
Trong trường hợp của tôi, không có lỗi nào khác được hiển thị trong nhật ký, nhưng sau khi xem xét các điểm khác biệt của tôi, tôi tìm thấy một chú thích không được bổ sung trong một số tệp kt. Sau khi sửa chữa nhập, xây dựng công trình. Có vẻ là một số vấn đề trong bộ xử lý kapt.
androidguy

1
android.databinding.enableV2=false android.enableExperimentalFeatureDatabinding = false. thêm điều này để grade.propertiesgiải quyết vấn đề của tôi
MMK

Câu trả lời:


58

Các thư viện Databinding đang được cấu trúc lại như một phần của quá trình tái cấu trúc androidx.

Tôi đã tìm thấy liên kết phụ thuộc bộ xử lý chú thích dữ liệu từ kho lưu trữ maven của google tại đây .

Tôi đã xây dựng sự phụ thuộc gradle thực tế từ đó.

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

Cập nhật Kể từ Android studio 3.2.0-beta01, databinding không còn cần khai báo sự phụ thuộc của bộ xử lý chú thích trong tệp gradle, vì databinding có khả năng giải quyết sự phụ thuộc của nó.


4
Tôi đã gỡ bỏ sự phụ thuộc này và đã thử tất cả dưới giải pháp nhưng không có vẻ làm việc
Sanjeev

Bạn đang sử dụng phiên bản studio nào?
Samuel Robert,

Android studio 3.3 Canary 11 với gradle 4.10
Sanjeev

Lỗi: Không thể tìm thấy biểu tượng DataBindingComponent, tôi HAVA dữ liệu ràng buộc cho phép để ture trong gradle, tôi không biết vấn đề là gì
Sanjeev

Đã bật DataBinding trong gradle?
Samuel Robert,

61

Với thiết lập sau

Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, được xây dựng vào ngày 8 tháng 10 năm 2018 JRE: 1.8.0_152-release-1136-b06 x86_64 JVM: OpenJDK 64-Bit Server VM bằng JetBrains sro macOS 10.13.3

Và DataBinding chỉ cần kích hoạt bằng cách có cài đặt này trong ứng dụng của tôi build.gradle

apply plugin: 'kotlin-kapt'

và sau đó

    dataBinding {
        enabled = true
    }

và cả cái này trong thuộc tính gradle.wrapper của tôi

android.databinding.enableV2=true

Tôi đã có những lỗi tương tự:

could not find the DataBindingComponent class.

Tôi đã có hơn 100 trong số chúng. Hóa ra những lỗi đó không quan trọng và lỗi cơ bản thực sự không được hiển thị bởi IDE. Do đó, tôi đã tăng số lượng lỗi mà trình biên dịch Kotlin có thể hiển thị bằng cách thêm lỗi này vào build.gradle:

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

Đột nhiên, ngay bên dưới tất cả những lỗi giả đó, tôi thấy lỗi thật do giải quyết xung đột hợp nhất không thành công 😔


Xin chào, làm cách nào để thực hiện việc này trong một dự án java?
Tosin John

một loạt các lỗi giả mạo ban đầu để Làm với DataBindingComponent. sau đó khi tôi tăng kích thước lỗi. Tôi thấy đó là một vấn đề với tôi khi sử dụng phạm vi không chính xác với dao găm.
filthy_wizard 19/1218

Đây là giải pháp duy nhất hiệu quả..Cảm ơn rất nhiều..nó đã giúp.
Deepak Ganachari,

Không thể tìm thấy biểu tượng DataBindingComponent trong khi xây dựng từ dòng lệnh sử dụng assembleDebug ./gradlew
Chetan Chaudhari

3
Tôi dành những ngày trong đời để tìm kiếm những lỗi không có tin nhắn ...! Cảm ơn người bạn đời, bạn là người đàn ông của năm :-D
m.zander

31

Chỉ cần xóa phần phụ thuộc trình biên dịch (kapt "com.android.databinding: compiler: $ gradleVersion), điều này đã làm việc cho tôi. Rõ ràng, nó được cung cấp với plugin ràng buộc từ 3.2.0.


21

Nếu bạn đang sử dụng phiên bản ổn định của Android Studio 3.2 , Chỉ cần xóa phần phụ thuộc, nó đã được bao gồm.


3
Đã giải quyết nó cho tôi, cảm ơn bạn. Họ nên thêm một chú giải công cụ / tự động sửa lỗi trong IDE.
SpaceMonkey

3
Nhân đôi cho điều này. Lỗi của tôi hơi khác một chút nhưng đây là nguyên nhân sâu xa. Trong trường hợp googles một người nào đó cho nó: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

Lỗi tương tự ở đây trên Android Studio 3.3.1, không có Kotlin, Java thuần túy, sử dụng androidx

build.gradle chứa

    dataBinding {
        enabled true
    }

gradle.properties chứa

android.useAndroidX=true
android.enableJetifier=true
android.databinding.enableV2=true

Tôi đã đấu tranh với vấn đề trong nhiều giờ và sau đó giải quyết nó như sau:

Tạm thời khai báo một giao diện trống cho DataBindingComponent trong Dự án của bạn (trong src/main/java/androidx.databinding/DataBindingComponent.java)

package androidx.databinding;

public interface DataBindingComponent {
}

Hãy để nó biên dịch và lỗi sẽ biến mất. Nhưng bây giờ lỗi root thực sự sẽ được tiết lộ. Kẻ thực sự gây ra mọi rắc rối nhưng bằng cách nào đó đã bị nuốt chửng. Trong trường hợp của tôi, nó đến từ AutoValue cho thấy rằng tôi đang sử dụng nó không đúng cách

error: Parameter type java.lang.Boolean of setter method should be boolean to match getter

sửa lỗi đó và sau đó loại bỏ giao diện giả làm cho trình biên dịch hoạt động trở lại.


Cảm ơn rất nhiều cho câu trả lời này. Tôi đã đấu tranh rất nhiều vì vấn đề này.
Farooq Zaman

Cảm ơn bạn rất nhiều cho việc này
kkl260

1
OMG, cảm ơn bạn, cảm ơn bạn, cảm ơn bạn. Điều này đã hiệu quả !! cảm ơn bạn! Tôi đang di chuyển sang androidx và trong giai đoạn cuối cùng, sau khi hoàn tất, tôi đã gặp phải 70 lỗi như OP. Thủ thuật của bạn đã tiết lộ 13 lỗi cơ bản. Tôi đã nói lời cảm ơn chưa? : D
Alberto Garrido

Bây giờ là Android Studio 3.6.1. Vẫn cần làm theo thủ thuật này để xem lỗi thực sự. :(
krishh

Điều đó thật tuyệt! Cảm ơn bạn!
Takeshi Kaga

15

Đối với những gì đáng giá, tôi đã gặp vấn đề tương tự và đó là kết quả của một truy vấn Phòng không hợp lệ có liên quan đến ràng buộc dữ liệu.


1
hoạt động cho tôi, tôi đã tắt bộ chuyển đổi kiểu chữ để kiểm tra và nó hoạt động
Murat VAROL

2
Cảm ơn! Tôi cũng có một vấn đề liên quan đến Phòng. Tôi đã sử dụng ArrayListnhư một sự trở lại cho một truy vấn nơi nó phải là một List.
Văn

1
Điều này tệ đây. Một vấn đề hoàn toàn không liên quan trong phòng gây ra vấn đề này.
Carson Holzheimer

Điều này KHÔNG dành riêng cho Phòng. Bất kỳ bộ xử lý chú thích nào khác mà bạn sử dụng đều có thể tạo ra một ngoại lệ trong quá trình biên dịch, lỗi trước khi bộ xử lý DataBinding hoạt động.
Vitor Hugo Schwaab

và lỗi đó vẫn bị chôn vùi giữa lỗi được nêu như câu hỏi.
Reejesh PK

14

Trong trường hợp của tôi, đó là một chú thích dao găm xấu. Tôi đặt phạm vi tùy chỉnh trên một Mô-đun thay vì đặt nó trên một phương thức cung cấp.

¯\_(ツ)_/¯


1
Tôi đã thiếu một câu lệnh nhập cho giá trị chú thích và tham số phương thức. Với Dagger 2.19, tôi đã hiểu những điều vô nghĩa ở trên. May mắn thay, Dagger 2.21 đã chỉ cho tôi đúng hướng.
Eugen Pechanec

8

Tôi gặp vấn đề tương tự.

Thay đổi Kaptthành annotationProcessorchỉ cho DataBinding đã khắc phục sự cố cho tôi.


7

tôi gặp sự cố này khi cập nhật lên android studio 3.2, tôi thay đổi plugin gradle từ 3.2.0 sang 3.1.4 và nó hoạt động tốt -> tôi nghĩ đó là vấn đề về gradle, chắc chắn nó sẽ được cập nhật rất sớm


cố gắng thay đổi gradle và để loại bỏ kapt "com.android.databinding: trình biên dịch: 3.1.2"
B.mansouri

Tôi không phải là ở tất cả sử dụng kapt "com.android.databinding: trình biên dịch: 3.1.2", nhưng tôi đã tìm ra được vấn đề, đó là do cấu trúc sai gói và các tập tin di chuyển từ một thư mục khác
Sanjeev

6

Dao găm cũng có thể là nguyên nhân. Thay đổi phiên bản dao găm từ 2.17 trở lại 2.16 có thể khắc phục sự cố này ngay bây giờ.

Thảo luận: https://github.com/google/dagger/issues/1245

Cập nhật

Dagger 2.18 đã ra mắt nhưng rất tiếc là nó vẫn không hoạt động sau khi tôi thử nghiệm (Tôi đã bỏ lỡ điều gì đó?).

Update2

Dagger 2.19 cũng sẽ không hoạt động và cuộc thảo luận bị khóa.

Tuy nhiên, trong Google Issuetracke , có các giải pháp / cách giải quyết. Tôi đã thử nghiệm và chúng đã hoạt động. Kiểm tra nó nếu bạn muốn sử dụng Dagger mới nhất.

Cập nhật3

Sự cố dao găm đã được khắc phục trong Android Studio 3.3.


Tôi cũng khá chắc chắn rằng nó là do Dagger2 gây ra trong trường hợp của tôi / của chúng tôi. Tài liệu chính thức của DataBindingComponent thậm chí còn đề cập đến dao găm: "Nếu sử dụng Dagger 2, nhà phát triển nên mở rộng giao diện này và chú thích giao diện mở rộng như một Thành phần." (nguồn: developer.android.com/reference/android/databinding/… ). Nhưng tôi không hiểu chính xác phải làm gì ở đây và liệu nó có sửa được lỗi không.
muetzenflo

@muetzenflo Thông tin của bạn có vẻ đầy hứa hẹn. Tôi sẽ cố gắng mở rộng thành phần đó và xem liệu nó có thể khắc phục được lỗi hay không.
Dewey Reed

@muetzenflo Tôi đã thử giải pháp nhưng không hiệu quả. Tôi đoán nó chỉ có hiệu lực khi ứng dụng đang chạy nhưng sự cố xảy ra trong thời gian biên dịch.
Dewey Reed

2.19 là ra ngoài và vấn đề vẫn còn đó
Ernest Zamelczyk

@ErnestZamelczyk Bạn nói đúng. Nhưng tôi đã tìm thấy một số cách giải quyết trong Issuetracker. Kiểm tra câu trả lời cập nhật nếu bạn quan tâm.
Dewey Reed

5

cuối cùng tôi đã khắc phục được sự cố của mình vì tôi đang sử dụng Android Annotations và họ đã phát hành Phiên bản mới 4.5.1 1 giờ trước, nơi họ hỗ trợ Trình cắm cấp 3.2.0.

Tôi đã tìm kiếm lỗi này trong một tuần và bây giờ tôi rất vui. Hy vọng điều này cũng giúp bạn!


3

Vấn đề của tôi là tôi đã cố gắng bật liên kết dữ liệu cho Loginmô-đun của mình nhưng không cho Appmô-đun. Sau khi thêm:

dataBinding {
    enabled = true
}

vào Appmô-đun và xóa nó khỏi Loginmô-đun, nó đã hoạt động.


2

Tôi đã thử classpath 'com.android.tools.build:gradle:3.2.0-beta05' có và không có sự phụ thuộc rõ ràngkapt "androidx.databinding:databinding-compiler:3.3.0-alpha06"

Và vẫn nhận được cùng một ngoại lệ.

Tôi cũng đã thử 3.3.0-alpha06 nhưng không có gì thay đổi.

CẬP NHẬT: Sau 2 ngày, tôi đã giải quyết được sự cố. Những gì tôi đã làm là khắc phục thủ công tất cả các tệp gặp sự cố do Di chuyển sang AndroidX (sai gói trong nhập và XML, v.v.). Ngoài ra, tôi cần cập nhật Glide từ 4.7 lên 4.8. Khi tôi sửa tất cả các tệp màu đỏ, sự cố đã biến mất.


2

Đây là sai lầm ngu ngốc nhất của tôi! Tôi thực sự đã tạo một biến riêng cho Databinding và điều đó đã gây ra sự cố này.

Chỉ cần sử dụng a lateinit var bindingvà nó hoạt động.

Điều này có thể giúp ai đó!


Điều này đã giải quyết vấn đề với tôi. Cảm ơn! Tôi đã mất 2 giờ để tìm cái này và không cuộn xuống đủ xa để xem nhận xét của bạn. :(
Oliver Metz

Rất vui vì điều này đã giúp bạn! Rất khó để giải thích lỗi Databinding !!
Kannan_SJD

2

Chỉ cần loại bỏ sự phụ thuộc kapt "com.android.databinding ...". Nếu bạn đang sử dụng phiên bản Android Studio 3.2 trở lên.


2

Trong trường hợp của tôi, nếu bạn sử dụng Mô-đun tính năng động:

build.gradle (ứng dụng)

dataBinding {
    enabled true
}

Điều này cần được bật trên cả tệp gốc và tệp gradle con (đừng quên thêm plugin kapt).


THANNNNKKKKKK YOOOOOUUUUUUUU FFS
Ilansas

1

Tôi sửa lỗi khi cập nhật Android Studio lên Canary 16 VÀ điều này trong gradle.wrapper.propertiesdistributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip


2
Tôi đã sử dụng Canary 16 và Gradle 4.7, nhưng nó không hoạt động.
Juliano Nunes Silva Oliveira

Tôi đang sử dụng Android studio 3.3 Canary 11 và Gradle 4.10 và tôi đang gặp lỗi, vì vậy giải pháp này không phù hợp với tôi
Sanjeev

1

Tôi đã giải quyết lỗi bằng cách thêm

android.useAndroidX=true
android.enableJetifier=true

trong tệp gradle.properties của dự án của tôi


Không làm việc cho tôi. Những gì ở trên làm gì? Bạn đã tìm nó ở đâu?
Amir Uval

1
@auval android.useAndroidX:Khi được đặt thành true, cờ này cho biết rằng bạn muốn bắt đầu sử dụng AndroidX từ bây giờ. Nếu cờ không có, Android Studio sẽ hoạt động như thể cờ được đặt thành false. android.enableJetifier:Khi được đặt thành true, cờ này cho biết rằng bạn muốn có công cụ hỗ trợ (từ plugin Android Gradle) để tự động chuyển đổi các thư viện bên thứ ba hiện có như thể chúng được viết cho AndroidX. Nếu cờ không có, Android Studio sẽ hoạt động như thể cờ được đặt thành false.
Edijae Crusar

Không phù hợp với tôi, tôi đang sử dụng Android studio 3.3 các thông số này đã có sẵn
Sanjeev

Điều này chắc chắn là cần thiết nếu bạn chuyển sang Android X và sử dụng liên kết dữ liệu, vv tôi đã di chuyển trên một máy nhưng các lỗi xuất hiện trên một chương trình khác vì gradle.properties không nằm trong kiểm soát nguồn
Daniel Wilson

1

Trong trường hợp của tôi, vấn đề đã được giải quyết bằng cách thay đổi:

androidExtensions.experimental = true

(tức là dốc DSL như một lớp lót)

đến

androidExtensions {
    experimental = true
}

ngoài việc could not find the DataBindingComponent classtôi cũng đã error: incompatible types: NonExistentClass cannot be converted to Annotationliên kết với kotlinx.android.parcel.Parcelizechú thích (@Parcelize)

Android Studio 3.3; gradle-4.10.1-tất cả; tools.build:gradle 3.3.0


1

Gặp sự cố tương tự khi tôi nhập lớp trong databinding, điều đó không tồn tại. Cũng sử dụng

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

để nhận tất cả các thông báo lỗi để tìm ra sự cố. Đối với dự án của tôi, nó được giới hạn ở 50.


1

Đối với tôi, đã xảy ra lỗi trong tệp bố cục của tôi. Tôi đã tham chiếu đến một hàm không tồn tại.

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

Dưới đây là giải pháp:

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


0

Một cái gì đó khác để thử :) Tôi đang cố gắng đưa GithubBrowserSample vào Android Studio 3.2 (RC3). Tôi tiếp tục nhận được nhiều lỗi kỳ lạ trên databinding mặc dù nó không chỉ định các phiên bản ràng buộc dữ liệu trong build.gradle chính. Giải pháp là xóa hai dòng này khỏi gradle.properties:

org.gradle.jvmargs=-Xmx4536m
android.databinding.enableV2=true

0

Hoàn cảnh của tôi:

Android Studio v3.2.1

com.android.tools.build:gradle:3.2.1

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

Tôi nhận thấy rằng bằng cách xóa databinding khỏi bố cục của mình, biên dịch lại ứng dụng và sau đó thêm lại databinding trong đó đã khắc phục được sự cố này.

Tôi đã thay đổi DataBindingUtil.setContentView(...)thành chỉ setContentView(...)và giảm bố cục hoạt động của mình xuống mức tối thiểu:

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

Sau đó thêm databinding lại từng phần một.


0

Trong trường hợp của tôi, đã xảy ra lỗi nhập trong một trong các tệp. Chỉ cần mở tệp đó đã làm cho quá trình nhập diễn ra tự động và sau đó dự án được xây dựng.

Thật đáng tiếc, AS không đưa ra dấu hiệu nào cho điều này, lỗi stacktrace cũng vậy.

Trong trường hợp không có gì từ câu trả lời đã đăng giúp ích - chỉ cần lướt qua tất cả các tệp trong dự án và tìm kiếm tệp có câu lệnh nhập không chính xác.


0

Đó là một lỗi trong jetifier. Đây là một giải pháp cho bây giờ cho đến bản cập nhật tiếp theo. Đặt cái này vào lớp dự án của bạn:

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

0

Nếu bạn đang sử dụng thư viện phòng dữ liệu, hãy kiểm tra chú thích @Dao trong các lớp DAO của bạn. Trong trường hợp của tôi, tôi đã quên thêm @Dao vào giao diện RoomDatabase'Dao của mình.


0

Các lỗi xây dựng cho các giao diện được tạo như DataBindingComponentthường gây hiểu lầm. Cố gắng tìm kiếm bất kỳ lỗi xây dựng nào khác và sửa những lỗi đó trước, sau đó biên dịch lại.


0

Tôi đã phải xóa lần nhập sau khỏi Gradle,

androidx.room:room-compiler:2.1.0-alpha06

Mặc dù vấn đề kỳ lạ của nó, Chỉ cần cố gắng loại bỏ các nhập không cần thiết, nó sẽ hoạt động.


0

Nếu sử dụng với Cơ sở dữ liệu phòng, hãy kiểm tra tất cả các lớp Dao của bạn nếu bạn có bất kỳ vấn đề nhập nào hoặc không được chỉ định sử dụng TypeConverter bắt buộc @TypeConverters, lỗi này gây nhầm lẫn và sẽ được sửa nếu bạn cập nhật phiên bản công cụ xây dựng cấp độ dự án lên mới nhất. Tôi đã sử dụng classpath 'com.android.tools.build:gradle:3.4.0'và gặp lỗi một cách chính xác.


0

Đối với trường hợp của tôi, có một số lỗi trong cơ sở dữ liệu Phòng lớp Mục ... Lỗi là về công cụ sửa đổi riêng tư nên được công khai cho các biến thành viên của lớp mục Phòng db.

Sử dụng và khám phá dòng lệnh ./gradlew assemblyDebug để xem stacktrace.

# Phòng # Cơ sở dữ liệu # Lớp bảng #DAO

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.