bugfix> android > 投稿

アプリをコンパイルすると、生成されたすべてのWhateverFragmentOrActivityBindingクラスで次のエラーが発生します。

error: cannot find symbol
  protected WhateverFragmentOrActivityBinding(DataBindingComponent _bindingComponent, View _root,
                                         ^
  symbol:   class DataBindingComponent
  location: class WhateverFragmentOrActivityBinding

ザ・ DataBindingComponent クラスは生成されていないようです。

DataBindingComponent のドキュメントを見る私たちは見る:

If using Dagger 2, the developer should extend this interface and annotate the extended interface as a Component.

私は実際にDagger 2を使用しているので、これは関連性があると思われます。私はこれを自分でやろうとしましたが、何の役にも立ちませんでしたが、インターネット上で実装されていませんでした。これは私が試したものです:

@Component(dependencies = [AppComponent::class], modules = [(AppModule::class), (AndroidInjectionModule::class), (ActivityBuilderModule::class)])
interface BindingComponent : DataBindingComponent

ただし、既に発生したシンボルエラーが見つからないため、DaggerBindingComponentクラスは生成されません。これは鶏と卵の問題のように思えるので、これが私の問題の解決策であると確信することはできません。

DataBindingComponentは、BindingAdaptersの処理を担当しているようです。 ImageView srcプロパティをバインドするためのカスタムバインディングアダプタがいくつかありますが、これらのアダプタをコメントアウトしても役に立たないため、それらが関連しているかどうかはわかりません。

Daggerをアプリから完全に削除してみましたが、問題は解決しませんでした。他に何を試すべきかわからない

u_u

回答 2 件
  • 私は数日前に同じ問題を抱えていましたが、製品フレーバーを使用していて、そのうちの1つ(現在取り組んでいたもの)が必要なクラスにアクセスできませんでした、これによりすべてのバインディングクラスが失敗しましたすべてのアクティビティまたはフラグメントバインディングクラスで複数のエラーを取得します。

    また、Dagger2を使用していましたが、モジュールの1つがクラス(CustomBroadcastReceiver)にアクセスできませんでした

    @Module
    abstract class BroadcasReceiverModule {
        @ContributesAndroidInjector
        internal abstract fun contributePhoneStateBroadcastReceiver(): CustomBroadcastReceiver
    }
    
    

    ビルドプロセス後にこのエラーは表示されませんでした。BroadcastReceiverModuleは「メイン」リソースの一部でしたが、CustomBroadcastReceiverが存在しない作業中のフレーバーには必要ありませんでした。

    BroadcastReceiverModuleを「メイン」リソースから削除し、実際に必要なフレーバーにのみ配置した後、それはまだ必要ではありませんが、それでも多くのエラーを生成しました

  • 同じエラーメッセージが表示されていました。

    その後、私はそのスタジオを見つけましたエラーが表示されていました DataBindingが使用/ビルドされている場合、ビルド出力にはデフォルトで100行を超えるエラーが表示されませんでした。

    https://github.com/google/dagger/issues/306

    これをbuild.gradleに追加しました:

    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xmaxerrs" << "500" // or whatever number you want
        }
    }
    
    

    次に、実際のエラーを見つけました:

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

    https://issuetracker.google.com/issues/115738511

    私にとっての解決策は格下げ ダガー2.19からダガー2.16。

あなたの答え