【问题标题】:Converting Android project with databinding from Java to Kotlin将带有数据绑定的 Android 项目从 Java 转换为 Kotlin
【发布时间】:2017-01-04 08:38:14
【问题描述】:

我有一个用 Java 编写的大型 Android 项目,目前正在将其转换为 Kotlin。我的许多活动和片段都使用数据绑定。

最初,当我使用数据绑定将我的第一个活动转换为 Kotlin 时,无法为该活动构建项目。该错误表示缺少对数据绑定库的引用。我补充说:

kapt 'com.android.databinding:compiler:2.0.0-beta6'

app/build.gradle 中的依赖项以及

kapt {
    generateStubs = true
}

到同一个文件。

构建后,带有数据绑定的 Kotlin 活动正常工作,而所有剩余的 Java 数据绑定活动现在报告数据绑定包引用不存在。

这让我陷入了困境。我计划将活动和片段一个一个地转换为 Kotlin 并在我进行的过程中构建它们,但目前这似乎不可行,因为我必须在每次构建时都在 Java 或 Kotlin 之间做出选择。

我找到了 Kotterknife:https://github.com/JakeWharton/kotterknife,这是 Kotlin 的视图注入库,但我仍然无法相信没有办法将您的活动从 Java 缓慢转换为 Kotlin,即使它们确实使用数据绑定。这对我来说似乎并不可信。

过去有没有人以这种方式完成了项目的转换并成功而无需做出选择?有没有办法在你进行时转换单个活动?另一种选择是一次性将所有 Java 转换为 Kotlin,然后在全部完成后进行一次构建,但如果你投入所有工作然后意识到你忽略了一些东西,这似乎有点冒险。有任何想法吗?提前致谢。

【问题讨论】:

    标签: java android kotlin


    【解决方案1】:

    当心数据绑定 + Kotlin 的组合! Data Binding 库在内部使用 Kotlin,因此会产生一些冲突。我建议您暂时保留在 Java 中使用数据绑定的活动/片段类,并将业务逻辑转换为 Kotlin。我在一个相当大的项目中遇到了很多问题。项目的依赖项越多,风险就越大。逐步转换课程,不要一次全部转换!如果您一次转换多个文件,请确保您的本地或远程历史记录完好无损,以便在需要时进行恢复。几周前,我遇到了非常严重的错误,导致项目无法构建。可以预料到一些非常奇怪的事情。还要注意 alpha 和 beta 库,并始终一一更新库依赖项,以尽早发现任何不兼容性。我希望这会有所帮助。

    编辑:截至 2017 年 5 月 20 日,我相信上述大部分问题已经得到解决。此外,Kotlin 现在是一种官方语言,因此应保证完全兼容并由 Google 持续测试。

    【讨论】:

    • 截至 2018 年 7 月 21 日。很遗憾,这些问题并未得到解决。我开始了一个关于 Java 的项目并尝试学习 Kotlin 并将其添加到我的项目中。尽管如此,仍然不存在数据绑定包引用,在我的所有观点中,类都排除了用 Kotlin 编写的类。我害怕为所有课程应用自动转换)所以会使用你的建议
    猜你喜欢
    • 1970-01-01
    • 2021-11-06
    • 2021-11-26
    • 2020-02-23
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    相关资源
    最近更新 更多