Error: cannot find symbol variable DaggerAppComponent

Viewed 19317

While trying to integrate latest Dagger 2 version, I am facing problem of Dagger auto generation. Dagger is not auto generating DaggerAppComponent in spite of several Rebuilds and Make Module App process.

Application class:

public class BaseApplication extends Application
{
    private AppComponent appComponent;

    @Override
    public void onCreate()
    {
        super.onCreate();
        initAppComponent();
    }

    private void initAppComponent()
    {
        DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
    }

    public AppComponent getAppComponent()
    {
        return appComponent;
    }
}

AppComponent

@Singleton
@Component(modules = AppModule.class)
public interface AppComponent
{
    void inject(BaseApplication application);
}

AppModule:

@Module
public class AppModule
{
    private BaseApplication application;

    public AppModule(BaseApplication app)
    {
        application = app;
    }

    @Provides
    @Singleton
    Context provideContext()
    {
        return application;
    }

    @Provides
    Application provideApplication()
    {
        return application;
    }
}

Dependency used:

compile 'com.google.dagger:dagger-android:2.11'
compile 'com.google.dagger:dagger-android-support:2.11'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.11'
androidTestCompile 'com.google.code.findbugs:jsr305:3.0.1'

Any help in this regard will be highly appreciated.

8 Answers

You need these two lines

implementation 'com.google.dagger:dagger:2.16'
kapt 'com.google.dagger:dagger-compiler:2.16'

Use kapt instead of annotationProcessor when using kotlin. Generated class like Dagger+AppComponentClass, eg:DaggerAppComponent

Adding the below dependency fixed the issue for me for Java project

annotationProcessor 'com.google.dagger:dagger-compiler:2.27'

and for Kotlin project (after adding kotlin-kapt):

kapt "com.google.dagger:dagger-compiler:2.27"

I had the same problem...What solved my problem was actually adding The view model to the ViewmodelModulle then add the annotation @Inject to the constructor of my view model. It could be a different issue for you but in my situation, this really helped. My code compiled without any problem

@Inject <----- This was Missing in the constructor.

public MessageViewModel(Application application) {
    super(application);
    mApp = application;

Try, go to File and

Invalidate and Restart

1.Clean the project 2.Rebuild 3.File-->Invalidate and Restart

needs to run your APP once to generate "DaggerAppComponent"

Related