1. 정의
Google에서 개발한 라이브러리로, Android에서 의존성 주입을 더 쉽게 하기 위한 표준 방식
2. 장점
- Android에서 의존성 주입을 쉽게 간단하게 지원할 수 있음.
- 수명 주기를 자동으로 관리하여 애플리케이션에서 DI를 사용하기 쉬움.
- Dagger에서 제공하는 Compile 정확도, Runtime 성능, 확장성을 누릴 수 있음.
- 테스트, 디버그, 출시 와 같은 다양한 빌드 유형에 서로 다른 결합을 프로비저닝하는 쉬운 방법을 제공
3. 제공하는 기능
- Android의 클래스를 나타내는 사전 정의된 결합 [Ex) Application, Activity]
- 사전 정의된 한정자 [Ex) @ApplicationContext, @ActivityContext]
- Hilt가 자동으로 생성하는 구성요소와 함께 사용할 범위 주석
- Android Framework 클래스를 통합하기 위한 구성요소
4. 종속 항목 추가 방법 [ kotlin.DSL 기준 ]
(1) build.gradle (Project Level)에 dependencies 추가
buildscript {
dependencies {
classpath("com.google.dagger:hilt-android-gradle-plugin:2.46")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0")
}
}
(2) build.gradle (App)에 plugin, dependencies 추가
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-kapt")
id("com.google.dagger.hilt.android")
}
dependencies {
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.10.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
androidTestImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test:core-ktx:1.5.0")
androidTestImplementation("androidx.test:rules:1.5.0")
// Room
implementation("androidx.room:room-runtime:2.6.0")
kapt("androidx.room:room-compiler:2.6.0")
// Hilt
implementation("com.google.dagger:hilt-android:2.46")
kapt("com.google.dagger:hilt-android-compiler:2.46")
kapt("org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.6.0")
// Hilt Test
androidTestImplementation("com.google.dagger:hilt-android-testing:2.43.2")
kaptAndroidTest("com.google.dagger:hilt-android-compiler:2.43.2")
}
※ 주의 : build.gradle 설정 시, 각 Hilt 라이브러리 버전에서 지원하는 kotlin 버전을 사용해야 오류가 나지 않음.
kotlin 1.9.0을 사용하고 있는 현재는 hilt의 라이브러리 업데이트 버전이 2.46 이상의 라이브러리를 사용해야한다고 함.
[출처 : https://github.com/google/dagger/issues/4035]
(3) '@HiltAndroidApp'으로 주석이 지정된 Application 클래스 생성
@HiltAndroidApp
class LogApplication: Application() {}
(4) '@AndroidEntryPoint' 주석이 있는 다른 Android 클래스에 종속 항목 삽입
@AndroidEntryPoint
class MainActivity : AppCompatActivity() { ... }
'Study' 카테고리의 다른 글
[Android] 안드로이드 스튜디오 무선 디버깅 연결하는 법 (0) | 2024.02.22 |
---|---|
[Android] Project에 ktlint 적용하기 (0) | 2024.02.19 |
[Android] BuildSrc과 Kotlin DSL을 이용한 Dependency 관리 (0) | 2024.01.02 |
[Android] Stream Chat SDK를 통한 인앱 채팅 시스템 (0) | 2023.11.16 |
[Android] MVVM (0) | 2023.08.07 |