错误: 无法找到符号@匕首. hilt. InstallIn (value = { ApplicationComponent. class })

升级后的匕首柄(版本: 2.31-alpha) ApplicationComponent.class找不到。 对于像 RoomDatabase 这样的 Component,有什么替代方案吗?

@Module
@InstallIn(ApplicationComponent::class)
class RoomModule() {
private val DATABASE_NAME = "salat_time"


@Singleton
@Provides
fun provideRoomDatabase(@ApplicationContext appContext: Context) = Room.databaseBuilder(
appContext,
AppDatabase::class.java,
DATABASE_NAME
).createFromAsset("db/$DATABASE_NAME.sqlite").build()


@Singleton
@Provides
fun provideLocalSalatRepository(database: AppDatabase) = LocalSalatRepository(database)


@Singleton
@Provides
fun provideDistrictRepository(database: AppDatabase) = DistrictRepository(database)
}
19518 次浏览

在匕首版本 2.30中不推荐使用 ApplicationComponent
在匕首版本 2.31中移除了 ApplicationComponent
或者,应该使用 SingletonComponent代替 ApplicationComponent

@Module
@InstallIn(SingletonComponent::class)
class RoomModule() {
. . .
}

ApplicationComponent 被重命名为 < strong > SingletonComponent

除了接受的答案,请务必更新到 最新的刀柄版本,否则您将卡在 < strong > Kapt 执行错误

当前版本 ext.hilt_version = '2.33-beta'

只要进口:

import dagger.hilt.components.SingletonComponent

并将您的模块注释为:

@Module
@InstallIn(SingletonComponent::class)

因为 ApplicationComponent 在较新版本的 daggerHilt 中被删除了,我在应用级别的分级文件中使用了匕首柄的这些依赖项:

//Dagger - Hilt
implementation "com.google.dagger:hilt-android:2.31-alpha"
kapt "com.google.dagger:hilt-android-compiler:2.28-alpha"


implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
kapt "androidx.hilt:hilt-compiler:1.0.0"

如果不需要@InstallIn,可以显式禁用。

Alternatively, the check can be disabled at the individual module level by annotating the module with @DisableInstallInCheck.

正如 https://dagger.dev/hilt/flags.html中提到的

喜欢

@DisableInstallInCheck
@Module
class MyAwesomeModule
@Module
@InstallIn(SingletonComponent::class)
object AppModule {


@Provides
@Singleton
fun mProvidersTaskDatabase(app: Application) : TaskDataBase{
return Room.databaseBuilder(
app,
TaskDataBase::class.java,
"Task_db"
).build()
}


@Provides
@Singleton
fun mProvidersTaskRepository (dataBase: TaskDataBase) : TaskRepository{
return TaskRepositoryImpl(dataBase.mTaskDao)
}
}

不推荐使用应用程序组件。

@ Module @ InstallIn (ApplicationComponent: : class)

更新柄依赖并使用 SingletonComponent @ Module @ InstallIn (SingletonComponent: : class)

//Hilt


implementation 'com.google.dagger:hilt-android:2.43.2'
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
kapt 'com.google.dagger:hilt-android-compiler:2.43.2'
kapt 'androidx.hilt:hilt-compiler:1.0.0'