
뱅크샐러드 안드로이드 앱에서 Koin 걷어내고 Hilt로 마이그레이션하기
두줄요약
Koin의 런타임 DI 문제와 크래시를 해결하기 위해 Android 앱을 Hilt로 마이그레이션했습니다. PoC와 가이드라인으로 의존성 그래프를 정비하고 공존·동적 주입 제약을 점검했습니다.
문제 상황
- Koin의
koin.get()기반 런타임 주입으로 멀티모듈 의존성 경로와 인스턴스 생성 시점 추적의 어려움 - 코드 클린업 뒤 누락된 Koin 컴포넌트로 발생한 DI 크래시와 수백 개 화면에 따른 수동 QA 한계
선택 이유
- 컴파일 타임 의존성 검증과 명확한 Dependency Graph 확보 필요
- Dagger의 Android DI 설정을 단순화한 Hilt의 어노테이션 기반 구성 채택
- KAPT 기반 빌드 시간 증가보다 런타임 안정성과 테스트 개선 효과를 우선시한 판단
해결 방법
- PoC, 1-Pager, 가이드라인, 모듈별 작업 티켓을 기반으로 Koin에서 Hilt로 단계적 전환
@HiltAndroidApp,@AndroidEntryPoint,@HiltViewModel,@Module,@Provides,@Binds기반 DI 구성- 모듈·주입 대상별 명명 규칙과
di패키지 기준 수립, 109개 PR과 의존성 그래프 정비
주의할 점
- Koin과 Hilt 공존 시 중복 인스턴스와 부작용 가능성
- Fragment Context와 Activity Context 차이, 생성자 기본값 미지원, 동적 파라미터 주입 제약
- 동적 주입 코드와 기존 테스트 수준을 고려한 Hilt 도입 여부 판단 필요





