期望@AndroidEntryPoint 有一个值。您是否忘记应用 Gradle 插件?
Expected @AndroidEntryPoint to have a value. Did you forget to apply the Gradle Plugin?
当我在 android 和 Room
中使用 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]
有人知道这个的解决方案吗?
幸运的是,有一个简单的解决方案。
在build.gradle
数据库方案中,我们应该使用arguments +=
而不是arguments =
。
defaultConfig{
javaCompileOptions {
annotationProcessorOptions {
arguments += ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
Or/And 在 buld.gradle
您应该像这样应用插件:
apply plugin 'dagger.hilt.android.plugin'
这解决了问题)
这种一般性错误消息也可能在许多情况下出现。作为更通用的检查,请确保您的模块的 build.gradle
文件,确保您拥有:
apply plugin: 'dagger.hilt.android.plugin'
在顶部。
在您的 Android Gradle 模块的 build.gradle 中应用插件:
apply plugin: 'com.android.application'
apply plugin: 'dagger.hilt.android.plugin'
android {
// ...
}
查看详情here
我在将 Kotlin 升级到 1.5.20 后遇到了这个问题。
在 gradle.properties 中添加 kapt.use.worker.api=false
解决了我的问题
结帐 dagger issue Support for Kotlin 1.5.20
我遇到了同样的问题,好像是 kotlin-kapt 插件有问题。如果你们已经尝试了上述所有答案但没有得到解决,请在 dependencies{} 块 之外的 build.gradle(模块级)中尝试以下代码
kapt {
javacOptions {
option("-Adagger.hilt.android.internal.disableAndroidSuperclassValidation=true")
}
}
更新
将 Hilt 升级到 v28.1.0 并将 Kotlin 升级到 v1.5.21 应该可以解决这个问题
旧答案
如果您使用的是 kotlin 1.5.20,Mr-wil
的答案将降低构建速度,如 official doc 中所述:
To improve the speed of builds that use kapt, you can enable the
Gradle worker API for kapt tasks. Using the worker API lets Gradle run
independent annotation processing tasks from a single project in
parallel, which in some cases significantly decreases the execution
time.
相反,设置:
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")
}
}
这是由于 Kotlin 1.5.21 中的 bug in Kotlin 1.5.20. It is fixed。
所以你需要做的就是升级到最新版本的 Kotlin。
2022 年我仍然面临同样的问题
我添加
解决了问题
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.38.1'
到build.gradle
项目并添加
id 'dagger.hilt.android.plugin'
到 build.gradle
应用中的插件
在我的例子中,它通过声明插件解决了:
plugins {
id("dagger.hilt.android.plugin")
}
当我在 android 和 Room
中使用 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]
有人知道这个的解决方案吗?
幸运的是,有一个简单的解决方案。
在build.gradle
数据库方案中,我们应该使用arguments +=
而不是arguments =
。
defaultConfig{
javaCompileOptions {
annotationProcessorOptions {
arguments += ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
Or/And 在 buld.gradle
您应该像这样应用插件:
apply plugin 'dagger.hilt.android.plugin'
这解决了问题)
这种一般性错误消息也可能在许多情况下出现。作为更通用的检查,请确保您的模块的 build.gradle
文件,确保您拥有:
apply plugin: 'dagger.hilt.android.plugin'
在顶部。
在您的 Android Gradle 模块的 build.gradle 中应用插件:
apply plugin: 'com.android.application'
apply plugin: 'dagger.hilt.android.plugin'
android {
// ...
}
查看详情here
我在将 Kotlin 升级到 1.5.20 后遇到了这个问题。
在 gradle.properties 中添加 kapt.use.worker.api=false
解决了我的问题
结帐 dagger issue Support for Kotlin 1.5.20
我遇到了同样的问题,好像是 kotlin-kapt 插件有问题。如果你们已经尝试了上述所有答案但没有得到解决,请在 dependencies{} 块 之外的 build.gradle(模块级)中尝试以下代码
kapt {
javacOptions {
option("-Adagger.hilt.android.internal.disableAndroidSuperclassValidation=true")
}
}
更新
将 Hilt 升级到 v28.1.0 并将 Kotlin 升级到 v1.5.21 应该可以解决这个问题
旧答案
如果您使用的是 kotlin 1.5.20,Mr-wil
的答案将降低构建速度,如 official doc 中所述:
To improve the speed of builds that use kapt, you can enable the Gradle worker API for kapt tasks. Using the worker API lets Gradle run independent annotation processing tasks from a single project in parallel, which in some cases significantly decreases the execution time.
相反,设置:
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")
}
}
这是由于 Kotlin 1.5.21 中的 bug in Kotlin 1.5.20. It is fixed。
所以你需要做的就是升级到最新版本的 Kotlin。
2022 年我仍然面临同样的问题
我添加
解决了问题classpath 'com.google.dagger:hilt-android-gradle-plugin:2.38.1'
到build.gradle
项目并添加
id 'dagger.hilt.android.plugin'
到 build.gradle
应用中的插件
在我的例子中,它通过声明插件解决了:
plugins {
id("dagger.hilt.android.plugin")
}