Dagger 2: @Component.Builder 缺少所需模块或组件的 setter:[appi.example.com.dagger.AppModule]'

我正在配置新的Dagger Android模块,但我得到了这个错误 这是我的组件:

@AppScope
@Component(modules = {AppModule.class, NetModule.class})
public interface AppComponent {

  @Component.Builder
  interface Builder {
    @BindsInstance
    Builder application(ExampleApplication application);

    @BindsInstance
    Builder appModule(AppModule appModule);

    @BindsInstance
    Builder netModule(NetModule netModule);

    AppComponent build();
  }

  void inject(ExampleApplication __); 
...

我在我的应用程序中像这样构建

appComponent = DaggerAppComponent
      .builder()
      .application(this)
      .appModule(new AppModule(this))
      .netModule(new NetModule())
      .build()
      .inject(this);

但我仍然收到错误

错误:(20, 3) 错误: @Component.Builder 缺少所需模块或组件的 setter: [app.example.com.dagger.AppModule]

根据应该正确的文档,我错过了什么?

例如,这可能是具有生成器的有效组件:

@Component(modules = {BackendModule.class, FrontendModule.class})
interface MyComponent {
  MyWidget myWidget();

  @Component.Builder
  interface Builder {
    MyComponent build();
    Builder backendModule(BackendModule bm);
    Builder frontendModule(FrontendModule fm);
  }
}

答案 1

从 AppModule 中删除以下代码.class并重新生成项目

    @Provides
    @Singleton
    Application provideContext(SomeApplication application) {
        return application;
    }

答案 2

我认为这为使用和删除匕首2组件生成器提供了更清晰的解释:@BindsInstance@Provides Application

@BindsInstance什么?

定义如下:

标记组件生成器或子组件生成器上的方法,该方法允许将实例绑定到组件中的某个类型。— 来源

哇?我也不明白


推荐