안녕하세요.
오늘은 DI를 위한 Hilt를 적용하며 겪은 문제에 대해 공유하려 합니다.
그동안 Dagger2 라이브러리를 사용하여 의존성 주입(DI)를 수행하던 중 3일동안 찾아다녀도 도저히 컴파일오류의 원인을 찾기 못하게 되어 너무 화가 난 나머지 Hilt라이브러리가 적용하기 굉장히 편리하다는 소문을 듣고 찍어먹어보기 위해 라이브러리 공식 홈페이지 및 여러 블로그를 돌아다녀 봤습니다.
참고한 사이트
https://developer.android.com/codelabs/android-hilt?hl=ko#7
https://jsieun73.tistory.com/m/176
이곳저곳에서 본 Hilt적용기를 통해 적용하여 테스트를 해보려던 결과 !!
이게 왠걸 !! 계속해서 viewmodel을 바인드하는 키워드에서 컴파일오류가 나는게 아니겠습니까...
아무리 생각해도 빠뜨린 어노테이션도 없고 모듈, 주입 다 정상적으로 작성하였는데 도대체 어디서 문제가 발생한건지 약 두시간동안 웹서핑을 해본 결과 문제는 다음과 같았습니다.
private val mainViewModel:MainViewModel by viewModels<MainViewModel>()
View에서 ViewModel과 연결해주시 위한 ~~by viewModels() 이부분이 Hilt의 라이브러리가 아니었던것 !!!!
해당 키워드는 ktx(안드로이드 Jetpack에 포함된 Android 라이브러리에 포함된 Kotlin용 확장 프로그램 세트이다.
KTX 확장 프로그램은 간결하고 직관적인 Kotlin을 Jetpack, Android 플랫폼, 기타 API에 제공하는 역할을 한다. by 나무위키) 라이브러리에서 제공하는 키워드였던것 !!
적용하려는 View는 Acitivity였기 때문에 다음과 같은 라이브러리를 build.gradle에 추가하면서 문제를 해결할 수 있었습니다.(fragment를 사용하신다면 activity만 fragment로 바꿔 추가로 작성하시면 됩니다.)
dependencies{
...
implementation "androidx.activity:activity-ktx:1.1.0"
...
}
막상 Hilt를 적용해보니 Dagger에 비해 너무너무너무너무 편하네요...
조만간 Hilt와 관련한 포스팅을 준비해보도록 하겠습니다.
'IT 프로그래밍-Android' 카테고리의 다른 글
[안드로이드] Notification이 발생하지 않는 오류 (0) | 2022.03.06 |
---|---|
[안드로이드] receiver 사용 시 주의할 점 (0) | 2022.02.07 |
[안드로이드] AlarmManager 사용 시 주의할 점 (0) | 2022.02.06 |
[Retrofit] java.lang.IllegalStateException: Expected Android API level 21+ but was 29 에러 해결 (0) | 2022.01.18 |
[안드로이드] 달력만들기 (0) | 2021.12.05 |