Groo

안드로이드 개발자를 위한 Kotlin 2.0의 주요 변경사항 본문

프로그래밍 언어/Kotlin

안드로이드 개발자를 위한 Kotlin 2.0의 주요 변경사항

김주엽 2024. 6. 30. 18:34
반응형

지난달, 5월 21일에 Kotlin 2.0이 릴리즈 되었는데요.

안드로이드 개발자 관점에서 중요한 변경사항들 살펴보겠습니다.


Gradle 8.3 이상 버전을 사용하는 것을 권장함

Gradle 최소 버전은 여전히 6.8.3이긴 하나 Kotlin 2.0에서 Gradle 8.3 미만 버전을 사용하면 아래 케이스들에서 몇 가지 제한사항들이 생길 수 있어서 Gradle 8.3 이상 버전을 사용하는 것을 권장합니다.

 

  1. buildSrc 방식으로 소스 코드를 컴파일하는 경우
  2. included builds 방식으로 Gradle 플러그인을 컴파일하는 경우

상세 내용 더 보기

Compose 컴파일러가 Gradle plugin 방식으로 변경됨

이전까지는 Compose 컴파일러와 Kotlin이 따로 관리가 되어서 서로 호환되는 버전으로 매핑시켜 주는 작업이 번거로웠는데요. 이런 문제를 해결하기 위해서 Compose 컴파일러가 Kotlin Repository에 머지되었습니다. 즉, Compose 컴파일러 버전도 이제 2.0이며 앞으로 Compose 컴파일러와 Kotlin 버전은 같은 버저닝으로 함께 업데이트됩니다.

 

기존에 모듈별 build.gradle 파일에서 kotlinCompilerExtensionVersion 변수에 컴파일러 버전을 설정해 주던 방식에서

// 모듈별 build.gradle

android {
    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }
}

Gradle plugin 방식으로 변경되었습니다.

// 프로젝트 build.gradle

plugins {
    id("org.jetbrains.kotlin.plugin.compose").version("2.0.0").apply(false)
}
// 모듈별 build.gradle

plugins {
    id("org.jetbrains.kotlin.plugin.compose")
}

상세 내용 더 보기

Kotlin 빌드 결과물이 저장되는 디렉터리가 변경됨

이전까지는 <project-root-directory>/.gradle/kotlin 디렉터리에 Kotlin 빌드 결과물이 저장되었지만 Gradle과 Kotlin을 조금 더 구분시키기 위한 목적으로 앞으로는 <project-root-directory>/.kotlin 디렉터리에 Kotlin 빌드 결과물이 저장됩니다.

 

Git Repository에는 Kotlin 빌드 결과물이 포함되지 않아야 하므로 .gitignore 파일에 신규 디렉터리를 추가해야 합니다.

.kotlin/

상세 내용 더 보기

kotlinOptions DSL이 deprecated 됨

이전까지는 kotlinOptions DSL에서 jvmTarget이나 freeCompilerArgs 같은 옵션 등을 설정했지만 해당 DSL이 Kotlin 컴파일러와 관련된 모든 처리를 담당하고 있어서 역할 분리를 시키기 위한 목적으로 deprecated 되었습니다.

android {
    kotlinOptions {
        jvmTarget = "17"
        freeCompilerArgs = listOf("-Xjsr305=strict")
    }
}

앞으로 Kotlin 컴파일러 관련된 옵션들은 compilerOptions DSL을 통해 설정할 수 있습니다.

android {
    kotlin {
        compilerOptions {
            jvmTarget.set(JvmTarget.JVM_17)
            freeCompilerArgs.set(listOf("-Xjsr305=strict"))
        }
    }
}

상세 내용 더 보기

AGP 최소 지원 버전이 변경됨

Kotlin 1.9에서는 AGP 4.2.2가 최소 지원 버전이었으나 Kotlin 2.0에서는 최소 7.1.3 이상의 AGP 버전을 사용해야 합니다.

 

상세 내용 더 보기


참고한 자료


글쓴이를 더 알고 싶다면

반응형
Comments