본문 바로가기

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

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

 

안드로이드 공식 사이트를 탐방 하던 도중, 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 이녀석 생각보다 까다롭구나...