从 Java 转换为 Kotlin 后,Dagger 的模块不起作用

Dagger's module doesn't work after conversion from Java to Kotlin

我用 Dagger 2 为 Android 创建了一个简单的应用程序。它有一个共享对象和一个模块。模块是:

@Module
public class MyModule {
    @Provides
    @Singleton
    public Hren providesHren() {
        return new Hren();
    }
}

这个模块有效。但是当我将它转换为 Kotlin 时,出现编译时错误:

> Task :app:compileDebugJavaWithJavac
...../DaggerMyApplicationComponent.java:26: error: cannot find symbol
        DoubleCheck.provider(MyModule_ProvidesHrenFactory.create(builder.myModule));
                             ^
  symbol:   variable MyModule_ProvidesHrenFactory
  location: class DaggerMyApplicationComponent
1 error

转换后的模块:

@Module
class MyModule {
    @Provides
    @Singleton
    fun providesHren(): Hren {
        return Hren()
    }
}

怎么了?为什么我会收到此错误?如何解决?

确保您已正确配置项目以支持 Kotlin 注释。

在您的 build.gradle(Module:app) 文件中,检查您是否应用了以下设置:

  • apply plugin: 'kotlin-kapt'
  • kapt "com.google.dagger:dagger-compiler:dagger_version"
  • kapt "com.google.dagger:dagger-android-processor:dagger_version"

然后,清理并重建您的项目:

  • ./gradlew clean && ./gradlew build