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

Android Dagger Hilt升级后报DefaultViewModelFactories.getActivityFactory参数不匹配错误

解决方案

1. 确保所有Hilt依赖版本完全对齐

首先检查项目中所有Dagger Hilt相关依赖的版本完全一致,包括项目根目录build.gradle中引入的Hilt插件版本,和app模块build.gradle中引入的hilt-android、hilt-android-compiler版本必须完全相同,避免版本不兼容导致的生成类异常。
示例配置参考:
根目录build.gradle.kts

plugins {
    id("com.google.dagger.hilt.android") version "2.51.1" apply false
}

app模块build.gradle.kts

plugins {
    id("kotlin-kapt")
    id("dagger.hilt.android.plugin")
}

dependencies {
    implementation("com.google.dagger:hilt-android:2.51.1")
    kapt("com.google.dagger:hilt-android-compiler:2.51.1")
}

注意:Hilt 2.40及以上版本已经内置了ViewModel注入支持,不需要额外引入废弃的hilt-lifecycle-viewmodel依赖,如有引入请直接删除。

2. 检查ViewModel注解写法是否适配新版本

旧版本Hilt支持的@ViewModelInject注解已经在2.31版本后正式移除,新版本要求所有需要注入的ViewModel必须添加@HiltViewModel注解,构造函数使用@Inject注解:

@HiltViewModel
class SampleViewModel @Inject constructor(
    private val sampleRepository: SampleRepository
) : ViewModel() {
    // 业务逻辑
}

3. 检查承载页的注解配置

所有使用注入ViewModel的Activity、Fragment必须添加@AndroidEntryPoint注解,同时不要手动为ViewModel传入自定义Factory,直接使用KTX扩展by viewModels()获取实例即可:

@AndroidEntryPoint
class SampleActivity : AppCompatActivity() {
    private val viewModel: SampleViewModel by viewModels()
    // 页面逻辑
}

4. 适配高版本Hilt的环境要求

如果你升级到Hilt 2.45及以上版本,需要同步升级项目的Java编译版本到17,在app模块build.gradle中添加如下配置:

android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = "17"
    }
}

5. 清理缓存重新构建

Hilt的自动生成类很容易出现缓存残留问题,升级依赖后依次执行如下操作:

  • 点击菜单栏 Build → Clean Project
  • 点击 Build → Rebuild Project
  • 如仍报错可手动删除项目根目录下的build文件夹、app/build文件夹和.idea文件夹,重启Android Studio后重新构建项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 08:45:04