에러 원인
보통 이런 오류는 gradle 설정 오류입니다 이런 오류는 마주치면 삽질하기 굉장히 쉽습니다
android 개발을 하면서 gradle에 대해 공부하거나 깊게 다루는 기회가 흔치 않기 때문이라 생각합니다!
아래는 제가 적용한 해결법입니다. (참고로 AGP버전은 8.3입니다)
[해결법 1 - jdk 버전 변경]
[해결법 2 - toolchain 이용]
주의 - Java or Kotlin Library 탬플릿 모듈에 에러가 발생했을 때 해결법입니다.
이 해결법은 제가 멀티모듈을 적용해면서
순수 코틀린, 자바 계층인 domain 모듈에서 마주쳤던 에러입니다
해당 코드를 통해 자바 버전을 명시해주었습니다
@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
plugins {
id("java-library")
alias(libs.plugins.org.jetbrains.kotlin.jvm)
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
toolchain {
languageVersion.set(JavaLanguageVersion.of(8))
}
}
[해결법 3 - 버전 수정]
프로젝트 수준 gradle에서 org.jetbrains.kotlin.android 버전을 1.8.10 -> 1.9.0 으로 변경해줬습니다.
plugins {
id("com.android.application") version "8.1.2" apply false
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
alias(libs.plugins.com.android.library) apply false
alias(libs.plugins.org.jetbrains.kotlin.jvm) apply false
alias(libs.plugins.com.google.dagger.hilt.android) apply false
}
회고
(...)
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
kotlinOptions {
jvmTarget = "1.7"
}
(...)
사실 해당 에러는 1_7로 다운그레이드 시켜주면 웬만해선 문제없이 컴파일 될 문제긴 합니다..
하지만 잠깐의 해결책이고 언젠간 또 마주칠 에러입니다
hilt가 자바 8을 사용한다고 하기도 했구, 다른 라이브러리를 사용할때 자바8을 사용하는게 종종 보여서.. 저도 미루고 미루다 몇시간 삽질하면서 해결했네요ㅠㅠ