web-dev-qa-db-ja.com

Android Studio 3.2 Canary 16 KotlinプロジェクトでシンボルDataBindingComponentが見つかりません

Kotlinを有効にしてAndroid Studio 3.2 Canary 16で新しいプロジェクトを作成しました。それからデータバインディングも有効にしましたが、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
}

私のモジュールグレードファイル:

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でも発生します

データバインディングライブラリは、androidxのリファクタリングの一部としてリファクタリングされています。

私は、GoogleのMavenリポジトリ - here からデータバインディングアノテーションプロセッサの依存関係リンクを見つけました。

そこから実際のgradle依存関係を構築しました。

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

更新 Android Studio 3.2.0-beta01以降、データバインディングでは依存関係を解決できるため、データバインディングで注釈プロセッサの依存関係をグラドルファイルで宣言する必要がなくなりました。

49
Samuel Robert

以下の設定で

Android Studio 3.2.1ビルド番号AI-181.5540.7.32.5056338、2018年10月8日JRE:1.8.0_152-release-1136-b06 x86_64 JVM:OpenJDK 64ビットサーバー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によって示されていないことがわかりました。そのため、build.gradleにこれを追加することで、Kotlinコンパイラが表示できるエラーの数を増やしました。

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

突然、これらすべての偽のエラーの真下に、マージ競合の解決に失敗したことによる本物のエラーが表示されました。

42
Hamady C.

