未解决的参考:KOTLIN需要2个版本清理后,拿起代码时使用kapt

在我们的Android应用程序中,我们使用DBFlow访问SQLite数据库。 我们通过Kotlin引用由DBFlow生成的类。 我们已经意识到这样一个事实,即我们拥有Java中的模型类和数据库类,因为在Kotlin中编写这些类时代码生成将不起作用 。

不过,在每个项目清理完毕后,我们仍然需要两次构建代码。 在设备上执行第一个构建会导致看似随机的Kotlin类的ClassNotFoundExceptions (即使它们不访问由DBFlow或由我们定义的任何模型类生成的代码)。 编译时已经报告过,当启用Proguard时,这当然不能构建。 第二个构建总是成功的。

有趣的是,代码生成已经在第一次运行 – 类在那里,也被IDE拿起。 但编译器以某种方式无法找到它们,使我认为代码生成在构建过程中发生得太迟。 另一方面,如上所述,还有一些没有发现的代码生成和/或注释处理不需要做任何事情的类。

那么是否有比第二个版本更好的解决方案?

作为参考,我们的应用程序的build.gradle的相关部分看起来像这样 – 就像DBFlow文档建议:

 def dbflow_version = "3.0.0-beta4" dependencies { kapt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}" } kapt { generateStubs = true } 

编辑:我发现,我也必须重建两次,我对代码的每一个变化。 它在第一个版本中编译正确,如果我以前没有清除,但是这些更改根本没有被拾取。

如果你使用kotlin和retrolambda这可能会解决它:

 me.tatarka:gradle-retrolambda:3.4.0 

github的要点