通过数据绑定将Android项目从Java转换为Kotlin

通过数据绑定将Android项目从Java转换为Kotlin,java,android,kotlin,Java,Android,Kotlin,我有一个用Java编写的大型Android项目,目前正在将其转换为Kotlin。我的许多活动和片段都使用数据绑定 最初,当我使用数据绑定将我的第一个活动转换为Kotlin时,项目无法为此活动构建。错误表示缺少对数据绑定库的引用。我补充说: kapt 'com.android.databinding:compiler:2.0.0-beta6' 在app/build.gradle和 kapt { generateStubs = true } 到同一个文件 构建之后,带有数据绑定的Kotl

我有一个用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:,这是Kotlin的视图注入库,但我仍然无法相信,没有办法将您的活动从Java缓慢转换为Kotlin,即使它们确实使用数据绑定。这对我来说简直不可信


过去是否有人以这种方式改造过一个项目,并且不必做出选择就成功了?有没有一种方法可以在进行过程中转换单个活动?另一种选择是一次性将所有Java转换为Kotlin,然后在完成后进行一次构建,但是如果您投入了所有工作,然后意识到忽略了一些东西,那么这似乎有点风险。有什么想法吗?提前感谢。

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


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

从2018年7月21日起。不幸的是,这些问题并没有得到解决。我开始了一个关于Java的项目,尝试学习Kotlin并将其添加到我的项目中。不过,catch数据绑定包引用并不存在,在我的所有视图类中都不包括一个用Kotlin编写的类。我害怕为所有类应用自动转换),因此将使用您的建议