2017-05-03 1 views
1

Je reçois cette erreur après avoir ajouté injecter sur ma classe puis il me donne une erreur de compilation. Si je retirene peut pas trouver la classe de symbole DaggerAppComponent ou ne peut pas trouver la classe de symbole DaggerActivityComponent

@Inject static ApiService mApiService; 

il fonctionne très bien

Et j'utilise 2 classe Application ceux-ci sont MultidexApplication étendue parce que j'ai fusionner 2 première application utilise dagger2 et la deuxième application est Butterknife et à la fois la structure du répertoire differnet et à la fois application interdépendante fonctionne bien mais après fusionner l'application de code pas compiler et donner erreur DaggerAppComponent!

S'il vous plaît nous aider à résoudre ma requête

Je suis suivre la structure ci-dessous


@ActivityScope 
@Component(dependencies = AppComponent.class) 
public interface ActivityComponent extends AppComponent { 
    void inject(SignInActivity activity); 
} 

@Singleton 
@Component(modules = {ApplicationModule.class, ApiModule.class}) 
public interface AppComponent { 
    Context appContext(); 
    Config config(); 
    ApiService apiService();  
} 

@Module 
public class ActivityModule { 
    private final Activity mActivity; 

    public ActivityModule(Activity activity){ 
     mActivity = activity; 
    } 

    @Provides 
    public Context activityContext(){ 
     return mActivity; 
    } 
} 

@Module 
public class ApiModule { 
    @Provides 
    @Singleton 
    public ApiService apiService(){ 
     OkHttpClient client = new OkHttpClient().newBuilder() 
       .connectTimeout(10, TimeUnit.SECONDS) 
       .readTimeout(30, TimeUnit.SECONDS) 
       .writeTimeout(10, TimeUnit.SECONDS) 
       .build(); 
     ObjectMapper mapper = new ObjectMapper(); 
     mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES,false); 
     mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); 
     return new Retrofit.Builder() 
       .baseUrl(Config.API_URL) 
       .addConverterFactory(JacksonConverterFactory.create(mapper)) 
       .client(client) 
       .build() 
       .create(ApiService.class); 
    } 
} 

@Module 
public class ApplicationModule { 
    private final App mApp; 

    public ApplicationModule(App app) { 
     mApp = app; 
    } 

    @Provides 
    @Singleton 
    public Context appContext() { 
     return mApp; 
    } 

    @Provides 
    @Singleton 
    public Config config() { 
     return new Config(mApp); 
    }  
} 

@Scope 
@Retention(RetentionPolicy.RUNTIME) 
public @interface ActivityScope { 
} 

public class App extends BrowserApp { 
    private AppComponent mAppComponent; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mAppComponent = DaggerAppComponent.builder().applicationModule(new ApplicationModule(this)).build(); 

    } 

    public AppComponent getAppAppComponent() { 
     return mAppComponent; 
    } 

    @Override 
    protected void attachBaseContext(Context base) { 
     super.attachBaseContext(base); 
     MultiDex.install(this); 
    } 
} 
+0

Avez-vous cliquez sur make projet? Cliquez sur make projet puis vous allez, vous obtiendrez DaggerAppComponant. –

+0

Son même effet Non resloved – mbpatel

+0

Je ne suis pas très au courant à ce sujet, je suis aussi débutant à suivre cette structure, mais vous pouvez consulter http://saulmm.github.io/when-Thor-and-Hulk-meet-dagger2-rxjava -1 et un autre blog: https://blog.mindorks.com/android-amazing-open-source-apps-e44f520593cc –

Répondre

0

Avez-vous essayé?

@ActivityScope 
@Component(modules = ActivityModule.class, dependencies = 
AppComponent.class) 
public interface ActivityComponent extends AppComponent { 
    void inject(SignInActivity activity); 
} 
1

J'ai eu ce problème. Dans mon cas, j'ai oublié de mettre @Singelton au-dessus de toutes les classes de composants.

@Singleton 
@Component(modules = AppModule.class) 
public interface AppComponent { 
... 
} 
0

Dans mon cas, DaggerAppComponent n'a pas été générée, puisque je l'avais compris les dépendances de dagger2 dans mon sous-module. J'ai supprimé les dépendances à partir de là et les module d'application principale a résolu le problème.

0

Juste pour aider les gens qui cherchent la solution à ce problème comme moi, inclure des lignes ci-dessous dans votre application de build.gradle module (Remplacer les dagger2 dépendances existantes)

// Dagger 2 
implementation "com.google.dagger:dagger-android-support:2.11" 
implementation "com.google.dagger:dagger:2.11" 
annotationProcessor "com.google.dagger:dagger-compiler:2.11"