Я являюсь разработчиком мобильных приложений с опытом уже более 3х лет! Я всегда разрабатываю мобильные приложения один — это требует моя работа. Но сегодня я хочу поделиться с Вами тем, что такое Dagger Hilt!
Dagger Hilt — это необходимый каждому инструмент, который упрощает в разы разработку мобильных приложений. Служит для внедрения зависимостей. В первую очередь он необходим тем, у кого в проекте есть множество классов, которые требуют реализации. Хотите чтоб за вас это сделал кто-то другой? Dagger Hilt к вашим услугам.
Hilt — это библиотека внедрения зависимостей для Android, которая упрощает шаблонное внедрение зависимостей вручную в ваш проект. Выполнение внедрения зависимостей вручную требует от вас создания каждого класса и его зависимостей вручную, а также использования контейнеров для повторного использования и управления зависимостям
⭐ Преимущества
-
Быстрый старт
-
Упрощенное управление зависимостями
-
Интеграция с Android компонентами (Activity, Fragment, ViewModel)
⭐ Добавление в проект
Version Catalog:
[versions] # other versions hilt-version = "2.51.1" [libraries] # other libraries hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt-version" } hilt-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt-version" } hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version = "1.2.0" } [plugins] # other plugins hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt-version" }
build.gradle.kts (Module :app)
plugins { // other plugins id("kotlin-kapt") alias(libs.plugins.hilt) } kapt { correctErrorTypes = true } dependencies { // other dependencies implementation(libs.hilt.android) kapt(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) }
build.gradle.kts (Project: YourProjectName)
plugins { // other plugins alias(libs.plugins.hilt) apply false }
⭐ Как его использовать
Вы должны определить класс App. Это базовый класс без которого проект не сможет подтянуть Hilt.
Все приложения, использующие Hilt, должны содержать класс Application , помеченный @HiltAndroidApp .
@HiltAndroidApp запускает генерацию кода Hilt, включая базовый класс для вашего приложения, который служит контейнером зависимостей на уровне приложени
Инициализируете этот класс в манифесте!
@HiltAndroidApp class App: Application() { }
⭐ Внедрение зависимостей в классы
Как только Hilt настроен в вашем классе Application и доступен компонент уровня приложения, Hilt может предоставлять зависимости другим классам Android, имеющим аннотацию @AndroidEntryPoint
@AndroidEntryPoint class ExampleActivity : AppCompatActivity() { ... }
-
Application (с помощью @HiltAndroidApp )
-
ViewModel (с помощью @HiltViewModel )
-
Activity
-
Fragment
-
View
-
Service
-
BroadcastReceiver
Именно эти компоненты поддерживает Hilt. Все те компоненты, что не отмечены «с помощью» используют аннотацию @AndroidEntryPoint
Каждый компонент должен быть аннотирован. Это дает Hilt знать, с какого компонента начать внедрять зависимости. Это стартовые точки для Hilt-а
⭐ Реальные примеры (кейсы)
Аннотация @Inject
class TestClassInject @Inject constructor() { fun invoke1() = "Hello world" val invoke2 = "Hello world 2" }
В MainActivity.kt
@AndroidEntryPoint class MainActivity : ComponentActivity() { @Inject lateinit var testClassInject: TestClassInject override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) testClassInject.invoke1() } }
ВАЖНО: переменная, которая помечено @Inject не может быть приватной!
На это мой пост про Dagger Hilt для начинающих заканчивается. Следующий пост будет о более сложных компонентах и их применениях. Узнаете, как красиво оформить ваш репозитория при использовании Dager Hilt и как можно использовать Hilt в классах из вне. Интересно? Читайте дальше и вы станете настоящим гуру!
ссылка на оригинал статьи https://habr.com/ru/articles/848690/
Добавить комментарий