- 일반적으로 클래스안에서 다른 객체가 필요하면 직접 생성해야함. 근데 그러면 테스트할때 가짜객체 바꿔치기 힘들고
객체 생성 로직이 여기저기 흩어짐.
- 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 연동하는 법, 사용하는 법 이어서 해볼게요







