Je testais une nouvelle fonctionnalité de poignard: le module Android. Et je ne suis pas capable de compiler le code quand j'utilise @ContributesAndroidInjector
Je reçois toujours l'erreur suivante:
Erreur: (12, 8) erreur: dagger.internal.codegen.ComponentProcessor n'a pas pu traiter cette interface car toutes ses dépendances n'ont pas pu être résolues. Recherchez des erreurs de compilation ou une dépendance circulaire avec le code généré.
J'ai essayé d'implémenter mes composants comme ici , mais j'ai quand même l'erreur.
Voici le plus petit exemple:
@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() {
}
}
Si je supprime LoginBindingModule de ApplicationComponent, l'application sera générée, mais échouera avec une exception d'exécution:
Java.lang.IllegalArgumentException: aucune fabrique d'injecteur liée à la classe
configuration du projet:
gradle 3.3
buildToolsVersion "25.0.2"
dagger 2.11
Ajouter annotationProcessor "com.google.dagger:dagger-Android-processor:2.11"
à votre fichier Gradle résoudra votre problème.
Dans mon cas, la classe SomeModule
contenait des lignes inutiles:
@ContributesAndroidInjector
internal abstract fun fragmentInjector(): SomeFragment
si aucune des solutions suggérées ne fonctionne, vérifiez si vous avez oublié d’ajouter des annotations @Provides à l’une des dépendances. C’est là le problème dans mon cas.
Pour Kotlin, au lieu de
annotationProcessor com.google.dagger:dagger-Android-processor:2.11
utilisation
kapt com.google.dagger:dagger-Android-processor:2.11