最新のDagger 2バージョンを統合しようとしているときに、Dagger自動生成の問題に直面しています。 Daggerは、いくつかの再構築およびモジュールアプリの作成プロセスにもかかわらず、DaggerAppComponentを自動生成しません。
アプリケーションクラス:
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;
}
}
使用される依存関係:
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'
この点で助けていただければ幸いです。
私は間違った依存関係を使用していたようです:
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'
Dagger.Androidでクラスを使用している場合は、上記の依存関係を使用する必要があります。
正しい依存関係は次のとおりです。
compile 'com.google.dagger:dagger:2.x'
annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
これらの2行が必要です
implementation 'com.google.dagger:dagger:2.16'
kapt 'com.google.dagger:dagger-compiler:2.16'
Kotlinを使用する場合、annotationProcessorの代わりにkaptを使用します。 Dagger + AppComponentClassなどの生成されたクラス、例:DaggerAppComponent
以下の依存関係を追加すると、問題が修正されました。
annotationProcessor 'com.google.dagger:dagger-compiler:2.12'
試して、ファイルに移動して
無効化して再起動
私は同じ問題を抱えていました...私の問題を解決したのは、実際にビューモデルをViewmodelModulleに追加し、注釈@Injectをビューモデルのコンストラクタに追加することでした。それはあなたにとって別の問題かもしれませんが、私の状況では、これは本当に助けになりました。問題なくコンパイルされた私のコード
@Inject <-----これはコンストラクターにありませんでした。
public MessageViewModel(Application application) {
super(application);
mApp = application;
1.プロジェクトのクリーン2.リビルド3.ファイル->無効化と再起動