Dagger 未使用的@Binds 方法

Unused @Binds methods with Dagger

我对启动画面的定义如下Activity:

@Subcomponent(modules = arrayOf(
        SplashActivitySubcomponent.ComponentModule::class)
)
interface SplashActivitySubcomponent : AndroidInjector<SplashActivity> {
    @Subcomponent.Builder
    abstract class Builder : AndroidInjector.Builder<SplashActivity>()

    @Module
    abstract class ComponentModule {
        @Binds
        @IntoMap
        @ActivityKey(SplashActivity::class)
        abstract fun bindSplashActivityInjectorFactory(builder: SplashActivitySubcomponent.Builder): AndroidInjector.Factory<out Activity>
    }
}

我没有Activity中的片段。发生的事情是 bindSplashActivityInjectorFactory 未被使用。问题是我无法摆脱它,否则应用程序会在运行时崩溃。

使用

@Suppress("unused")

还不够,因为我仍然收到来自 kotlin-lint 的警告。 不用的时候为什么要定义这个方法?我该怎么做才能避免警告?

这是我得到的错误:

UnnecessaryAbstractClass - [ComponentModule] at com/xxxx/splash/di/SplashActivitySubcomponent.kt:20:5

OptionalAbstractKeyword - [bindSplashActivityInjectorFactory] at com/xxxx/splash/di/SplashActivitySubcomponent.kt:22:9

现在我解决了这个问题:

@Subcomponent(modules = arrayOf(SplashActivitySubcomponent.ComponentModule::class))
interface SplashActivitySubcomponent : AndroidInjector<SplashActivity> {
    @Subcomponent.Builder
    abstract class Builder : AndroidInjector.Builder<SplashActivity>()

    @Module
    @Suppress("UnnecessaryAbstractClass", "OptionalAbstractKeyword")
    abstract class ComponentModule {
        @Suppress("unused")
        @Binds
        @IntoMap
        @ActivityKey(SplashActivity::class)
        abstract fun bindSplashActivityInjectorFactory(builder: SplashActivitySubcomponent.Builder): AndroidInjector.Factory<out Activity>
    }
}

所以我刚刚添加:

@Suppress("UnnecessaryAbstractClass", "OptionalAbstractKeyword")