Кинжал с Mvp на Kotlin – Android

Я разработчик Android, который только что попал в Котлин, и я пытался настроить приложение Mvp Dagger в Kotlin, но я не могу понять, что происходит. Я продолжаю получать эту ошибку:

Error:dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code. 

Вот мой код:

KotlinApplication:

 class KotlinApplication: MultiDexApplication(), HasActivityInjector { @Inject lateinit var injector: DispatchingAndroidInjector<Activity> override fun onCreate() { super.onCreate() inject() } override fun activityInjector(): AndroidInjector<Activity> { return injector } fun inject() { DaggerAppComponent.builder().application(this).build().inject(this); } } 

AppComponent:

 @Singleton @Component(modules = arrayOf(AppModule::class, InjectionModule::class)) interface AppComponent { @Component.Builder interface Builder { @BindsInstance fun application(app: KotlinApplication): Builder fun build(): AppComponent } fun inject(app: KotlinApplication) } 

AppModule:

 @Module class AppModule { @Singleton @Provides fun provideAppContext(app: KotlinApplication): Context { return app } @Singleton @Provides fun provideApplication(app: KotlinApplication): Application { return app } } 

InjectionModule:

 @Module abstract class InjectionModule { @ActivityScope @ContributesAndroidInjector(modules = arrayOf(MainModule::class)) internal abstract fun bindMainActivity(): MainActivity } 

Основная деятельность:

 class MainActivity : AppCompatActivity(), MainMvp.View { @Inject lateinit var presenter: MainMvp.Presenter override fun onCreate(savedInstanceState: Bundle?) { AndroidInjection.inject(this) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } 

MainMvp:

 interface MainMvp { interface View { } interface Presenter { } } 

MainPresenter:

 class MainPresenter(view: MainMvp.View): MainMvp.Presenter { var view: MainMvp.View init { this.view = view } } 

MainBindModule:

 @Module interface MainBindModule { @ActivityScope @Binds fun bindView(activity: MainActivity): MainMvp.View } 

MainModule:

 @Module(includes = arrayOf(MainBindModule::class)) class MainModule { @ActivityScope @Provides fun providePresenter(view: MainMvp.View): MainMvp.Presenter { return MainPresenter(view) } } 

И, наконец, ActivityScope:

 @Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class ActivityScope 

Кто-нибудь знает, что может быть неправильно? Я использовал один и тот же точный архитектурный шаблон в java несколько раз раньше, и я никогда не сталкивался с этой ошибкой раньше.

Кроме того, когда я комментирую все внутри InjectionModule, все работает

Я думаю, вы должны добавить AndroidSupportInjectionModule::class в свой AppComponent :

 @Singleton @Component(modules = arrayOf(AppModule::class, AndroidSupportInjectionModule::class, InjectionModule::class)) interface AppComponent { @Component.Builder interface Builder { @BindsInstance fun application(app: KotlinApplication): Builder fun build(): AppComponent } fun inject(app: KotlinApplication) } 

Если он по-прежнему не пытается попробовать обратиться к этому реестру github: Kotlin MVP Chat . Оформить заказ в папке di, содержащей весь код инъекции зависимостей в kotlin.

Ссылка на официальную страницу выпуска Dagger2

В нем говорится:

Это проблема градиента, а не кинжал.

Попробуйте clean/re-build свой проект