# Kotlin 2로 인한 Android 빌드 오류 문제 해결

> Kotlin 버전 2.0.0 미만인 네이티브 Android 앱을 빌드할 때 레벨플레이 9.6.0에 도입된 Kotlin 2 종속성으로 인한 Android 빌드 오류를 식별 수정합니다.

Kotlin 버전 2.0.0보다 낮은 버전을 사용하는 경우 Android 빌드 오류가 발생할 수 있습니다. 이 가이드에서는 이를 식별 결정 방법을 설명합니다.

## 증상##symptom

레벨플레이 SDK 종속성을 9.6.0으로 업그레이드하면 Kotlin 컴파일 중에 Android 빌드 실패합니다. Android Studio의 빌드 출력 패널은 실패한 작업을 `:app:compile<Variant>Kotlin`(예:`:app:compileDebugKotlin`)로 표시하며, Gradle 로그에는 다음과 유사한 추론이 포함되어 있습니다.

```xml
> Task :app:compileDebugKotlin FAILED
  e: 종속성에서 호환되지 않는 클래스를 발견했습니다. 에서 제거합니다.
  클래스 경로 또는 '-Xskip-metadata-version-check'을 사용하여 오류를 제거합니다.
  e: file:///.../transformed/jetified-kotlin-stdlib-2.1.21.jar!/META-INF/kotlin-stdlib.kotlin_module
  모듈이 호환되지 않는 Kotlin 버전으로 컴파일되었습니다. 바이너리
  메타데이터의 버전은 2.1.0이고 예상 버전은 1.8.0입니다.
  e: file:///.../src/main/java/.../<YourFile>.kt:NN:NN Class 'kotlin.Unit' was
  호환되지 않는 Kotlin 버전으로 컴파일됩니다. 실제 메타데이터
  버전은 2.1.0이지만 컴파일러 버전 1.8.0은 버전을 읽을 수 있습니다.
  to 1.9.0.
```

수정을 적용하기 전에 확인하려면 해결된 Kotlin stdlib 버전을 확인하십시오.

```kotlin
./gradlew :app:dependencies | grep kotlin-stdlib
```

프로젝트의 Kotlin Gradle 플러그인이 1.x에 있는 동안 그래프에 `kotlin-stdlib:2.x.x`가 표시되는 경우 이 가이드는 적용됩니다.

## 원인##causes

Android 빌드 오류는 다음과 같은 이유로 발생할 수 있습니다.

* 레벨플레이 SDK 9.6.0(및 일부 네트워크 어댑터)은 Kotlin 2.x 표준 라이브러리(현재 `kotlin-stdlib-2.1.21`)에 종속되어 있습니다.
* Kotlin 2.0 이하 프로젝트에 대해 정의된 Kotlin 버전은 Kotlin 2.x를 사용하는 레벨플레이 SDK 9.6.0과 호환되지 않습니다.

## 해결 방법##resolution

이 문제를 결정 프로젝트에서 사용하는 Kotlin Gradle 플러그인(KGP) 버전을 2.0.0 이상으로 업그레이드하십시오. 권장 대상은 레벨플레이 9.6.0 자체 버전인 2.1.21입니다. 따라서 프로젝트의 stdlib는 SDK의 stdlib와 일치합니다.

### 업그레이드 요구 사항##upgrade-requirements

Kotlin 2.0 이상으로 업그레이드하려면 다음과 같이 관련 툴체인 버전을 업데이트하거나 설정해야 할 수 있습니다.

* Kotlin 2.0 이상의 컴파일러 실행하려면 JDK 17이 필요합니다. Android Studio에서 JDK 17을 설정하려면 프로젝트에서 **설정** > **빌드, 실행, 배포** > **빌드 툴** > **Gradle** > **Gradle JDK**로 이동합니다.
* 사용되는 경우 KSP는 Kotlin 버전에 좌우됩니다. `com.google.devtools.ksp`를 Kotlin 버전과 일치하는 릴리스로 업그레이드합니다.
* Jetpack Compose를 사용하는 경우 Kotlin 2.0부터 Compose 컴파일러 Gradle 플러그인 필요합니다. 레거시 `composeOptions.kotlinCompilerExtensionVersion` 설정이 더 이상 적용되지 않습니다.
* Kotlin을 업그레이드하면 K2 컴파일러에서 지원 중단 경고나 `source-incompatible` 변경 사항도 표시될 수 있습니다. 자세한 내용은 [Kotlin 2.0.0 새로운 릴리스 노트](https://kotlinlang.org/docs/whatsnew20.html)를 참조하십시오.

## 해상도 확인##verify-the-resolution

1. Android Studio에서 **File** > **Sync Project with Gradle Files**, **Bild** > **Rebuild Project**를 실행합니다.
2. 다음을 확인하여 빌드 해결되었는지 확인합니다.
   a. Gradle 출력은 `BUILD SUCCESSFUL` 메시지로 끝나고 `:app:compile<Variant>Kotlin`는 오류 없이 완료됩니다.
   b. 종속성 메시지 찾은 비호환 클래스는 빌드 로그에 더 이상 표시되지 않습니다.

오류가 지속되면 다음을 시도하십시오.

* 업데이트된 kotlin 버전을 사용하여 `build.gradle`의 kotlin 종속성을 확인합니다.
* `./gradlew --stop`를 실행한 다음 `rm -rf ~/.gradle/caches/transforms-3/`를 실행하여 Gradle 캐시를 지운 다음 다시 빌드합니다. 또는 Android Studio에서 **File** > \*\*Invalidate Caches...\*\*를 사용한 다음 다시 빌드합니다.
