web-dev-qa-db-ja.com

シンボルクラスDaggerAppComponentが見つからないか、シンボルクラスDaggerActivityComponentが見つかりません

クラスにインジェクトを追加するとこのエラーが発生し、コンパイルエラーが発生します。削除した場合

@Inject static ApiService mApiService;

それはうまく機能しています

そして、私は最初にマージ2アプリケーションがdagger2を使用し、2番目のアプリケーションがbutterknifeであり、両方のディレクトリ構造がdiffernetであり、両方のアプリケーションが相互に依存して正常に動作するが、コードアプリケーションをコンパイルしてDaggerAppComponentを与えないため、2つのアプリケーションクラスを使用していますエラー!

クエリの解決にご協力ください

私は以下の構造に従っています


@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);
    }
}
13
mbpatel

私の場合、私は試しました:

  • キャッシュの無効化とプロジェクトのクリーニング
  • 短剣のバージョンを変更する
  • gradle.propertiesに-Pandroid.incrementalJavaCompile = falseを追加
  • はるかに。

私の場合に私を助けた唯一のことは、コンソールを開くことでした "build"、 "Toggle View"(コンソールの左側でハンマーの下)をクリックしますおよびその画面に表示されるエラーを修正

17
Julian Sanchez

私のようなこの問題の解決策を探している人々を助けるために、アプリのbuild.gradleモジュール(既存のdagger2依存関係)

// 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"
8
Fio

シンボルクラスDaggerAppComponentが見つからない場合:\ app\build\generatedフォルダーに移動して削除し、プロジェクトを再構築します。

6
Ardit Zeza

この問題がありました。私の場合、すべてのコンポーネントクラスの上に@Singeltonを置くのを忘れていました。

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

私の場合、サブモジュールにdagger2依存関係を含めていたため、DaggerAppComponentは生成されませんでした。そこから依存関係を削除し、メインアプリモジュールで問題を解決しました。

1
NightFury

これを試しましたか?

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

私の場合、SomeModuleに次のようなものをKotlinモジュールに追加しました。

@SomeScope
@Provides
internal fun providesSomeService(activity: MainActivity): SomeServiceProvider {
    return SomeServiceProviderImpl(activity)
}

それを削除して別のエラーを取得し、修正しました。そのため、Gitを使用して、何が間違っているのかを理解してください。 Kotlinでは、@Bindsおよび@Provides異なるモジュールへのメソッド。

0
CoolMind

私は以下にgradle.propertiesに追加しました:-

-Pandroid.incrementalJavaCompile=false

それは私のために働いた

0
sharma_kunal