DataBindingComponent не создается при использовании dagger2

При компиляции моего приложения я получаю следующую ошибку во всех моих сгенерированных классах 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

очистить и перестроить свой проект

Ghimire 25.05.2018 13:12

@Ghimire О, у меня есть. Так много раз.

Jason Ridge 25.05.2018 13:23

Вы добавили обработчик аннотаций как kapt, верно? У тебя же apply plugin: 'kotlin-kapt', да?

EpicPandaForce 25.05.2018 14:10

@EpicPandaForce да

Jason Ridge 29.05.2018 15:15

@JasonRidge Вы нашли для этого решение? Я тоже столкнулся с той же проблемой.

sunil sunny 14.08.2018 08:04

У меня сейчас именно эта проблема. Не могли бы вы тогда найти решение? Ответ очень важен!

muetzenflo 21.10.2018 22:32

есть такая же проблема, есть обновления?

Ralph 25.10.2018 12:01
9
7
2 199
2

Ответы 2

У меня была такая же проблема пару дней назад, я использовал разновидности продуктов, и у одного из них (того, над которым я сейчас работал) не было доступа к необходимому классу, это привело к сбою ВСЕХ классов привязки, я был получение нескольких ошибок для каждого класса привязки Activity или Fragment.

Я также использовал Dagger2, и у одного из моих модулей не было доступа к классу (CustomBroadcastReceiver)

@Module
abstract class BroadcasReceiverModule {

    @ContributesAndroidInjector
    internal abstract fun contributePhoneStateBroadcastReceiver(): CustomBroadcastReceiver
}

эта ошибка никогда не отображалась после процесса сборки, BroadcastReceiverModule был частью моих «основных» ресурсов, но не требовался для того вкуса, над которым я работал, где CustomBroadcastReceiver не существовал

хотя это и не требовалось, он по-прежнему генерировал кучу ошибок, которые исчезли после того, как я удалил BroadcastReceiverModule из «основных» ресурсов и поместил его только на те варианты, которые действительно были необходимы.

Я ненавижу это. На самом деле требуется просто неправильный импорт в класс кинжала, и вы получаете эту ошибку DatabindingComponent. Невозможно отладить в больших проектах.

natario 03.08.2018 22:08

У меня были такие же сообщения об ошибках.

Затем я обнаружил, что Studio показывал ошибки, когда используется / создается 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

Решение для меня было от понизить рейтинг Dagger 2.19 до Dagger 2.16.

Другие вопросы по теме