Что происходит в Dagger, если нажать кнопку build

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

Ответ

При сборке проекта с Dagger генерируются реализации компонентов, модулей и фабрик на основе аннотаций (@Inject, @Provides и др.). Dagger использует APT (Annotation Processing Tool) для анализа кода и создания DI-графа во время компиляции.

Пример:

@Component(modules = [AppModule::class])
interface AppComponent {
    fun inject(activity: MainActivity)
}

После Build Dagger сгенерирует DaggerAppComponent, который реализует AppComponent и содержит логику внедрения зависимостей.

Этапы:

  1. Анализ аннотаций – Dagger сканирует @Component, @Module, @Inject.
  2. Генерация кода – создаются классы типа Dagger*Component в build/generated/source/kapt.
  3. Проверка графа – если зависимости нельзя разрешить, сборка упадёт с ошибкой (например, MissingBinding).

Главное преимущество – ошибки DI обнаруживаются на этапе компиляции, а не в runtime.