ene*_*eci 3 android kotlin dagger dagger-hilt
我是 Android 依赖注入的新手。我正在使用 Dagger-Hilt,并且在我为 DB 提供程序生成的 AppModule 类中出现错误并且项目无法编译。
错误是@InstallIn can only be used on @Module or @EntryPoint classes
这是我的 AppModule 对象。我哪里出错了?
@Module
@InstallIn(ApplicationComponent::class)
object AppModule {
@Singleton
@Provides
fun provideAppDatabase(
@ApplicationContext app: Context
) = Room.databaseBuilder(
app,
AppDatabase::class.java,
"gelirkenal"
).build()
@Singleton
@Provides
fun provideItemDao(db: AppDatabase) = db.itemDao()
}
Run Code Online (Sandbox Code Playgroud)
小智 8
更改以下导入:
import com.google.android.datatransport.runtime.dagger.Module
import com.google.android.datatransport.runtime.dagger.Binds
Run Code Online (Sandbox Code Playgroud)
至 =>
import dagger.Module
import dagger.Binds
Run Code Online (Sandbox Code Playgroud)
我将模块的导入设置如下:
import com.google.android.datatransport.runtime.dagger.Module
但以下是正确的:
import dagger.Module
小智 5
更改ApplicationComponent::class为SingletonComponent::class,您还可以通过参考此Hilt 生成的组件找到更多 hilt 生成的组件
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Singleton
@Provides
fun provideAppDatabase(
@ApplicationContext app: Context
) = Room.databaseBuilder(
app,
AppDatabase::class.java,
"gelirkenal"
).build()
@Singleton
@Provides
fun provideItemDao(db: AppDatabase) = db.itemDao()
}
Run Code Online (Sandbox Code Playgroud)
看起来您@InstallIn向项目中不相关的类添加了注释。
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |