Search code examples
androiddagger-2dagger

DaggerAppComponent not created


With dagger 2.10 I used to be able to create the app component by doing

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

I was already using the AndroidInjector for Activities and everything was fine. Now I switched to 2.11 and I can't find the way to create the app component. In the google tutorial I see:

DaggerYourApplicationComponent.create()
    .inject(this);

to be added in the onCreate of the Application. In my case DaggerYourApplicationComponent = DaggerAppComponent. The problem is that DaggerAppComponent class isn't created anymore.

I have:

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

and:

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

in the build.gradle file I have:

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"

Solution

  • With the dependencies listed below everything works:

    If you are using Kotlin

    apply plugin: 'kotlin-kapt'
    
    dependencies {
        def daggerVer = 2.27 // 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"
    }
    

    If you are using Java:

    dependencies {
        def daggerVer = 2.27 // 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"
    }
    

    See google tutorial

    You can find the latest release number here.