Kapt,Kotlin,Dagger2批注处理时出错

在使用kotlin在项目中添加com.google.dagger:dagger-android-support依赖项后,我收到了这个gradle错误。

这是我构建gradle build.gradle的一部分

apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'realm-android' apply plugin: 'me.tatarka.retrolambda' apply plugin: 'kotlin-kapt' android { ... kapt { generateStubs = true } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) ... kapt "com.google.dagger:dagger-compiler:${daggerVersion}" kapt "com.google.dagger:dagger-android-processor:${daggerVersion}" compile "com.google.dagger:dagger:${daggerVersion}" compile "com.google.dagger:dagger-android-support:${daggerVersion}" ... } 

这里是我得到的gradle错误

 ApplicationComponent.java:21: error: [dagger.android.AndroidInjector.inject(T)] java.util.Map<java.lang.Class<? extends android.support.v4.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends android.support.v4.app.Fragment>>> cannot be provided without an @Provides-annotated method. e: public interface ApplicationComponent { e: ^ e: java.lang.IllegalStateException: failed to analyze: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error while annotation processing at org.jetbrains.kotlin.analyzer.AnalysisResult.throwIfError(AnalysisResult.kt:57) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.kt:144) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:167) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:55) at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:182) at org.jetbrains.kotlin.daemon.CompileServiceImpl.execCompiler(CompileServiceImpl.kt:397) at org.jetbrains.kotlin.daemon.CompileServiceImpl.access$execCompiler(CompileServiceImpl.kt:99) at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$2.invoke(CompileServiceImpl.kt:365) at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$2.invoke(CompileServiceImpl.kt:99) at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$2$$special$$inlined$withValidClientOrSessionProxy$lambda$1.invoke(CompileServiceImpl.kt:798) at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$2$$special$$inlined$withValidClientOrSessionProxy$lambda$1.invoke(CompileServiceImpl.kt:99) at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137) 

ApplicationComponent

 @Singleton @Component(modules = {AndroidInjectionModule.class, ApplicationModule.class, RetrofitModule.class, ActivityBuilderModule.class}) public interface ApplicationComponent { @Component.Builder interface Builder { @BindsInstance Builder application(Application application); ApplicationComponent build(); } void inject(TaskApplication application); } 

任何人都有同样的问题?

你有没有尝试在你的应用程序级别的gradle文件中添加kapt?

 kapt { generateStubs = true } 

一旦我使用android.support.v4.app.Fragment,通过使用AndroidSupportInjectionModule解决。

 @Singleton @Component(modules = {AndroidSupportInjectionModule.class, ApplicationModule.class, RetrofitModule.class, ActivityBuilderModule.class}) public interface ApplicationComponent { @Component.Builder interface Builder { @BindsInstance Builder application(Application application); ApplicationComponent build(); } void inject(TaskApplication application); }