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

使用Hilt DI无法创建ViewModel实例的技术求助

Hilt注入ViewModel失败:无法创建实例异常解决

遇到的异常:

java.lang.RuntimeException: Cannot create an instance of class com.example.testing.MainViewModel

相关代码如下:

Composable代码

@Composable
fun MainScreen(
    viewModel: MainViewModel = hiltViewModel(),
) {}

MainViewModel.kt

@HiltViewModel
class MainViewModel @Inject constructor(
    private val initialName: String,
) : ViewModel() {

依赖模块(AppModule)

@Module
@InstallIn(SingletonComponent::class)
object AppModule {

    @Provides
    @Singleton
    fun provideInitialName(): String = "ABCD"
}

根目录build.gradle

plugins {
    ...

    // Dagger Hilt
    id 'com.google.dagger.hilt.android' version '2.44' apply false
}

app目录build.gradle

plugins {
    ...

    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}

android {
    ...
    compileSdk 34

    defaultConfig {
        targetSdk 34
       ...
    }
   
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    composeOptions {
        kotlinCompilerExtensionVersion '1.3.2'
    }
}

dependencies {
    ...

    // Dagger-Hilt
    implementation 'com.google.dagger:hilt-android:2.46.1'
    kapt 'com.google.dagger:hilt-android-compiler:2.46.1'
    kapt "com.google.dagger:hilt-compiler:2.44"
    implementation 'androidx.hilt:hilt-navigation-compose:1.0.0'
}

Application类

@HiltAndroidApp
class DOBApp: Application()

Manifest配置

android:name=".DOBApp"

问题原因

核心问题是Hilt相关依赖版本不统一:根目录插件版本为2.44,app模块中implementation版本为2.46.1,还混入了2.44版本的hilt-compiler,版本不一致会导致编译生成的代码不兼容,进而无法正确注入ViewModel。

解决步骤

  1. 统一所有Hilt版本

    • 修改根目录build.gradle中的Hilt插件版本,与app模块依赖版本保持一致(这里统一用2.46.1):
      plugins {
          ...
          // Dagger Hilt
          id 'com.google.dagger.hilt.android' version '2.46.1' apply false
      }
      
    • 修改app目录build.gradle的依赖,移除重复的hilt-compiler依赖(hilt-android-compiler已经包含该功能):
      dependencies {
          ...
          // Dagger-Hilt
          implementation 'com.google.dagger:hilt-android:2.46.1'
          kapt 'com.google.dagger:hilt-android-compiler:2.46.1'
          implementation 'androidx.hilt:hilt-navigation-compose:1.0.0'
      }
      
  2. 清理并重新构建项目
    在Android Studio中执行:

    • Build -> Clean Project
    • Build -> Rebuild Project

完成以上操作后,Hilt就能正确生成注入代码,ViewModel实例可以正常创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:32:50