Ответ
Работал с Dagger 2, Hilt и Koin.
Dagger 2 – мощный, но требует ручного написания компонентов и модулей. Пример:
@Module
class AppModule {
@Provides
fun provideContext(app: Application): Context = app
}
@Component(modules = [AppModule::class])
interface AppComponent {
fun inject(activity: MainActivity)
}
Hilt – упрощённая версия Dagger 2 с аннотациями для Android. Пример:
@HiltAndroidApp
class MyApp : Application()
@AndroidEntryPoint
class MainActivity : AppCompatActivity()
Koin – лёгкий, но менее производительный. Пример:
val appModule = module {
single { MyRepository() }
}
startKoin { modules(appModule) }
Выбор зависит от проекта: Hilt для новых, Koin для быстрого старта, Dagger 2 для сложных случаев.