从 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
我用 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