IT 프로그래밍-Android

Hilt 적용기 1

godsangin 2022. 4. 2. 16:18
반응형

안녕하세요.

오늘은 DI를 위한 Hilt를 적용하며 겪은 문제에 대해 공유하려 합니다.

 

그동안 Dagger2 라이브러리를 사용하여 의존성 주입(DI)를 수행하던 중 3일동안 찾아다녀도 도저히 컴파일오류의 원인을 찾기 못하게 되어 너무 화가 난 나머지 Hilt라이브러리가 적용하기 굉장히 편리하다는 소문을 듣고 찍어먹어보기 위해 라이브러리 공식 홈페이지 및 여러 블로그를 돌아다녀 봤습니다.

 

참고한 사이트

https://developer.android.com/codelabs/android-hilt?hl=ko#7 

 

Android 앱에서 Hilt 사용  |  Android 개발자  |  Android Developers

이 Codelab에서는 Hilt를 사용하여 종속 항목 삽입을 실행하는 Android 앱을 빌드해 보겠습니다.

developer.android.com

https://jsieun73.tistory.com/m/176

 

Android Di 라이브러리 Koin 에서 Hilt 로 사용하게 된 이유

제목과 같이 잘 쓰고 있던 Koin에서 Hilt로 변경하게 된 이유와 사용법에 대해 설명하고자 합니다. Koin 실사용 후기 사용법이 정말 쉽습니다. 이게 가장 큰 장점이자 이 이상 설명할것은 없을 거로

jsieun73.tistory.com

https://velog.io/@201/Hilt%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-MVVM-%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

 

Hilt를 사용하여 안드로이드 MVVM 아키텍쳐 구현하기

이번 글에서는 Hilt를 이용하여 MVVM아키텍쳐 구조의 간단한 노트를 구현해보고자 합니다. 혹시 MVVM패턴에 익숙하지 않다면 아래 글에 자세히 설명되어 있습니다https://velog.io/@201/mvvmarchitecture안드

velog.io

 

이곳저곳에서 본 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와 관련한 포스팅을 준비해보도록 하겠습니다.