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"
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"
}
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