【发布时间】:2019-07-09 18:43:23
【问题描述】:
由于以下错误,我无法构建我的应用程序。
@Component.Builder 缺少所需模块或组件的设置器
我正在使用
implementation "androidx.room:room-runtime:2.1.0"
kapt "androidx.room:room-compiler:2.1.0"
我的应用 RoomModul 如下所示:
@Module
class RoomModule(application: Application) {
@Singleton
private var logDatabase : LogDatabase =
Room.databaseBuilder(application, LogDatabase::class.java, "log-db").build()
@Singleton
@Provides
fun providesLogDatabase() : LogDatabase {
return logDatabase
}
@Singleton
@Provides
fun providesLogDao() : LogDao {
return logDatabase.getLogDao()
}
@Singleton
@Provides
fun providesLogRepository(logDao: LogDao) : LogRepository {
return LogDataSource(logDao)
}
}
我的 AppComponent 看起来像这样:
@Singleton
@Component(
modules = [
AndroidInjectionModule::class,
AppModule::class,
MainActivityModule::class,
RoomModule::class
])
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AppComponent
}
fun inject(logApplication: LogApplication)
}
所以我的 RoomModule 需要应用程序来提供房间数据库。但我不断收到错误消息。
我认为@BindsInstance 应该为我的模块提供应用程序实例。我还尝试从我的 RoomModule 中删除构造函数,但没有成功。如果我能提供更多信息,请告诉我。
【问题讨论】:
标签: android dependency-injection android-room dagger