web-dev-qa-db-fra.com

DaggerAppComponent non créé

Avec la dague 2.10, je pouvais créer le composant d'application en faisant

    sAppComponent = DaggerAppComponent.builder()
            .appModule(new AppModule(this))
            .sessionModule(new SessionModule())
            .netModule(new NetModule())
            .dataModule(new DataModule())
            .build();

J'utilisais déjà AndroidInjector for Activities et tout allait bien. Maintenant, je suis passé à 2.11 et je ne trouve pas le moyen de créer le composant d'application. Dans le tutoriel google je vois:

DaggerYourApplicationComponent.create()
    .inject(this);

à ajouter dans la création de l'application. Dans mon cas DaggerYourApplicationComponent = DaggerAppComponent. Le problème est que la classe DaggerAppComponent n'est plus créée.

J'ai:

public class App extends Android.support.multidex.MultiDexApplication implements HasActivityInjector {
    @Inject DispatchingAndroidInjector<Activity> mDispatchingActivityInjector;
    @Override
    public void onCreate() {
        super.onCreate();

        sAppComponent = DaggerAppComponent.create().inject(this); //here the error

et:

@Singleton
@Component(modules = {
        AppModule.class,
        MainActivityModule.class,
        ...
})
public interface AppComponent {
        void inject(App app);
        ...
}

dans le fichier build.gradle j'ai:

def daggerVer = 2.11
compile "com.google.dagger:dagger:$daggerVer"
compile "com.google.dagger:dagger-Android-support:$daggerVer"
annotationProcessor "com.google.dagger:dagger-Android-processor:$daggerVer"
18
kingston

Ok Désolé pour le bruit. Mon erreur stupide: quand je suis passé à 2.11, j'ai copié la section build.gradle du tutoriel google où la dépendance:

annotationProcessor "com.google.dagger:dagger-compiler:$daggerVer"

n'est pas répertorié pour une raison que je ne connais pas. Avec les dépendances listées ci-dessous, tout fonctionne:

def daggerVer = 2.12 // or latest version

implementation "com.google.dagger:dagger:$daggerVer"
implementation "com.google.dagger:dagger-Android-support:$daggerVer"
annotationProcessor "com.google.dagger:dagger-Android-processor:$daggerVer"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVer"

Si vous utilisez Kotlin

apply plugin: 'kotlin-kapt'

dependencies {
    def daggerVer = 2.12 // or latest version

    implementation "com.google.dagger:dagger:$daggerVer"
    implementation "com.google.dagger:dagger-Android-support:$daggerVer"
    kapt "com.google.dagger:dagger-Android-processor:$daggerVer"
    kapt "com.google.dagger:dagger-compiler:$daggerVer"
}
43
kingston

Dans Kotlin , nous devons ajouter kapt plugin du compilateur pour utiliser Dagger 2.

Dans votre gradle d'application, ajoutez ce plugin

apply plugin: 'kotlin-kapt'

Et ajoutez des dépendances comme ci-dessous

dependencies
{
    implementation "com.google.dagger:dagger:$latest_version"
    kapt  "com.google.dagger:dagger-compiler:$latest_version"
    implementation "com.google.dagger:dagger-Android:$latest_version"
    kapt  "com.google.dagger:dagger-Android-processor:$latest_version"
    implementation "com.google.dagger:dagger-Android-support:$latest_version"
    kapt  "com.google.dagger:dagger-Android-support:2.12"
}

Voir Kotlin Documentation

7
FAЯAƸ