web-dev-qa-db-ja.com

@hiltandroidappが値を持つ予定です。卒業プラグインを適用するのを忘れましたか?

私はこの問題をグーグルしていますが、結果は私のためには機能しません。

以下のような詳細。

    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?

 _

アプリコード.

@HiltAndroidApp
class App : BaseApplication(), LifecycleOwner {

    @Inject
    lateinit var service: EventService


    private val mLifecycleRegistry = LifecycleRegistry(this)

}


 _

このモジュール卒業ファイル。

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

アイデアがいますか?ありがとう!

14
Cyrus

追加するのを忘れないでくださいhilt classpath依存性プロジェクトレベルgradleファイルに:

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

上記の$ Versions.DaggerHiltCoreVersionの代わりに、特定のバージョン番号を定義します。

そしてあなたのアプリレベルグラグルにプラグインを追加します。

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

3
Osman Yalın

Kotlin Gradle DSLを使用する場合は、@Stevecの回答をバックアップするには少し異なります。

+=またはarguments = mapOf()のいずれかを使用することはできません。公式の短剣の丘に述べられているように ここでのドキュメンテーションGitHubの問題 ドキュメントについても

説明については、以下の画像を参照してください。

arguments = mapOf()

  1. arguments = mapOf()this.arguments.clear()を使用してsetArgumentsを呼び出します。これにより、前の引数を上書きします(この場合はHilt)。

回避策アプローチ:

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

arguments()を呼び出す代わりに関数としてラッピングされているため、前のargumentsも保持します。

2
mochadwi