오랜만에 안드로이드 앱을 개발하려는데, 거의 kotlin으로 넘어간 분위기더라구요? 그래서 저도 한 발 걸치려는데 시작부터 지뢰를 밟아서 피해 가시라고 공유드립니다.
저처럼 옛날에 gradle을 쓰셨던 분이라면 버전이 없어서 햇갈리실텐데, build.gradle(.kts)와 별도로 libs.versions.toml
이라는 파일에서 버전을 관리합니다.
[versions]
junit = "4.13.2"
kotlin = "1.9.24"
ksp = "1.9.24-1.0.20"
[libraries]
junit = { group = "junit", name = "junit", version.ref = "junit" }
[plugins]
google-devtools-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
조사 중에 이런 걸 보신다면 version catalog를 사용하는 것입니다.
Kotlin 버전마다 호환되는 KSP를 사용하셔야 하고, KSP rel에서 해당 Kotlin과 맞는 버전을 찾아서 그 버전의 KSP를 사용하셔야 합니다.
android.composeOptions.kotlinCompilerExtensionVersion
은 Kotlin에 맞게 사용하셔야 합니다. 여기서 볼 수 있습니다.
Kotlin 2.0.0 이상을 사용한다면 compose compiler 대신 별도의 gradle plugin을 쓰셔야 합니다.
android.compileOptions
의 sourceCompatibility
, targetCompatibility
는 android.kotlinOptions.jvmTarget
과 같아야 합니다.
다만, 모든 java 버전이 되는 것은 아니고, Files > Project Structure > modules > app.Properties.SourceCompatiblity에서 표시되는 버전들을 사용할 수 있습니다.
24-09-24 기준 1.6, 1.7, 1.8, 11, 17 버전을 쓸 수 있습니다.
저 같은 경우는 Room을 쓰기 위해 KSP를 추가하며 버전 이슈가 생겼습니다. 다른 분들은 버전 관리에 어려움을 겪지 않길 바랍니다.
감사합니다.