모바일(Mobile)/안드로이드(Android)

[Hilt] Hilt 적용 오류 : Unable to read Kotlin metadata due to unsupported metadata version

1-hee 2025. 2. 22. 17:35

 

안드로이드 공식 사이트를 탐방 하던 도중, Hilt 라는 의존성 주입 라이브러리에 대해서 접하게 되었다.
마침 프로젝트에서 공식 사이트에서 소개하는 도입 가능 사례에 진행중인 프로젝트가 해당된다고 보아서 도입을 결정해보게 되었다.

 

https://developer.android.com/training/dependency-injection/hilt-android?hl=ko

 

Hilt를 사용한 종속 항목 삽입  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Hilt를 사용한 종속 항목 삽입 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Hilt는 프로젝트에서 종속

developer.android.com

 

안드로이드 공식 사이트는 웬만한 공식 사이트 중에서 내용의 퀄리티가 괜찮기 때문에

100% 신뢰하고 안내하는데로 진행하던 도중 아래와 같은 오류를 마주해 버렸다.

[Hilt] Unable to read Kotlin metadata due to unsupported metadata version.: 
java.lang.IllegalStateException: Unable to read Kotlin metadata due to 
unsupported metadata version.



프로젝트 내부에는 공식 사이트에서 소개하는 순서대로 

천천히 Hilt를 사용하기 전 필요한 최소한의 어노테이션만 추가하고 빌드를 해봤던 상황인데...

 

도대체 왜 앱 실행 하기도 전에 터져버린다는 것인가..!! 

 

눈물을 머금고 구글링을 해본 결과, Hilt 이녀석이 안드로이드에 최적화가 잘 된 만큼 안드로이드 설정에 예민한 것으로 보였다.


많은 글에서 같은 문제를 호소하는 것을 접하게 되었고, 

대부분의 경우 안드로이드 스튜디오에서 사용하는 코틀린 버전과 Hlit 그리고 kapt 또는 ksp의 버전을 맞춰서 해결 한 것으로 보였다.

여기서 단서를 얻고, 현재
안드로이드 스튜디오에서 사용하는 코틀린 버전을 아래와 같이 확인해 보았다.

 

 



하지만 위와 같이 1.9.20 버전이 현재 프로젝트 환경에서 실제로 사용중인 버전이 아닌지 빌드 시에 또 오류가 나는 것이었다...

 

그래서 아래와 같이 아예 프로젝트에서 gradle을 통해 빌드할 때 사용하는

코틀린의 버전 정보를 아래와 같이 IDE에서 권장하는 버전으로 업그레이드 했다.

./gradle/libs.versions.toml

[versions]
agp = "8.8.0"
kotlin = "1.9.24"

...


프로젝트 수준 gradle

// 프로젝트 수준 gradle

plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.kotlin.android) apply false

    id("org.jetbrains.kotlin.kapt") version("1.9.24")
    id("cohttp://m.google.dagger.hilt.android") version "2.51.1" apply false
}


...


앱 수준 gradle

// 앱 수준 gradle

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    id("com.google.android.gms.oss-licenses-plugin")
    id("org.jetbrains.kotlin.kapt")
    id("com.google.dagger.hilt.android")
}

...



 

위와 같이 kotlin 설정을 맞춰주고, 프로젝트와 앱 수준의 gradle을 수정함으로써  빌드 오류를 해결하는 데 성공했다..!

 

이번 사례에서는 다행히 버전을 맞춰줌으로서 해결할 수 있었는데, Hlit 이녀석 생각보다 까다롭구나...