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

时间:2017-11-30 16:31:17

标签: android kotlin dagger

我使用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()
    }
}

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

1 个答案:

答案 0 :(得分:2)

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

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

  
      
  • 申请插件:' kotlin-kapt'
  •   
  • kapt" com.google.dagger:dagger-compiler:dagger_version"
  •   
  • kapt" com.google.dagger:dagger-android-processor:dagger_version"
  •   

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

  
      
  • ./ gradlew clean&& ./gradlew build
  •