Как создать свой компонент в Hilt

«Как создать свой компонент в Hilt» — вопрос из категории DI, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Создание своего компонента в Hilt включает несколько шагов:

  1. Определение интерфейса компонента:
@MyScope
@Component(dependencies = [AppComponent::class])
interface MyComponent {
    fun inject(activity: MyActivity)
}
  1. Создание скоупа:
@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class MyScope
  1. Указание модулей:
@Module
@InstallIn(MyComponent::class)
class MyModule {
    @Provides
    @MyScope
    fun provideDependency(): MyDependency = MyDependencyImpl()
}
  1. Создание билдера (если нужны кастомные параметры):
@Component.Builder
interface Builder {
    fun appComponent(component: AppComponent): Builder
    fun build(): MyComponent
}

Ключевые моменты:

  • Компоненты должны быть помечены @Component
  • Область видимости определяется через кастомные @Scope аннотации
  • Модули указываются с @InstallIn
  • Для нестандартной инициализации используется билдер