gpt4 book ai didi

android - Unresolved reference : Kotlin needs 2 builds after clean to pick up code when using kapt

转载 作者:IT老高 更新时间:2023-10-28 13:31:20 29 4
gpt4 key购买 nike

在我们的 Android 应用中,我们使用 DBFlow访问 SQLite 数据库。我们通过 Kotlin 引用 DBFlow 生成的类。我们已经意识到我们有模型类以及 Java 中的数据库类作为代码生成 won't work在 Kotlin 中编写这些类时。

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

有趣的是,代码生成在第一次运行时就已经工作了 - 类就在那里并且也被 IDE 拾取。但是编译器不知何故找不到它们,这让我认为代码生成在构建过程中发生得太晚了。另一方面,如上所述,还有一些类未找到,它们不必对代码生成和/或注释处理做任何事情。

那么有没有比第二次构建更好的解决方案呢?

作为引用,我们应用的 build.gradle 的相关部分如下所示 - 就像 DBFlow documentation建议:

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 gist

关于android - Unresolved reference : Kotlin needs 2 builds after clean to pick up code when using kapt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35798993/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com