@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)
它正在运行。
根据 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)
它正在运行。