Вопрос анализирует три основных DI-фреймворка для Android.
Dagger: Максимальная производительность, сложная настройка.
Hilt: Упрощённый Dagger с кодогенерацией.
Koin: Простота, но runtime-разрешение зависимостей.
Dagger/Hilt - быстрая кодогенерация, низкое потребление памяти
Koin - медленная рефлексия, высокое потребление памяти
2. Сложность настройки
Dagger:
Требует ручного создания компонентов (@Component).
Hilt:
Автоматическая генерация с @HiltAndroidApp.
Koin:
Простые module { }, но нет проверки на этапе компиляции.
Пример Hilt:
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Provides
fun provideApi(): Api = Retrofit.Builder()...build()
}Dagger/Hilt: Ошибки (например, несвязные графы) обнаруживаются при компиляции.
Koin: Может упасть в runtime при отсутствии зависимости.