@InstallIn,只能与@DefineComponent-注解一起使用类,但发现:[com.abc.xyz.AppClass]

@InstallIn, can only be used with @DefineComponent-annotated classes, but found: [com.abc.xyz.AppClass]

根据 Hilt 的文档,我完成了所有步骤

将Class路径添加到项目模块

classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"

添加插件

plugins {
    id "kotlin-kapt"
    id("dagger.hilt.android.plugin")
}

添加依赖项

dependencies {
    implementation("com.google.dagger:hilt-android:$hilt_version")
    kapt("com.google.dagger:hilt-android-compiler:$hilt_version")
}

带注释的应用程序 Class,在我的应用程序 Class 中,带有 @HiltAndroidApp。注释 Activity 并且关于 @AndroidEntryPoint.

的片段

创建模块为

@InstallIn(AppClass::class)
@Module
object DatabaseModule {

    @Provides
    @Singleton
    fun provideAppDB(application: Application): AppDB {
        return AppDB.getDatabase(application)
    }

    @Provides
    @Singleton
    fun provideMediaDao(appDB: AppDB): MediaDao {
        return appDB.downloadMediaDao()
    }
}

将其注入 ViewModel class as

@HiltViewModel
class DownloadViewModel @Inject constructor(
    private val mediaDao: MediaDao
): ViewModel() {
    ...
}

但在完成所有步骤后,我收到错误消息“@InstallIn,只能与@DefineComponent-annotated classes一起使用,但发现:[com.abc.xyz.AppClass]”

按照Codelab中的定义,我替换了这个

@InstallIn(AppClass::class)

有了这个

@InstallIn(SingletonComponent::class)

它正在运行。