2017-07-22 4 views
2

Beim Versuch, die neueste Version von Dagger 2 zu integrieren, stehe ich vor dem Problem der automatischen Generierung von Dolch. Dolch erzeugt DaggerAppComponent nicht automatisch trotz mehrerer Rebuilds und Make Module App Prozess.Fehler: Symbolvariable kann nicht gefunden werden DaggerAppComponent

Anwendungsklasse:

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

Abhängigkeit verwendet:

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' 

Jede Hilfe in dieser Hinsicht wird sehr geschätzt.

+1

Können Sie die Protokolle einfügen, die Sie bekommen werden beim Aufbau? –

+0

Wo ist die Frage? Warum werden Sie keine Fehlerprotokolle posten? Gib den Lesern deiner Frage einige Nähte. – azizbekian

Antwort

6

Scheint, wie ich die falschen Abhängigkeiten verwendet wurde:

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' 

Die oben genannten Abhängigkeiten verwendet werden sollten, wenn Sie Klassen in dagger.android verwenden.

Die richtigen Abhängigkeiten sind:

compile 'com.google.dagger:dagger:2.x' 
annotationProcessor 'com.google.dagger:dagger-compiler:2.x' 
+0

Danke! Ich hatte das gleiche Problem und das war der Grund. Auch ich denke, Sie sollten Ihre eigene Antwort als die akzeptierte Antwort akzeptieren. :) – DanXPrado

+0

Ich habe das schon einige Male gesehen - was bedeutet es, dass "Klassen in dagger.android" benutzt werden? – thax

-1

Chenge Code dazu

private void initAppComponent() 
{ 
/* DaggerAppComponent.builder() 
        .appModule(new AppModule(this)) 
        .build();*/ 
     appComponent = DaggerAppComponent.builder() 
       .appModule(new AppModule(this)) 
       .build(); 
     appComponent .inject(this) 
    } 

Andere Dinge sind

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

Warum Sie gleiche Klasse injizieren müssen, wo eine Komponente eingebaut ist man leicht Kontext und Anwendung auf Anwendungsklasse bekommen kann. Dolch kann dir helfen, eine abhängige Klasse zu finden.

-1

die unter Abhängigkeit Hinzufügen der Ausgabe für mich festgelegt:

annotationProcessor 'com.google.dagger:dagger-compiler:2.12' 
Verwandte Themen