尝试构建应用程序组件时未解析的引用 DaggerApplicationComponent

问题描述 投票:0回答:1

我正在使用 Android Studio 2022.3.1 Patch 2,我正在尝试创建我的应用程序组件,但 Dagger 没有生成我的应用程序组件。这是 MainApplication.kt

class MainApplication : Application() {

    val applicationComponent: ApplicationComponent =
        DaggerApplicationComponent.builder().applicationModule(ApplicationModule(this)).build()

    @Inject
    lateinit var indoor: Indoor

    override fun onCreate() {
        super.onCreate()
        applicationComponent.inject(this)
    }
}

还有我的应用程序组件

import dagger.Component
import javax.inject.Singleton

@Singleton
@Component(modules = [ApplicationModule::class])
interface ApplicationComponent {
    @ApplicationContext
    fun context(): Context
    fun application(): Application
    fun  inject(application: MainApplication)
}

也在我的 build.graddle 中,依赖项如下所示

//Dagger
    implementation("com.google.dagger:dagger:2.48.1")
    implementation("com.google.dagger:dagger-android-support:2.48.1") 
    annotationProcessor("com.google.dagger:dagger-android-processor:2.48.1")
    annotationProcessor("com.google.dagger:dagger-compiler:2.48.1")

我尝试使用

kapt“com.google.dagger:dagger-compiler:2.x.x

但是没用

编辑:这是我的应用程序模块代码

import dagger.Module

进口匕首。提供 导入 javax.inject.Singleton

@模块 类ApplicationModule(私有val应用程序:应用程序){

@Provides
@ApplicationContext
fun provideContext(): Context = application

@Provides
fun provideApplication(): Application = application
android kotlin dagger
1个回答
0
投票

为您的

ApplicationModule

尝试一下这个
@Module 
class ApplicationModule (private val application: Application) {

@Provides
fun provideApplication(): Application = application

}

仔细检查

Indoor
类是否有
@Inject
带注释的构造函数:

class Indoor @Inject constructor(...){
    ...
}

还有

ApplicationComponent

@Singleton
@Component(modules = [ApplicationModule::class])
interface ApplicationComponent {
    fun inject(application: MainApplication)
}

还有 您可以通过

Indoor
ApplicationModule

传递到对象图中
@Module 
class ApplicationModule (private val application: Application) {

@Provides
fun provideApplication(): Application = application
    
@Provides
//@Singleton
fun provideIndoor(application: Application) = Indoor(application)

}
© www.soinside.com 2019 - 2024. All rights reserved.