본문 바로가기

카테고리 없음

Hilt사용하기

- 일반적으로 클래스안에서 다른 객체가 필요하면 직접 생성해야함. 근데 그러면 테스트할때 가짜객체 바꿔치기 힘들고

객체 생성 로직이 여기저기 흩어짐.
- Hilt는 필요한 걸 대신 만들어서 넣어주는 역할을 함. 

 

class MyViewModel @Inject constructor(
    val repository: PlaceRepository  // Hilt가 알아서 만들어서 넣어줌
)

 

▼ 알아둬야할 3가지 어노테이션

1. @HiltAndroidApp

- Application 클래스에 붙여서 "이 앱 전체에서 Hilt 쓸게" 선언

 

2. @AndroidEntryPoint

Activity/Fragment에 붙여서 "여기서 Hilt로 주입받을게" 선언

 

3. @Inject

"이 생성자로 만들어서 자동으로 넣어줘"

 

 

▼ 원래 부딪히고 보는거야. 실습 바로 가보자곰

1. Gradle 의존성 추가

gradle/libs.versions.toml 에 추가 :

작성 후 sync now 클릭
프로젝트 루트 build.gradle.kts 에 플러그인 추가:
app/build.gradle.kts에 적용:

 

 

2단계: Application 클래스 만들기

HereLogApp.kt 파일 추가한 후
 다음과 같이 작성해준다. 

"이 앱 전체에서 Hilt 쓸게" 라는 어노테이션 @HiltAndroidApp 도 사용해준다. 

 

3단계: AndroidManifest.xml에서 <application> 태그에 등록

 

 

4단계: MainActivity.ky에 등록

@AndroidEntryPoint 어노테이션을 통해서 "여기서 Hilt로 주입받을게" 선언한다 !

 

 

5단계: Hilt Module 만들기

Hilt 모듈이 뭐 하는 놈이냐면

내가 직접 만든 클래스가 아니라 외부 라이브러리 클래스는 @Inject constructor를 붙일 수가 없다 (그 클래스코드를 내가 수정할 수 없으니까). 이럴 때 "이 타입이 필요하면 이렇게 만들어서 줘" 라고 Hilt에게 알려주는 설명서가 바로 Module이다 !

app/src/main/java/com/psg/herelog/ 안에di라는 새 패키지(폴더) 만들고, 그 안에FirebaseModule.kt 파일 생성.
- "Dependency Injection"의 약자로 관례적으로 쓰는 폴더명

 

여기까지 하면 Hilt 초기 세팅 사용준비 끝 
다음엔 firebase 연동하는 법, 사용하는 법 이어서 해볼게요