Hilt는 DI 라이브러리다.
DI는 의존성 주입이라는 의미로, 객체생성없이 원래있었던 객체를 넣어준다는 의미이다.
확장성과 런타임시간, 컴파일 안정성까지 책임지는 Hilt를 알아보자
프로젝트의 빌드에 추가한다.
buildscript {
...
ext.hilt_version = '2.38.1'
dependencies {
...
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
}
}
이제 앱수준의 빌드에 아래의 글을 추가한다.
plugins {
kotlin("kapt")
id("dagger.hilt.android.plugin")
}
android {
...
}
dependencies {
implementation("com.google.dagger:hilt-android:$hilt_version")
kapt("com.google.dagger:hilt-android-compiler:$hilt_version")
}
힐트를 사용하기 위해선 Applcation 상속받아서 @HiltAndroidApp를 붙여야한다.
이와 같은 행동은 Hilt가 생명주기에 연결되고, 액세스를 할수있도록 만든다.
@HiltAndroidApp
class ExampleApplication : Application() { ... }
어플리케이션에 추가가 되면 힐트는 다른 클래스에서 @AndroidEntryPoint를 받아
종속성을 제공한다.
@AndroidEntryPoint
class ExampleActivity : AppCompatActivity() { ... }
현재 종속성을 주입받을수잇는 클래스들
현재 ViewModel과 Application만 다른 Annotation을 받는다.
AnalyticsAdapter는
class AnalyticsAdapter @Inject constructor(
private val service: AnalyticsService
) { ... }