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