web-dev-qa-db-ja.com

エラー:シンボル変数DaggerAppComponentが見つかりません

最新の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'

この点で助けていただければ幸いです。

10
Ashwini Kumar

私は間違った依存関係を使用していたようです:

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'
23
Ashwini Kumar

これらの2行が必要です

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

Kotlinを使用する場合、annotationProcessorの代わりにkaptを使用します。 Dagger + AppComponentClassなどの生成されたクラス、例:DaggerAppComponent

3
Ashik Azeez

以下の依存関係を追加すると、問題が修正されました。

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

試して、ファイルに移動して

無効化して再起動

1
Sebastian Duran

私は同じ問題を抱えていました...私の問題を解決したのは、実際にビューモデルをViewmodelModulleに追加し、注釈@Injectをビューモデルのコンストラクタに追加することでした。それはあなたにとって別の問題かもしれませんが、私の状況では、これは本当に助けになりました。問題なくコンパイルされた私のコード

@Inject <-----これはコンストラクターにありませんでした。

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

1.プロジェクトのクリーン2.リビルド3.ファイル->無効化と再起動