作者 / 产品经理 David Winer
Android Kotlin Extensions Gradle 插件 (请勿与 Android KTX 混淆) 发布于 2017 年,为使用 Kotlin 进行 Android 开发带来了两项新的便利功能:
- Synthetic 视图 : 您可以将调用
findViewById
替换为使用kotlinx.android.synthetic
进行 UI 交互。 - @Parcelize 注解: 帮助您移除样板代码并通过
@Parcelize
注解轻松创建 Parcelable。
我们随后发布了 适用于 Android 的视图绑定 组件,它是一个与 Android 构建工具链深度集成并提供与 Kotlin synthetic 类似功能的官方支持库。我们虽然仍推荐使用 Parcelize,但 Kotlin synthetic 却存在一些弊端:
- 污染全局命名空间
- 不能暴露可空性信息
- 仅支持 Kotlin 代码
Android Kotlin Extensions 插件最初由 JetBrains 开发,我们也共同讨论了继续保留 synthetic 的利弊: 我们尽力确保在可行范围内对 API 的长期支持,但我们也希望为开发者提供指导,帮助开发者维护健康的代码库并最终赢得用户的满意。
在接下来的一年里,我们的团队将共同弃用 synthetics,并继续支持我们建议的选项——"视图绑定 (View Binding)"。这意味着:
- 如果您正在使用 Parcelize,则可以继续使用相同的注解和 API。但是,注解包将更改为
kotlinx.parcelize
,并且在模块级 Gradle 文件中,您需要开始使用独立的kotlin-parcelize
插件而非android-kotlin-extensions
。您可以在 Android 开发者官方网站 上找到有关 Parcelize 的文档。 - 如果您使用 Android Kotlin synthetics,建议尽快迁移到 "视图绑定 (View Binding)"。请参阅我们的 迁移指南 以了解更多详细信息。
弃用期随着 Kotlin 1.4.20 的发布正式开始。android-kotlin-extensions
将继续保留至少一年时间,但在 2021 年 9 月或之后的 Kotlin 版本中将被移除。长期来看,我们将继续保留 kotlin-parcelize
插件,您也可以继续在 Android Studio 问题追踪器 中提交有关 Parcelize 的问题。