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 には、互換性を破る変更のリストと、各バージョンの互換性ガイドで、元の動作を維持するために設定可能なフラグが用意されています。