본문 바로가기

[Android]/App UI 따라 만들기

[배달의 민족] 따라만들기 10-2편 (Dagger-Hilt)

안녕하세요!

 

이번 편에서는 코드를 수정하도록 하겠습니다.

 

Dagger-Hilt에 관해서는 아래 링크인 공식문서를 참고해보시기 바랍니다.

dagger.dev/hilt/quick-start

 

Quick Start Guide

Introduction Hilt makes it easy to add dependency injection to your Android app. This tutorial will guide you through bootstrapping an existing app to use Hilt. For more on the basic concepts of Hilt’s components, check out Hilt Components. Gradle vs non

dagger.dev

그럼 저희 코드에 Dagger-Hilt를 적용시켜보도록 하겠습니다.

 

1) BaseApplication.kt 생성하기

 

위와 같이 작성만 하면 끝입니다. 매우매우 간단하죠?

Hilt를 사용하기 위해서는 무조건 @HiltAndroidApp이라는 annotation을 가진 Application 클래스가 존재하여야 합니다.

 

2) 생성한 BaseApplication을 AndroidManifest에 추가하기

위 "//추가"라고 되어있는 부분을 추가하시면 됩니다.

AndroidManifest "application" 태그에 android:name은 이 앱에게 앱 프로세스가 시작되면 해당 클래스를 다른 구성요소보다 먼저 인스턴스화 시키라는 명령을 내리게 됩니다. ". BaseApplication"을 추가함으로써 애플리케이션의 다른 구성요소보다 먼저 BaseApplication을 인스턴스화 하라는 뜻입니다. 대부분 앱에서 BaseApplication과 같이 Application 클래스를 상속받는 서브 클래스 정의는 선택사항이며 필요가 없지만, 저희는 Dagger Hilt를 사용하며, Hilt를 사용함에 필요한 구성요소들을 @HiltAndroidApp이라는 annotation을 BaseApplication 클래스에 선언함으로써 생성할 수 있게 됩니다. 즉 이 작업을 통해, Hilt가 자동으로 생성하는 구성요소들을 사용하기 위한 베이스 클래스를 생성되게 되죠. 

 

3) @AndroidEntryPoint 선언하기

[1] MainActivity.kt

위와 같이 MainActivity.kt 파일에서 @AndroidEntryPoint를 추가합니다.

@AndroidEntryPoint annotation은 의존성 주입이 필요한 Activity, Fragment, View, Service, BroadcastReceiver에 사용할 수 있습니다. 저희가 현재 만들고 있는 앱은 Activity와 Fragment로 구성되어 있으며, 가장 뼈대가 되는 MainActivity에 위 그림과 같이 annotation을 작성해줍니다. 참고로 다른 fragment들에도 작성을 해야 하지만, 앞으로 더 많은 코드를 작성 및 수정하게 될 것이며 필요에 따라 작성을 해 나가도록 하겠습니다.

 

 

다음 편에서는 Repository 객체를 필요로 하는 ViewModel들을 Dagger Hilt를 이용하여 의존성 주입을 시키도록 하겠습니다.

더불어 네트워크 통신을 요하며 API를 활용하여 데이터를 끌고 와야 하는 경우에는, Repository에 해당 네트워크 객체(예로 Retrofit)를 주입시켜야 합니다. 혹은 내부 데이터베이스(Room Database)를 사용하여 데이터 캐싱을 해야 할 경우 Repository에 DAO(Data Access Object)를 주입시켜야 합니다. 그러나 저희는 현재 해당 작업까지 하는 상황이 아니므로 ViewModel에 Dagger Hilt를 사용하는 방법에 대해서 알아보도록 하겠습니다.

 

현재 Dagger Hilt Setup 단계이므로 앱 실행은 그대로 됩니다. 

 

[Github] 코드를 다운로드하여서 실행해보시기 바랍니다.

github.com/DJDrama/BaeminPractice/tree/Dagger-Hilt-Setup1

 

DJDrama/BaeminPractice

Contribute to DJDrama/BaeminPractice development by creating an account on GitHub.

github.com

 

그럼 이런 허접한 글 읽어주셔서 감사합니다~!

이 포스트가 좋으면 공감(하트) 부탁드립니다. 

모든 댓글과 질문은 늘 환영합니다!!