@Component.Builder 缺少所需模块或组件的设置器:[com.sample.TestComponent]
@Component.Builder is missing setters for required modules or components: [com.sample.TestComponent]
关于上述问题,SO 中有很多答案,但是我的情况不同,对我来说组件的设置器丢失了。
我有 ApplicationComponent,它依赖于来自库的一些其他组件 [TestComponent]。
@AppScope
@Component(
dependencies = [TestComponent::class],
modules = [
AppModule::class,
AndroidInjectionModule::class
]
)
interface AppComponent : AndroidInjector<MyApplication> {
override fun inject(application: MyApplication)
@ContextIO
fun getIOCoroutineContext(): CoroutineContext
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
@BindsInstance
fun testComponent(testComponent: TestComponent): Builder
fun build(): AppComponent
}
}
以及申请class
class MyApplication : DaggerApplication() {
val appComponent by lazy {
DaggerAppComponent.builder()
.application(this)
.testComponent(SdkInjectors.testComponent())
.build()
}
}
@Singleton
@Component(
modules = {VideoModule.class, AnalyticsModule.class}
)
public interface TestComponent {
// ...
}
偶然发现了一些开源项目并发现了这个,我不应该在创建依赖组件时使用@BindsInstance。
@AppScope
@Component(
dependencies = [TestComponent::class],
modules = [
AppModule::class,
AndroidInjectionModule::class
]
)
interface AppComponent : AndroidInjector<MyApplication> {
override fun inject(application: MyApplication)
@ContextIO
fun getIOCoroutineContext(): CoroutineContext
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun testComponent(testComponent: TestComponent): Builder
fun build(): AppComponent
}
}
删除@BindsInstance 有效,但我仍然不知道原因,如果我知道会更新。
关于上述问题,SO 中有很多答案,但是我的情况不同,对我来说组件的设置器丢失了。
我有 ApplicationComponent,它依赖于来自库的一些其他组件 [TestComponent]。
@AppScope
@Component(
dependencies = [TestComponent::class],
modules = [
AppModule::class,
AndroidInjectionModule::class
]
)
interface AppComponent : AndroidInjector<MyApplication> {
override fun inject(application: MyApplication)
@ContextIO
fun getIOCoroutineContext(): CoroutineContext
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
@BindsInstance
fun testComponent(testComponent: TestComponent): Builder
fun build(): AppComponent
}
}
以及申请class
class MyApplication : DaggerApplication() {
val appComponent by lazy {
DaggerAppComponent.builder()
.application(this)
.testComponent(SdkInjectors.testComponent())
.build()
}
}
@Singleton
@Component(
modules = {VideoModule.class, AnalyticsModule.class}
)
public interface TestComponent {
// ...
}
偶然发现了一些开源项目并发现了这个,我不应该在创建依赖组件时使用@BindsInstance。
@AppScope
@Component(
dependencies = [TestComponent::class],
modules = [
AppModule::class,
AndroidInjectionModule::class
]
)
interface AppComponent : AndroidInjector<MyApplication> {
override fun inject(application: MyApplication)
@ContextIO
fun getIOCoroutineContext(): CoroutineContext
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun testComponent(testComponent: TestComponent): Builder
fun build(): AppComponent
}
}
删除@BindsInstance 有效,但我仍然不知道原因,如果我知道会更新。