web-dev-qa-db-fra.com

Attendu @hiltandroidApp d'avoir une valeur. Avez-vous oublié d'appliquer le plugin des grades?

J'ai Google ce problème, mais les résultats ne sont pas fonctionnels pour moi.

Le détail comme suit.

    public final class App extends com.zhixin.wedeep.common.BaseApplication implements androidx.lifecycle.LifecycleOwner {
                 ^
     // Expected @HiltAndroidApp to have a value. Did you forget to apply the Gradle Plugin?

Le code de l'application.

@HiltAndroidApp
class App : BaseApplication(), LifecycleOwner {

    @Inject
    lateinit var service: EventService


    private val mLifecycleRegistry = LifecycleRegistry(this)

}


Ce fichier de gradle de module.

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"]
}

Qui a des idées? Merci!

14
Cyrus

N'oubliez pas d'ajouter Dépendance de la Hilt ClassPath au fichier de gradle de votre niveau de projet:

classpath "com.google.dagger:hilt-Android-gradle-plugin:$versions.daggerHiltCoreVersion"

Définissez le numéro de version spécifique au lieu de $ versions.daggerhiltcoreversion ci-dessus.

Et ajouter plugin à votre niveau d'application gradle:

apply plugin : 'dagger.hilt.Android.plugin'

3
Osman Yalın

Pour sauvegarder @stevec Réponse, lors de l'utilisation de Kotlin Haldle DSL est un peu différent

Nous ne pouvons pas utiliser non plus += Ou arguments = mapOf(). Comme indiqué dans la poignée officielle-poignée documentation ici & the problème github ici En ce qui concerne les docs aussi

Voir ci-dessous l'image pour explications:

arguments = mapOf()

  1. arguments = mapOf() _ Callez setArguments avec this.arguments.clear(), écrasez ainsi l'argument précédent (dans ce cas Hilt)

Approche de contournement:

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

Emballage de la fonction arguments() sous forme de fonctions au lieu d'appeler Setter, il conservera également le précédent arguments aussi.

2
mochadwi