Kotlin 2に起因するAndroidビルド失敗のトラブルシューティング
Kotlin のバージョンが 2.0.0 未満のネイティブ Android アプリケーションをビルドする際に、LevelPlay 9.6.0 で導入された Kotlin 2 の依存関係関係が原因で発生する Android ビルドの失敗を特定して修正します。
読み終わるまでの所要時間 7 分最終更新 6日前
2.0.0 より前の Kotlin バージョンを使用すると、Android ビルドに失敗する場合があります。このガイドでは、それらを識別して解決する方法について説明します。
事象
LevelPlay SDK 依存関係を 9.6.0 にアップグレードすると、Kotlin のコンパイル中に Android ビルドが失敗します。Android Studio のビルド出力パネルには、失敗したタスクが (例えば) として表示され、Gradle ログには次のような抜粋が含まれます。
:app:compile<Variant>Kotlin:app:compileDebugKotlin> タスク:アプリケーション: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 バージョンを調べます。
./gradlew :app:dependencies | grep kotlin-stdlib
プロジェクトの Kotlin Gradle プラグインが 1.x のときにグラフにが表示される場合は、このガイドを参照してください。
kotlin-stdlib:2.x.x原因
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 と互換性がありません。
解決方法
この問題を解決するには、プロジェクトで使用する Kotlin Gradle プラグイン (KGP) のバージョンを 2.0.0 以上にアップグレードします。推奨されるターゲットは 2.1.21 です。これは LevelPlay 9.6.0 自体のバージョンであるため、プロジェクトの stdlib は SDK のものと一致します。
アップグレード要件
Kotlin 2.0 以上にアップグレードするには、以下のように関連するツールチェーンのバージョンを更新または設定する必要があります。
- Kotlin 2.0 以降のコンパイラーを実行するには、JDK 17 が必要です。Android Studio で JDK 17 を設定するには、プロジェクトで「設定」>「ビルド、実行、Deployment」>「ビルドツール」>「Gradle」>「**Gradle JDK」**を選択します。
- KSP を使用する場合、Kotlin バージョンに関連付けられています。をKotlinのバージョンに一致するリリースにアップグレードします。
com.google.devtools.ksp - Jetpack Compose を使用する場合は、Kotlin 2.0 以降の Compose コンパイラー Gradle プラグインが必要です。古い機能設定は適用されなくなります。
composeOptions.kotlinCompilerExtensionVersion - Kotlin をアップグレードすると、K2 コンパイラーで独自のコードに非推奨の警告や変更がディスプレイされる場合があります。詳細については、Kotlin 2.0.0 の新機能リリース ノートを参照してください。
source-incompatible
解像度の確認
- Android Studio で、「ファイル」>「Gradle ファイルとのプロジェクト同期」、ビルド>「プロジェクトリビルド」を実行します。
- 以下をチェックして、ビルドが修正されたことを確認します。
a.Gradle 出力はメッセージで終了し、
BUILD SUCCESSFULはエラーなしで完了します。 b.Incompatible classes that found in dependencies (依存関係で見つかった互換性のないクラス) メッセージはビルドに表示されなくなりました。:app:compile<Variant>Kotlin
エラーが解消されない場合は、以下のください。
- 内の kotlin の依存関係が、更新されたバージョンの kotlin を使用していることを確認します。
build.gradle - を実行してから
./gradlew --stopを実行して Gradle キャッシュを消去し、リビルドします。または、Android Studio で「ファイル」>「キャッシュを無効に…」を選択し、リビルドします。rm -rf ~/.gradle/caches/transforms-3/