Я занимаюсь разработкой Android Library
проекта и хочу интегрировать Dagger 2
.Пока используйте Dagger только в Application
проекте и не совсем уверены, как это сделать в Library
проекте.
Для проектов приложений всегда используйте его так:
AppComponent.class
@Singleton
@Component(modules = [AndroidSupportInjectionModule::class, AppModule::class, ActivityBuilderModule::class])
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AppComponent
}
fun inject(app: App)
}
AppModule.class
@Module
class AppModule {
@Provides
@Singleton
fun provideContext(application: Application): Context = application
}
ActivityBuilderModule.class
@Module
abstract class ActivityBuilderModule {
@ContributesAndroidInjector(modules = [MainActivityModule::class])
abstract fun bindMainActivity(): MainActivity
}
App.class
class App : Application(), HasActivityInjector {
@Inject
lateinit var activityDispatchingAndroidInjector: DispatchingAndroidInjector<Activity>
override fun onCreate() {
super.onCreate()
DaggerAppComponent
.builder()
.application(this)
.build()
.inject(this)
}
override fun activityInjector(): AndroidInjector<Activity> {
return activityDispatchingAndroidInjector
}
}
Как мне использовать этов Library
проекте?