Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要@HiltAndroidApp有一个值。你忘记应用Gradle插件了吗?_Android_Dagger 2_Dagger Hilt - Fatal编程技术网

需要@HiltAndroidApp有一个值。你忘记应用Gradle插件了吗?

需要@HiltAndroidApp有一个值。你忘记应用Gradle插件了吗?,android,dagger-2,dagger-hilt,Android,Dagger 2,Dagger Hilt,我有谷歌这个问题,但结果是不适合我 详情如下 public final class应用程序扩展com.zhixin.wedeep.common.BaseApplication实现androidx.lifecycle.LifecycleOwner{ ^ //需要@HiltAndroidApp有一个值。你忘记应用Gradle插件了吗? 应用程序代码 @HiltAndroidApp 类App:BaseApplication(),LifecycleOwner{ @注入 lateinit变量服务:Eve

我有谷歌这个问题,但结果是不适合我

详情如下

public final class应用程序扩展com.zhixin.wedeep.common.BaseApplication实现androidx.lifecycle.LifecycleOwner{
^
//需要@HiltAndroidApp有一个值。你忘记应用Gradle插件了吗?
应用程序代码

@HiltAndroidApp
类App:BaseApplication(),LifecycleOwner{
@注入
lateinit变量服务:EventService
private val mLifecycleRegistry=LifecycleRegistry(此)
}
此模块包含一个gradle文件

apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-allopen'
apply plugin: 'androidx.navigation.safeargs.kotlin'
apply plugin: 'dagger.hilt.android.plugin'

dependencies {
    implementation rootProject.ext.dependencies["hilt-android"]
    implementation rootProject.ext.dependencies["hilt-lifecycle-viewmodel"]
    kapt rootProject.ext.kapt["hilt-compiler"]
    kapt rootProject.ext.kapt["hilt-android-compiler"]
}

谁有主意?谢谢!

我今天早上刚碰到这个问题。您的build.gradle中是否有向annotationProcessOptions添加参数的内容?例如:

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

如果是这样,请尝试从“arguments=”更改为“arguments+=”,因为仅使用equals会覆盖以前设置的任何内容。

使用Kotlin Gradle DSL时备份@SteveC answer有点不同

我们不能使用
+=
arguments=mapOf()
。正如官方的匕首刀柄中所述,关于文档也是如此

有关说明,请参见下图:

  • arguments=mapOf()
    将使用
    this.arguments.clear()
    调用
    setArguments
    ,因此将覆盖上一个参数(在本例中为
    Hilt
  • 解决方法:

            javaCompileOptions {
                annotationProcessorOptions {
                    arguments(
                        mapOf(
                            "dagger.gradle.incremental" to "true",
                            "room.incremental" to "true"
                        )
                    )
                }
            }
    

    参数()

    classpath "com.google.dagger:hilt-android-gradle-plugin:$versions.daggerHiltCoreVersion"
    
    定义特定的版本号,而不是上面的$versions.daggerHiltCoreVersion

    并将插件添加到您的应用程序级别渐变:

    应用插件:“dagger.hilt.android.plugin”

    对于更高版本的Gradle,添加插件如下

    plugins {
        id 'dagger.hilt.android.plugin'
    }
    

    这对我来说很有用,因为我不添加```annotationProcessorOptions{arguments+=[“room.schemaLocation”:“$projectDir/schemas.toString()]”```如果使用
    Room
    ,文档不会提示应将上述代码添加到build.gradle。对于Kotlin DLS,它可以是:
    arguments=arguments+mapOf(“Room.incremental”到“true”)
    也可以使用以下语法
    arguments[“Room.schemaLocation”]=…arguments[“Room.incremental”]=true
    添加任意数量的参数,但根据上面的答案,这对我来说根本不需要