web-dev-qa-db-fra.com

Erreur: impossible de trouver la variable de symbole DaggerAppComponent

En essayant d’intégrer la dernière version de Dagger 2, je suis confronté au problème de la génération automatique de Dagger. Dagger ne génère pas automatiquement DaggerAppComponent malgré plusieurs processus de reconstruction et de création de module.

Classe d'application:  

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

Dépendance utilisée:

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'

Toute aide à cet égard sera très appréciée.

8
Ashwini Kumar

On dirait que j'utilisais les mauvaises dépendances:

compile 'com.google.dagger:dagger-Android:2.x'
compile 'com.google.dagger:dagger-Android-support:2.x' // if you use the support libraries
annotationProcessor 'com.google.dagger:dagger-Android-processor:2.x'

Les dépendances ci-dessus doivent être utilisées si vous utilisez des classes dans dagger.Android.

Les dépendances correctes sont:

compile 'com.google.dagger:dagger:2.x'
annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
21
Ashwini Kumar

L'ajout de la dépendance ci-dessous a résolu le problème pour moi:

annotationProcessor 'com.google.dagger:dagger-compiler:2.12'
2
Gauri Gadkari

J'ai eu le même problème ... Ce qui a résolu mon problème, c'est l'ajout du modèle de vue au ViewmodelModulle, puis d'ajouter l'annotation @Inject au constructeur de mon modèle de vue. Cela pourrait être un problème différent pour vous, mais dans ma situation, cela a vraiment aidé. Mon code compilé sans aucun problème

@Inject <----- Cela manquait dans le constructeur.

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

Vous avez besoin de ces deux lignes

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

Utilisez kapt au lieu de annotationProcessor lorsque vous utilisez kotlin . Classe générée comme Dagger + AppComponentClass, Exemple: DaggerAppComponent

0
Ashik Azeez