# Kotlin 2に起因するAndroidビルド失敗のトラブルシューティング

> Kotlin のバージョンが 2.0.0 未満のネイティブ Android アプリケーションをビルドする際に、LevelPlay 9.6.0 で導入された Kotlin 2 の依存関係関係が原因で発生する Android ビルドの失敗を特定して修正します。

2.0.0 より前の Kotlin バージョンを使用すると、Android ビルドに失敗する場合があります。このガイドでは、それらを識別して解決する方法について説明します。

## 事象##symptom

LevelPlay SDK 依存関係を 9.6.0 にアップグレードすると、Kotlin のコンパイル中に Android ビルドが失敗します。Android Studio のビルド出力パネルには、失敗したタスクが`:app:compile<Variant>Kotlin` (例えば`:app:compileDebugKotlin`) として表示され、Gradle ログには次のような抜粋が含まれます。

```xml
> タスク：アプリケーション：compileDebugKotlin が失敗しました
  e：互換性のないクラスが依存関係で見つかりました。から削除します。
  classpath や '-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 はバージョンを読み込めます。
  1.9.0 にアップグレードします。
```

修正を適用する前に確認するには、解決済みの Kotlin の stdlib バージョンを調べます。

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

プロジェクトの Kotlin Gradle プラグインが 1.x のときにグラフに`kotlin-stdlib:2.x.x`が表示される場合は、このガイドを参照してください。

## 原因##causes

Android ビルド失敗は、以下の理由で発生する可能性があります。

* LevelPlay SDK 9.6.0 (およびそのネットワークアダプタの一部) は、Kotlin 2.x 標準ライブラリ (現在は `kotlin-stdlib-2.1.21`) と依存関係にあります。
* プロジェクト用に定義されたバージョン 2.0 未満の Kotlin は、Kotlin 2.x を使用する LevelPlay SDK 9.6.0 と互換性がありません。

## 解決方法##resolution

この問題を解決するには、プロジェクトで使用する Kotlin Gradle プラグイン (KGP) のバージョンを 2.0.0 以上にアップグレードします。推奨されるターゲットは 2.1.21 です。これは LevelPlay 9.6.0 自体のバージョンであるため、プロジェクトの stdlib は SDK のものと一致します。

### アップグレード要件##upgrade-requirements

Kotlin 2.0 以上にアップグレードするには、以下のように関連するツールチェーンのバージョンを更新または設定する必要があります。

* Kotlin 2.0 以降のコンパイラーを実行するには、JDK 17 が必要です。Android Studio で JDK 17 を設定するには、プロジェクトで「**設定**」＞「**ビルド、実行**、Deployment」＞「**ビルドツール**」＞「**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 で、「**ファイル」**＞「Gradle ファイルとの**プロジェクト同期**」、**ビルド**＞「**プロジェクトリビルド**」を実行します。
2. 以下をチェックして、ビルドが修正されたことを確認します。
   a.Gradle 出力は`BUILD SUCCESSFUL`メッセージで終了し、`:app:compile<Variant>Kotlin`はエラーなしで完了します。
   b.Incompatible classes that found in dependencies (依存関係で見つかった互換性のないクラス) メッセージはビルドに表示されなくなりました。

エラーが解消されない場合は、以下のください。

* `build.gradle`内の kotlin の依存関係が、更新されたバージョンの kotlin を使用していることを確認します。
* `./gradlew --stop` を実行してから `rm -rf ~/.gradle/caches/transforms-3/` を実行して Gradle キャッシュを消去し、リビルドします。または、Android Studio で「**ファイル」**＞「**キャッシュを無効に**…」を選択し、リビルドします。
