在应用程序类中找不到DaggerAppComponent



我正在使用kotlin的最新版本,并试图实现dagger2,但在重建项目后,这些建议永远不会给我"DaggerAppComponent";构建。

我的依赖

implementation 'com.google.dagger:dagger:2.38.1'
implementation 'com.google.dagger:dagger-android:2.38.1'
implementation 'com.google.dagger:dagger-android-support:2.35.1'
annotationProcessor 'com.google.dagger:dagger-compiler:2.38.1'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.38.1' 

我已经添加了

plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'

}

这是我的AppComponent类

@Component (
modules = [
AndroidSupportInjectionModule::class,
])
interface AppComponent: AndroidInjector<BaseApplication>{
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AppComponent
}
}

这是我的应用程序类,已经添加到清单中了,

class BaseApplication: DaggerApplication() {
override fun applicationInjector(): AndroidInjector<out DaggerApplication>? {
return null
}
}

我已经尝试添加kapt而不是使用annotationProcessor,但没有任何区别。有人能帮我吗,我几乎花了一整天的时间在这个错误上!

好的,我终于找到了一些解决方案,我发布这篇文章是因为我认为这将在任何方面帮助别人。我使用的是最新的kotlin 1.7.0版本和最新的android工作室。首先,我添加了dagger2的最新依赖项,即2.38.1,但它一直给我这个错误Execution failed for task ':app:kaptDebugKotlin'。因此,最后我将我的dagger依赖项降级为2.35.1并将这些行添加到grade.properties

kapt.use.worker.api=false
kapt.incremental.apt=false

然后关闭android工作室并删除"app"文件夹中的"build"文件夹。重新启动android工作室,工作起来很有魅力。希望这将帮助你们谁有同样的有线问题,我有。最后,我的依赖项是这样的,

implementation 'com.google.dagger:dagger:2.35.1'
implementation 'com.google.dagger:dagger-android:2.35.1'
kapt 'com.google.dagger:dagger-compiler:2.35.1'
kapt 'com.google.dagger:dagger-android-processor:2.35.1'

事实上,最新的kotlin版本(1.7)目前还不完全支持dagger2(我使用的是最新的Dagger 2.38.1),所以解决方法是将其添加到你的应用程序级别依赖项中

kapt "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.4.2"

并建立项目

@HiltAndroidApp在开始上课时添加并使用最新版本ext.hilt_version='2.42'

plugins {
id 'kotlin-kapt'
}
dependencies {
implementation 'com.google.dagger:dagger:2.41'
kapt 'com.google.dagger:dagger-compiler:2.41'
}

最新更新