web-dev-qa-db-fra.com

Dague @ContributesAndroidInjector ComponentProcessor n'a pas pu traiter cette interface

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
8
Rostyslav Roshak

Ajouter annotationProcessor "com.google.dagger:dagger-Android-processor:2.11" à votre fichier Gradle résoudra votre problème.

15
Patrick

Dans mon cas, la classe SomeModule contenait des lignes inutiles:

@ContributesAndroidInjector
internal abstract fun fragmentInjector(): SomeFragment
2
CoolMind

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. 

0
Muhammed Ashraf

Pour Kotlin, au lieu de 

annotationProcessor com.google.dagger:dagger-Android-processor:2.11

utilisation 

kapt com.google.dagger:dagger-Android-processor:2.11
0
Misha Akopov