Ответ
Dagger 2 — самый популярный аналог, на котором основан Hilt. Он мощнее, но требует больше boilerplate-кода.
Koin — легковесная DI-библиотека без кодогенерации, работает на рефлексии. Проще в настройке, но медленнее в runtime.
Kodein — еще одна альтернатива с DSL-синтаксисом. Поддерживает мультиплатформенность (KMM).
Пример Koin:
val module = module {
single { Repository() }
factory { ViewModel(get()) }
}
startKoin { modules(module) }
Для небольших проектов можно обойтись ручной DI или ServiceLocator (например, через by lazy).