Kotlin 版本兼容性和迁移

本页面提供了有关 Navigation SDK 的 Kotlin 版本兼容性的信息,以及迁移到较新版本的指南。

下表列出了 Navigation SDK 近期版本的 Kotlin 版本要求以及推荐的 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 我们建议使用 AGP 7.3+,其中包含针对 JDK-8272564 的解决方法。

Kotlin 版本兼容性

Kotlin 2.3 支持与 Kotlin 2.2 的向后兼容性。这意味着,如果您已将 Kotlin 2.2 与 Navigation SDK 搭配使用,则应该能够升级到 Kotlin 2.3,而无需解决所有破坏性更改。不过,这仅适用于稳定的语言功能。如果您使用的是 Kotlin 语言的 Alpha 版、Beta 版或实验性功能,则在升级时可能需要进行额外的更改。

简化过渡:Kotlin 兼容性标志

Kotlin 提供了两个标志来帮助限制破坏性更改: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

如果使用了 Kotlin 版本高于 apiVersion 的 API,此标志会抛出 Gradle 构建错误。

android {
   kotlinOptions {
       apiVersion = '2.2'
   }
}

更具针对性的方法

除了使用 Kotlin 兼容性标志之外,我们还建议您查看 Kotlin 版本说明,并选择要从升级前的版本中保留的行为。Kotlin 在每个版本的兼容性指南中提供了破坏性更改列表以及可设置以保留原始行为的标志:

未来的 Kotlin 升级

Kotlin 每 6 个月发布一个新版本(即语言版本),Google 通常会在 1-2 个月后将最新版本作为默认版本纳入我们的产品中。先前的 Kotlin 版本包含破坏性更改,这些更改要求 Navigation SDK 客户升级到较新版本。因此,我们建议您在采用最新 Navigation SDK 版本时,计划每 6 个月升级一次 Kotlin。