【发布时间】:2022-01-10 15:27:07
【问题描述】:
我们是一家拥有 10 多个应用程序的公司,所有应用程序都使用 10 多个内部 SDK,所有这些都在 kotlin-android-extensions gradle 插件的辉煌时期进行了编码。我们严重依赖@Parcelize 和合成绑定(我们所有的视图都是用它编码的)。在较新版本的 Kotlin 中,此插件现已弃用,取而代之的是 kotlin-parcelize for @Parcelize 和 View Binding 作为合成绑定的替代品。
我们尝试将 Kotlin 版本从 1.4.10 升级到 1.6.0,同时仍然使用 kotlin-android-extensions 插件。我们突然报告了一个@Parcelize 错误here,在Kotlin 中修复1.5.0。除了修复不在 Kotlin 本身之外,它在 kotlin-parcelize 插件中。当然,当他们弃用 kotlin-android-extensions 时,后者不包含修复程序。所以简而言之,为了解决这个问题,我们必须使用kotlin-parcelize。
知道kotlin-parcelize 不能与kotlin-android-extensions 一起使用(构建错误),并且将我们所有的视图从合成视图切换到视图绑定将是一项需要大量时间的工作,什么可以在这里做吗?我们真的希望继续使用合成绑定,同时能够将 Kotlin 升级到最新版本。
【问题讨论】:
-
有多少类受到影响?正如this comment 所指出的那样,如果没有太多,您可能只是手动实现
Parcelable。 -
我想说我们目前有大约 50-60 个类用
@Parcelize注释,所以无论我们选择不使用@Parcelize还是合成绑定,都会有一些工作......而且我真的很喜欢@Parcelize的简单,老实说我不想不用它。 -
“我会说我们目前有大约 50-60 个用
@Parcelize注释的类”——但是,有多少给你错误?我对该错误报告的解释是它与泛型相关。 -
抱歉,我一开始没听懂。我记得有 7-8 个带有泛型的类给出了错误。我们没有尝试编译我们所有的 SDK,但我认为这个数字应该在 10 左右。所以是的,它确实是一个很好的解决方案,不会花费太多时间。也许我会试一试,没有人有更好的答案。您知道任何用于生成
Parcelable实现的好网站或插件吗?我看到有一个看起来不错的Android Studio插件。 -
我认为 parcelable.com 上曾经有一个,但它似乎已经消失了。如果你想要一个独立的库,有parceler.org,虽然它似乎会生成Java。
标签: android kotlin android-gradle-plugin kotlin-android-extensions android-viewbinding