转换Android项目与数据绑定从Java到Kotlin

我有一个用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,然后在完成所有工作后进行一次单独构建,但是如果将所有工作放在一起,然后意识到自己忽略了某些东西,看起来有点冒险。 有任何想法吗? 提前致谢。

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

编辑 :截至2017年5月20日,我相信大部分上述问题已经确定。 此外,Kotlin现在是一种官方语言,所以完全兼容性应该得到保证,并不断由Google进行测试。