一行で言うと
@Singleton
は @InstallIn
が SingletonComponent
じゃないと使えません。 1
事象
@InstallIn
が ActivityComponent
の Module で @Singleton
すると、以下のビルドエラーとなる。
error: [Dagger/IncompatiblyScopedBindings] com.example.XXXApplication_HiltComponents.ActivityC scoped with @dagger.hilt.android.scopes.ActivityScoped may not reference bindings with different scopes: public abstract static class SingletonC implements XXXApplication_GeneratedInjector
Hilt を使用した依存関係の注入 | Android デベロッパー | Android Developers の例だと @InstallIn
が ActivityComponent になっているので、注意しましょう。
その他
Dagger Hiltは2021年3月時点で、2.33-betaです。
-
Dagger 2.31以前は
ApplicationComponent
でしたが、 2.32からSingletonComponent
に変わりました。2.32以上にあげるとerror: cannot find symbol @dagger.hilt.InstallIn(value = {ApplicationComponent.class})
というエラーになります。 ↩