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

Compose项目从Koin迁移到Hilt时ViewModel注入失败求助

解决方案建议

1. 检查State类的可见性

确保LocalMainContract.State的访问修饰符为public,Hilt注解处理器需要能直接访问该类。如果是internal或private修饰,会导致处理器无法解析。

2. 验证Hilt注解处理器配置

模块级build.gradle.kts配置

  • 若用KAPT:
dependencies {
    implementation("com.google.dagger:hilt-android:2.48")
    kapt("com.google.dagger:hilt-android-compiler:2.48")
    implementation("androidx.hilt:hilt-navigation-compose:1.1.0")
}
  • 若用KSP:
plugins {
    id("com.google.devtools.ksp") version "1.9.20-1.0.14"
}

dependencies {
    implementation("com.google.dagger:hilt-android:2.48")
    ksp("com.google.dagger:hilt-android-compiler:2.48")
    implementation("androidx.hilt:hilt-navigation-compose:1.1.0")
}

项目级build.gradle.kts配置

plugins {
    id("com.android.application") version "8.2.0" apply false
    id("org.jetbrains.kotlin.android") version "1.9.20" apply false
    id("com.google.dagger.hilt.android") version "2.48" apply false
}

3. 彻底清理并重构项目

  • 执行Android Studio的Build -> Clean Project
  • 执行Build -> Rebuild Project
  • 手动删除项目根目录的.gradle、build文件夹,以及模块目录下的build文件夹,再重新同步项目

4. 检查ViewModel注入逻辑

确保LocalMainViewModel构造函数正确使用@Inject,且State实例可被Hilt提供:

class LocalMainViewModel @Inject constructor(
    private val initialState: LocalMainContract.State
) : BaseViewModel<LocalMainContract.State, LocalMainContract.Event>(initialState)

如果LocalMainContract.State是需要初始化的 data class,在Hilt模块中提供实例:

@Module
@InstallIn(SingletonComponent::class)
object MainModule {
    @Provides
    fun provideMainInitialState(): LocalMainContract.State {
        return LocalMainContract.State(/* 填入初始化参数 */)
    }
}

5. 确认Compose中ViewModel的获取方式

在Compose中必须使用hiltViewModel()获取实例,禁止手动初始化:

@Composable
fun MainScreen() {
    val viewModel: LocalMainViewModel = hiltViewModel()
    // 业务代码
}

6. 排查State类的内部依赖

如果LocalMainContract.State包含其他需要注入的对象,确保这些对象也已通过Hilt配置可注入,否则会导致处理器无法解析整个State类。


内容的提问来源于stack exchange,提问作者Artur Danielyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:24:56