/ / Kapt, Kotlin, Dagger2 Errore durante l'elaborazione delle annotazioni - android, kotlin, dagger-2, dagger.android

Kapt, Kotlin, Dagger2 Errore durante l'elaborazione delle annotazioni - android, kotlin, dagger-2, dagger.android

Sto ottenendo questo errore gradle dopo l'aggiunta com.google.dagger: Pugnale-android-support dipendenza in un progetto con kotlin.

Questo fa parte del mio gradle di costruzione 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}"

...
}

e qui il errore gradle che ottengo

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);
}

Qualcuno ha avuto lo stesso problema?

risposte:

4 per risposta № 1

Risolto usando il AndroidSupportInjectionModule una volta che sto usando android.support.v4.app.Fragment.

@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);
}

1 per risposta № 2

Hai provato ad aggiungere kapt nel tuo file gradle per le app?

kapt {
generateStubs = true
}