Я тестировал новую функцию кинжала: модуль Android. И я не могу скомпилировать код, когда я использую @ContributesAndroidInjector
я всегда получаю следующую ошибку:
Ошибка: (12, 8) ошибка: dagger.internal.codegen.ComponentProcessor не удалось обработать этот интерфейс, поскольку не все его зависимости могут быть разрешены. Проверьте на ошибки компиляции или циклическую зависимость с сгенерированным кодом.
Я пытался реализовать свои компоненты, как здесь, но все же я получил ошибку.
Вот самый маленький пример:
@PerApplication
@Component(modules = {AndroidInjectionModule.class, LoginBindingModule.class})
public interface ApplicationComponent {
void inject(ExampleApplication application);
}
@Module
public abstract class LoginBindingModule {
@ContributesAndroidInjector
abstract LoginActivity contributeYourActivityInjector();
}
public class LoginActivity extends Activity {
@Inject
LoginPresenter loginPresenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
AndroidInjection.inject(this);
super.onCreate(savedInstanceState);
}
}
public class LoginPresenter {
@Inject
public LoginPresenter() {
}
}
Если я удалю LoginBindingModule из ApplicationComponent, приложение будет построено, но произойдет сбой с исключением времени выполнения:
java.lang.IllegalArgumentException: фабрика инжекторов не привязана к классу
настройка проекта:
gradle 3.3
buildToolsVersion "25.0.2"
dagger 2.11