Dagger @ContributesAndroidInjector ComponentProcessor无法处理此接口

前端之家收集整理的这篇文章主要介绍了Dagger @ContributesAndroidInjector ComponentProcessor无法处理此接口前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在测试匕首的新功能Android模块.当我使用@ContributesAndroidInjector时,我无法编译代码
我总是得到以下错误

错误:(12,8)错误:dagger.internal.codegen.ComponentProcessor无法处理此接口,因为并非所有依赖项都可以解析.使用生成代码检查编译错误或循环依赖性.

我试图像here那样实现我的组件,但我仍然遇到了错误.

这是最小的例子:

  1. @PerApplication
  2. @Component(modules = {AndroidInjectionModule.class,LoginBindingModule.class})
  3. public interface ApplicationComponent {
  4. void inject(ExampleApplication application);
  5. }
  6.  
  7. @Module
  8. public abstract class LoginBindingModule {
  9. @ContributesAndroidInjector
  10. abstract LoginActivity contributeYourActivityInjector();
  11. }
  12.  
  13. public class LoginActivity extends Activity {
  14.  
  15. @Inject
  16. LoginPresenter loginPresenter;
  17.  
  18. @Override
  19. protected void onCreate(@Nullable Bundle savedInstanceState) {
  20. AndroidInjection.inject(this);
  21. super.onCreate(savedInstanceState);
  22. }
  23. }
  24.  
  25. public class LoginPresenter {
  26.  
  27. @Inject
  28. public LoginPresenter() {
  29.  
  30. }
  31. }

如果我从ApplicationComponent中删除LoginBindingModule,那么app将被构建,但是会因运行时异常而失败:

java.lang.IllegalArgumentException:没有为Class绑定的进程工厂

项目设置:

  1. gradle 3.3
  2. buildToolsVersion "25.0.2"
  3. dagger 2.11

解决方法

将annotationProcessor“com.google.dagger:dagger-android-processor:2.11”添加到您的gradle文件解决您的问题.

猜你在找的Android相关文章