预期@AndroidEntryPoint具有值。您是否忘记了应用Gradle插件?

时间:2020-06-28 07:49:00

标签: android dagger-hilt

当我在Room的android中使用Hilt时,出现了这种错误。

完整的日志在这里:

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]

有人知道解决方案吗?

7 个答案:

答案 0 :(得分:17)

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

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

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

这解决了问题)

答案 1 :(得分:17)

我在将 Kotlin 升级到 1.5.20 后遇到了这个问题。
在 gradle.properties 中添加 kapt.use.worker.api=false 对我有用
结帐dagger issue Support for Kotlin 1.5.20

答案 2 :(得分:14)

更新

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

旧答案

如果您使用的是 kotlin 1.5.20,Mr-wil 的回答会降低构建速度,如 official doc 中所述:

<块引用>

为了提高使用 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")
    }
}

source

答案 3 :(得分:7)

在许多情况下也会出现此一般错误消息。作为更常规的检查,请确保模块的build.gradle文件,并确保您具有:

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

在顶部。

答案 4 :(得分:2)

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

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

android {
  // ...
}

查看详细信息here

答案 5 :(得分:2)

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

kapt {
    javacOptions {
        option("-Adagger.hilt.android.internal.disableAndroidSuperclassValidation=true")
    }
}

答案 6 :(得分:2)

这是由于 Kotlin 1.5.20 中的 bug。在 Kotlin 1.5.21 中是 fixed

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