Фреймворк внедрения зависимостей — по сути надстройка на Dagger 2, упрощает работу с DI, но под капотом работает тот же Dagger.

Список готовых компонентов:

Application обязателен:

@HiltAndroidApp
class App : Application() { }

Для использования какого-либо сервиса, нужно пометить Activity/Fragment аннотацией, и после использовать @Inject

@AndroidEntryPoint
class ExampleActivity : AppCompatActivity() { 
    @Inject lateinit var testService: TestService
}

Пример создания модулей:

@InstallIn(ApplicationComponent::class)
@Module
class NetworkModule {
    @Singleton
    @Provides
    fun provideHttpService(): HttpService {
        return object : HttpService {
            init {
                Log.e("Tester", "HttpService initialized")
            }
            override fun request() {
                Log.e("Tester", "HttpService::request")
            }
        }
    }
}

Особенности: