You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多模块应用中Dagger Hilt依赖注入报错问题求助

Hilt跨模块注入失败的问题根源与解决配置

核心问题

你遇到的error.NonExistentClass错误,本质是Hilt的KSP注解处理器在feature模块编译时,无法访问database模块中repository相关的注解元数据或类定义,导致无法识别ViewModel的依赖项,进而生成错误的组件代码。

必查的遗漏配置点

1. database模块的依赖暴露方式错误

如果database模块中用implementation声明Repository接口、Hilt模块等需要跨模块访问的代码,feature模块的注解处理器无法获取到这些类的信息。必须:

  • 在database模块的build.gradle中,将需要暴露给其他模块的依赖(如Room、Repository接口)用api关键字声明,而非implementation;
  • 确保Repository接口、实现类、Hilt提供方法的访问修饰符为public(Kotlin默认是internal,会限制跨模块访问)。

2. Hilt模块的安装作用域缺失

database模块中提供Repository实例的Hilt模块,必须用@InstallIn指定全局可见的组件作用域,否则feature模块的Hilt处理器无法识别该依赖提供方。示例:

@Module
@InstallIn(SingletonComponent::class) // 绑定到全局单例组件
object DatabaseModule {
    @Provides
    fun provideMyRepository(db: MyRoomDatabase): MyRepository {
        return MyRepositoryImpl(db)
    }
}

3. 多模块的Hilt注解处理器配置不完整

两个模块都必须配置Hilt的KSP依赖,且版本一致:

  • database模块的build.gradle配置:
plugins {
    id("com.android.library")
    id("kotlin-android")
    id("com.google.dagger.hilt.android")
    id("com.google.devtools.ksp")
}

dependencies {
    implementation("com.google.dagger:hilt-android:2.48")
    ksp("com.google.dagger:hilt-android-compiler:2.48")
    // 用api暴露Room给其他模块
    api("androidx.room:room-runtime:2.6.1")
    ksp("androidx.room:room-compiler:2.6.1")
}
  • feature模块的build.gradle配置:
plugins {
    id("com.android.application") // 或library
    id("kotlin-android")
    id("com.google.dagger.hilt.android")
    id("com.google.devtools.ksp")
}

dependencies {
    implementation(project(":database"))
    implementation("com.google.dagger:hilt-android:2.48")
    ksp("com.google.dagger:hilt-android-compiler:2.48")
}

4. 编译缓存干扰

执行./gradlew clean清理项目缓存后重新编译,旧缓存可能导致类识别异常。

验证要点

确认ViewModel的构造函数注入正确,依赖的Repository类在database模块中是public且有Hilt提供方:

@HiltViewModel
class HomeViewModel @Inject constructor(
    private val myRepository: MyRepository
) : ViewModel() {
    // 业务逻辑
}

内容的提问来源于stack exchange,提问作者Victor kiptoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:25:06