Сборка Gradle продолжает сбоить из-за MissingBinding при миграции Dagger Hilt

Я пытаюсь перенести свой проект на Dagger Hilt, но у меня возникла проблема с отсутствующей привязкой. Я следил за codelab Google, чтобы добиться этого. .

Это место, где сборка не удалась:

error: [Dagger/MissingBinding] java.util.Map<java.lang.String,javax.inject.Provider<dagger.android.AndroidInjector.Factory<?>>> cannot be provided without an @Provides-annotated method.
  public abstract static class ApplicationC implements WhatToCookApp_GeneratedInjector,
                         ^
      java.util.Map<java.lang.String,javax.inject.Provider<dagger.android.AndroidInjector.Factory<?>>> is injected at
          dagger.android.DispatchingAndroidInjector(�, injectorFactoriesWithStringKeys)
      dagger.android.DispatchingAndroidInjector<java.lang.Object> is injected at
          dagger.android.support.DaggerAppCompatActivity.androidInjector
      at.bwappsandmore.whattocook.MainActivity is injected at
          dagger.android.AndroidInjector.inject(T) [at.bwappsandmore.whattocook.WhatToCookApp_HiltComponents.ApplicationC ? at.bwappsandmore.whattocook.di.ActivityModule_InjectMainActivity.MainActivitySubcomponent]
  It is also requested at:
      dagger.android.DispatchingAndroidInjector(�, injectorFactoriesWithStringKeys)
  The following other entry points also depend on it:

Это соответствующие части проекта:

@HiltAndroidApp
open class WhatToCookApp : Application() {

    val appComponent: AppComponent by lazy {
        initializeComponent()
    }
    open fun initializeComponent(): AppComponent {
        return DaggerAppComponent.factory().create(applicationContext)
    }
}

Компонент приложения:

@Singleton
@Component(
    modules = [AppModule::class,
        ActivityModule::class,
        AndroidSupportInjectionModule::class]
)

interface AppComponent : AndroidInjector<WhatToCookApp> {
    @Component.Factory
    interface Factory {
        fun create(@BindsInstance appContext: Context): AppComponent
    }
}

AppModule:

@InstallIn(ApplicationComponent::class)
@Module
class AppModule {

    @Provides
    fun provideDB(@ApplicationContext context: Context): AppDatabase {
        return AppDatabase.getDatabase(context)
    }

    @Provides
    fun provideDAO(app: AppDatabase): WhatToCookDao {
        return app.whatToCookDao()
    }

    @Provides
    fun provideAppRepository(dao: WhatToCookDao): AppRepository{
        return AppRepository(dao)
    }

    @Provides
    fun provideSharedPreferences(@ApplicationContext context: Context): SharedPreferences {
        return PreferenceManager.getDefaultSharedPreferences(context)
    }
}

ApplicationModulde:

@InstallIn(ApplicationComponent::class)
@Module
interface ActivityModule {
    @ActivityScope
    @ContributesAndroidInjector(modules = [ViewModelModule::class])
    fun injectMainActivity(): MainActivity
}

ViewModelModule:

@InstallIn(ApplicationComponent::class)
@Module
abstract class ViewModelModule {
    companion object{
        @Provides
        fun providesSharedViewModel (activity: MainActivity) : SharedViewModel = activity.viewModel
    }
}

Область действия:

@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class ActivityScope

Я понимаю, что мне нужно использовать аннотацию @Provides для AndroidInjector, но я не знаю, где и как. Любая помощь приветствуется.

Огромное спасибо заранее.


person BWappsandmore    schedule 18.08.2020    source источник
comment
Если вы хотите начать использовать hilt, вы можете (или действительно должны) удалить многое из того, что есть в ваших примерах кода. Вы пытаетесь сочетать dagger.android с hilt, но это не выход. В качестве первого шага удалите все, что связано с dagger.android (AndroidInjector и прочее ...).   -  person Bartek Lipinski    schedule 23.08.2020
comment
Большое спасибо за ваш комментарий - я попробую со всеми изменениями, которые вы предложили. Ваше здоровье   -  person BWappsandmore    schedule 24.08.2020
comment
@BartekLipinski Bartek, не могли бы вы взглянуть на этот выпуск мой с Hilt? Мне действительно любопытно узнать, что мне не хватает. Большое спасибо. Ваше здоровье.   -  person BWappsandmore    schedule 29.12.2020