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

HiltViewModel编译报错:类应包含恰好一个@Inject或@AssistedInject注解的构造函数

HiltViewModel编译报错:类应包含恰好一个@Inject或@AssistedInject注解的构造函数

嘿,我之前也踩过这个坑!明明代码看起来完全符合要求,却报这个错,真的挺让人困惑的。咱们来一步步排查可能的问题:

首先先看你给出的代码:

@HiltViewModel
class SplashViewModel @Inject constructor() : ViewModel() {

}

从代码本身来看,确实是符合HiltViewModel的要求——只有一个被@Inject注解的构造函数,所以问题大概率出在配置或者缓存上。

下面是几个我亲测有效的排查方向:

  • 确认Application类的Hilt注解:Hilt需要一个标注了@HiltAndroidApp的Application类作为依赖注入的入口,如果没加这个注解,注解处理器会出现异常。你可以检查下你的Application类是不是像这样:

    @HiltAndroidApp
    class YourApp : Application() {
        // 这里可以写自定义初始化逻辑
    }
    

    别忘了还要在AndroidManifest.xml里指定这个Application类哦。

  • 检查Hilt依赖和插件版本一致性:Hilt的gradle插件和库依赖版本必须完全匹配,版本不兼容很容易导致各种奇怪的注解处理错误。比如如果你的插件版本是2.48,那hilt-android、hilt-viewmodel这些依赖的版本也得是2.48。

  • 清理缓存并重建项目:Android Studio的注解处理器缓存有时候会抽风,导致明明代码没问题却报错。你可以试试:

    1. 点击菜单栏的Build -> Clean Project
    2. 然后Build -> Rebuild Project
    3. 如果还不行,就File -> Invalidate Caches...,勾选选项后重启AS
  • 确认没有多余的构造函数:虽然你贴的代码里只有一个构造函数,但如果之前不小心写了重载构造函数没删掉,哪怕是注释掉的,有时候也会影响注解处理器(不过这个情况比较少见),可以再仔细检查下类里的构造函数。

按照上面的步骤排查下来,应该就能解决这个报错了!

备注:内容来源于stack exchange,提问作者Roy Welles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:28:00