41

当我在 android 中使用 Hilt 时,Room我遇到了这种错误。

完整的日志在这里:

home/someone/Desktop/Calculator/app/build/tmp/kapt3/stubs/debug/com/hamidjonhamidov/calculator/MyApplication.java:7: error: [Hilt]
public class MyApplication extends android.app.Application {
       ^
  Expected @HiltAndroidApp to have a value. Did you forget to apply the Gradle Plugin?
  [Hilt] Processing did not complete. See error above for details./home/someone/Desktop/Calculator/app/build/tmp/kapt3/stubs/debug/com/hamidjonhamidov/calculator/ui/main/MainActivity.java:7: error: [Hilt]

有人知道解决方案吗?

4

8 回答 8

70

将 Kotlin 升级到 1.5.20 后,我遇到了这个问题。
添加kapt.use.worker.api=falsegradle.properties 为我解决了
Checkout dagger 问题Support for Kotlin 1.5.20

于 2021-06-26T09:44:26.913 回答
41

幸运的是,有一个简单的解决方案。在build.gradle数据库方案中,我们应该使用arguments +=代替arguments =.

defaultConfig{
     javaCompileOptions {
            annotationProcessorOptions {
                arguments += ["room.schemaLocation": "$projectDir/schemas".toString()]
            }
        }
}

或者/并且在buld.gradle 您应该应用插件,例如: apply plugin 'dagger.hilt.android.plugin'

这解决了问题)

于 2020-06-28T07:51:22.467 回答
29

更新

升级 Hilt 到 v28.1.0 和 Kotlin 到 v1.5.21 应该可以解决这个问题

旧答案

如果您使用的是 kotlin 1.5.20,则答案Mr-wil将降低构建速度,如官方文档中所述:

要提高使用 kapt 的构建速度,您可以为 kapt 任务启用 Gradle worker API。使用 worker API 可以让 Gradle 从单个项目并行运行独立的注释处理任务,这在某些情况下会显着减少执行时间。

相反,设置:

kapt {
    javacOptions {
        // These options are normally set automatically via the Hilt Gradle plugin, but we
        // set them manually to workaround a bug in the Kotlin 1.5.20
        option("-Adagger.fastInit=ENABLED")
        option("-Adagger.hilt.android.internal.disableAndroidSuperclassValidation=true")
    }
}

资源

于 2021-07-03T06:47:16.330 回答
15

此一般错误消息也可能出现在许多情况下。作为更通用的检查,确保你的模块build.gradle文件,确保你有:

apply plugin: 'dagger.hilt.android.plugin'

在顶部。

于 2020-06-28T20:51:09.840 回答
15

这是由于Kotlin 1.5.20中的一个错误造成的。它已在 Kotlin 1.5.21 中修复

所以你需要做的就是升级到最新版本的 Kotlin。

于 2021-07-26T11:47:29.590 回答
12

我有同样的问题,似乎 kotlin-kapt 插件有问题。如果你们已经尝试了上述所有答案并且没有得到解决,请在依赖项{}块之外的 build.gradle(module-level)中尝试以下代码

kapt {
    javacOptions {
        option("-Adagger.hilt.android.internal.disableAndroidSuperclassValidation=true")
    }
}
于 2021-06-28T18:47:36.683 回答
7

在您的 Android Gradle 模块的 build.gradle 中应用插件:

apply plugin: 'com.android.application'
apply plugin: 'dagger.hilt.android.plugin'

android {
  // ...
}

在此处查看详细信息

于 2020-08-23T10:54:58.623 回答
0

我在 2022 年仍然面临同样的问题

我已经通过添加解决了这个问题

classpath 'com.google.dagger:hilt-android-gradle-plugin:2.38.1'

build.gradle投影和添加

id 'dagger.hilt.android.plugin'

build.gradle应用程序中的插件

于 2022-02-05T18:12:23.073 回答