Kotlin 2.0 に移行する

Android 6.0 以降向けの Navigation SDK を使用している場合は、Kotlin 2.0 にアップグレードする必要があります。このページでは、新しい Kotlin バージョンへの移行を容易にするガイダンスについて説明します。

Gradle と AGP の互換性

Kotlin 2.0 には、Gradle と Android Gradle プラグイン(AGP)のバージョンに関する最小バージョンと最大バージョンの要件があります。プロジェクトが Kotlin 2.0 の要件を満たしていることを確認します。

Navigation SDK 6.0 以降の AGP の最小バージョン

Navigation SDK 6.0 では AGP 7.3 以降を使用することをおすすめします。AGP 8.3 と Gradle 8.4 で SDK を検証しました。この SDK は R8 のフルモードと互換性があります。

Kotlin バージョンの互換性

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

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

前のセクションで説明したように、Kotlin はアップグレード時に、最大 3 つの旧バージョンの言語をサポートします。Kotlin には、破壊的変更を制限するために役立つ 2 つのフラグが用意されています。

language-version X.Y

このフラグは、破壊的変更を以前の Kotlin バージョンの動作に戻します。たとえば、Kotlin 1.7 を使用している場合、[ - language-version 1.7] を指定すると、新しい互換性を破る変更が適用されなくなります。

android {
   kotlinOptions {
       languageVersion = '1.7'
   }
}

api-version X.Y

このフラグを使用すると、依存するダウンストリーム コードが Kotlin 2.0 を組み込む準備ができる前に、新しい API が使用されなくなります。

android {
   kotlinOptions {
       apiVersion = '1.7'
   }
}

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

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