Kotlin バージョンの互換性と移行

このページでは、Navigation SDK の Kotlin バージョンの互換性に関する情報と、新しいバージョンに移行するためのガイダンスを提供します。

次の表に、Kotlin バージョンの要件と、最近のバージョンの Navigation SDK で推奨される AGP と Gradle のバージョンを示します。

Navigation SDK のバージョン Kotlin バージョン(必須) Android Gradle プラグイン(AGP)と Gradle のバージョン(推奨)
8.0+ 2.3.0
  • AGP 9.0.1
  • Gradle 9.1.0

重要: Navigation SDK 8.0 以降では、AGP 9.0.1 は推奨ではなく、最小要件です。SDK が minAndroidGradlePluginVersion=9.0.1 を宣言し、以前のバージョンの AGP を使用したビルドが失敗します。

7.7 ~ 7.9 2.3.0
  • AGP 8.13.2
  • Gradle 8.13
7.3 ~ 7.6 2.2.10
  • AGP 8.10.0
  • Gradle 8.11.1
6.3 ~ 7.2 2.1
  • AGP 8.7.3
  • Gradle 8.10.2
6.0 ~ 6.2 2.0
  • AGP 8.3.0
  • Gradle 8.4
5.1 ~ 5.99.1 1.9 JDK-8272564 の回避策が用意されている AGP 7.3 以降を使用することをおすすめします。

Kotlin バージョンの互換性

Kotlin 2.3 は Kotlin 2.2 との下位互換性をサポートしています。つまり、Navigation SDK で Kotlin 2.2 をすでに使用している場合は、互換性を破る変更をすべて解決しなくても、Kotlin 2.3 にアップグレードできます。ただし、これは安定した言語機能にのみ適用されます。Kotlin 言語でアルファ版、ベータ版、試験運用版の機能を使用している場合は、アップグレード時に追加の変更が必要になることがあります。

移行を容易にする: Kotlin 互換性フラグ

Kotlin には、互換性を破る変更を制限するのに役立つ 2 つのフラグが用意されています。https://kotlinlang.org/docs/compatibility-modes.html

language-version X.Y

このフラグは、以前の Kotlin バージョンの動作に対する互換性を破る変更を元に戻します。 たとえば、Kotlin 2.2 を使用している場合は、[ - language-version 2.2] を指定すると、新しい互換性を破る変更は有効になりません。

android {
   kotlinOptions {
       languageVersion = '2.2'
   }
}

api-version X.Y

このフラグは、apiVersion より新しい Kotlin バージョンの API が使用されている場合に Gradle ビルドエラーをスローします。

android {
   kotlinOptions {
       apiVersion = '2.2'
   }
}

よりターゲットを絞ったアプローチ

Kotlin 互換性フラグを使用するだけでなく、Kotlin のリリースノートを確認し、アップグレード元のバージョンから保持する動作を選択することをおすすめします。Kotlin の各バージョンの互換性ガイドには、互換性を破る変更のリストと、元の動作を維持するために設定できるフラグが記載されています。

今後の Kotlin のアップグレード

Kotlin は 6 か月ごとに新しいバージョン(言語リリース)をリリースします。Google は通常、その 1 ~ 2 か月後に最新バージョンをデフォルトとしてプロダクトに組み込みます。以前の Kotlin バージョンには、互換性を破る変更が含まれていたため、Navigation SDK のお客様は新しいバージョンにアップグレードする必要がありました。そのため、最新バージョンの Navigation SDK を導入する場合は、6 か月ごとに Kotlin のアップグレードを計画することをおすすめします。