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.
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'
L'ajout de la dépendance ci-dessous a résolu le problème pour moi:
annotationProcessor 'com.google.dagger:dagger-compiler:2.12'
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;
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