コンパイラの依存関係(kapt "com.Android.databinding:compiler:$ gradleVersion)を削除してください。これは私にとってはうまくいきました。どうやらそれは3.2.0からバインディングプラグインで提供されているようです。

30

Android Studio 3.2 stableバージョンをすでに使用している場合は、依存関係を削除するだけで、既に含まれています。

20

私の場合、それは悪い短剣の注釈でした。提供メソッドにではなく、モジュールにカスタムスコープを置きます。

¯\_(ツ)_/¯

12
mbonnin

それだけの価値があるために、私は同様の問題を抱えていました、そしてそれはデータバインディングに関連した悪いRoomクエリの結果でした。

10
Bink

Androidxを使用したAndroid Studio 3.3.1、Kotlin、ピュアJava、ここでも同じエラー

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

それを修正してからダミーインターフェイスを削除すると、コンパイラは再び幸せになります。

9
Ginie

私は同じ問題を抱えていました。

DataBindingでのみKaptannotationProcessorに変更することで、問題が解決しました。

8
Saeed.re

私はアンドロイドスタジオ3.2にアップデートするとき、私はこの問題に直面します、私は3.2.0からグラドルプラグインを3.2.4に変えて、それはうまく働きます - >私はそれがグラドル問題だと思います、それは確かに非常にすぐに更新されます

7
B.mansouri

短剣も原因かもしれません。 短剣のバージョンを2.17から2.16に変更することで、今のところこの問題を解決できます。

ディスカッション: https://github.com/google/dagger/issues/1245

更新

Dagger 2.18は出ましたが、残念ながら私がテストした後もまだうまくいきません(何かを逃したことがありますか?).

アップデート2

短剣2.19も機能せず、議論はロックされます。

しかし Googleのissuetracke には、解決策/回避策があります。私はテストしました、そして彼らは働きました。最新の短剣を使用したい場合はチェックしてください。

アップデート3

短剣の問題は、Android Studio 3.3で修正されました。

5
Dewey Reed

Android Annotations を使用していたため、ようやく私の問題を修正し、Grade Plugin 3.2.0をサポートする新しい バージョン4.5.1 1時間前にリリースしました。

私はこのバグを1週間探していたので、今幸せです。これも助けになれば幸いです。

3
Sandra

明示的な依存関係の有無にかかわらず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

Kapt "com.Android.databinding ..."依存関係を削除するだけです。 Android Studio 3.2以降のバージョンを使用している場合.

1
Naimish Vinchhi

これは私の最もばかげた間違いです!私は実際にDatabinding用のプライベート変数を作成しましたが、それがこの問題の原因でした。

lateinit var bindingを使うだけでうまくいきました。

これは誰かに役立つかもしれません!

1
Kannan_SJD

私はそれを更新修正 アンドロイドスタジオにカナリー16 そしてこれをgradle.wrapper.propertiesでdistributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.Zip

1
Eduardo Dornel

私は追加することによってエラーを解決しました

Android.useAndroidX=true
Android.enableJetifier=true

私のプロジェクトのgradle.propertiesファイルに

1
Edijae Crusar

私の場合、問題は で解決されました 変更することで:

androidExtensions.experimental = true

(DSLをワンライナーとして許可)

androidExtensions {
    experimental = true
}

could not find the DataBindingComponent classとは別に、私はerror: incompatible types: NonExistentClass cannot be converted to Annotationkotlinx.Android.parcel.Parcelizeアノテーションに関連付けました(@Parcelize)

アンドロイドスタジオ3.3。 gradle-4.10.1-all。 tools.build:gradle 3.3.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
Taskmaster

私の場合、動的機能モジュールを使用している場合:

build.gradle(アプリ)

dataBinding {
    enabled true
}

これは、ルートと子の両方のgradleファイルで有効にする必要があります(kaptプラグインを追加することを忘れないでください)。

0
zeromod

私の場合、Roomデータベースアイテムクラスにエラーがありました...エラーは、ルームdbアイテムクラスのメンバー変数に対してパブリックである必要があるプライベート修飾子に関するものでした。

コマンドライン./ gradlew assembleDebugを使用して探索し、stacktraceを確認します。

#Room #Database #Table class #DAO

0
Himanshu Mori

私がデータバインディングでクラスをインポートしていた時に同じ問題がありました、それは存在しませんでした。また使う

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

問題を見つけるためにすべてのエラーメッセージを受け取るため。私のプロジェクトでは、50に制限されていました。

0
Jan Moravec

他にも試してみたいことがあります。GithubBrowserSampleをAndroid Studio 3.2(RC3)に取り込もうとしていました。メインのbuild.gradleでデータバインディングのバージョンが指定されていないにもかかわらず、データバインディングで多くの奇妙なエラーが発生し続けました。解決策は 次の2行を削除することです gradle.propertiesから:

org.gradle.jvmargs=-Xmx4536m
Android.databinding.enableV2=true
0
Daniel Wilson

DataBindingComponentのような生成されたインターフェースのためのビルドエラーは通常誤解を招きやすいです。他のビルドエラーを探して、まずそれらを修正してから再コンパイルしてください。

0
owjsub

それはjetifierのバグです。これは次のアップデートまでの間の回避策です。これをあなたのプロジェクトの課題に入れてください。

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

Room Databaseで使用している場合、インポートの問題がある場合、または必須のTypeConverterを@TypeConvertersを使用して指定していない場合は、すべてのDaoクラスをチェックしてください。私はclasspath 'com.Android.tools.build:gradle:3.4.0'を使い、正しくエラーを得ました。

0
abitcode

私の問題は、Loginモジュールのデータバインディングを有効にしようとしたがAppモジュールの有効化を試みなかったことでした。追加した後:

dataBinding {
    enabled = true
}

Appモジュールに追加してLoginモジュールから削除すると、うまくいきました。

0

データルームライブラリを使用している場合は、DAOクラスの@Daoアノテーションを確認してください。私の場合は、Room Database Daoのインターフェースに@Daoを追加するのを忘れていました。

0
bdpqchen

Gradleから次のインポートを削除しなければなりませんでした、

androidx.room:room-compiler:2.1.0-alpha06

その奇妙な問題ですが、不必要なインポートを削除するだけでうまくいくはずです。

0
Zumry Mohamed

私の場合、 インポートエラー のいずれかのファイルにありました。そのファイルを開くだけで自動的にインポートが行われ、その後プロジェクトが構築されます。

残念なことに、ASがこれについて何も指摘していなかったことも、エラースタックトレースもしていなかったことです。

投稿された回答から何も助けにならない場合 - プロジェクト内のすべてのファイルを閲覧して、誤ったインポートステートメントを含むファイルを探してください。

0
azizbekian