Используйте Dagger 2 в проекте Android Library - PullRequest
0 голосов
/ 26 ноября 2018

Я занимаюсь разработкой 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 проекте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...