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

Jetpack Compose中Dagger Hilt注入依赖时无法创建ViewModel实例

解决Jetpack Compose中Dagger Hilt注入ViewModel依赖失败的问题

1. 统一Hilt核心库与编译器版本

你的版本目录里hiltAndroid(2.51.1)和hiltAndroidCompiler(2.48)版本不匹配,这是导致注入失败的核心原因。Hilt要求核心库和编译器版本严格一致,否则生成的注入代码会出现兼容性问题。

修改版本目录中的hiltAndroidCompiler版本,和hiltAndroid保持一致:

[versions]
...
hiltAndroid = "2.51.1"
hiltAndroidCompiler = "2.51.1"
...

2. 给Application类添加@HiltAndroidApp注解

Hilt必须通过标记了@HiltAndroidApp的Application类初始化依赖注入框架,这是Hilt工作的必要前提。如果还没创建对应的Application类,需要补上:

import android.app.Application
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class MyApplication : Application()

同时在AndroidManifest.xml中指定这个Application:

<application
    android:name=".MyApplication"
    ...>
    ...
</application>

3. 清理并重建项目

版本修改和配置调整后,需要清理项目缓存并重新构建,确保Hilt生成正确的注入代码:

  • 点击Android Studio顶部菜单栏的Build -> Clean Project
  • 再点击Build -> Rebuild Project

额外检查项

  • 确认Sample类的构造器可访问:Kotlin顶层类的构造器默认是public,如果你把Sample放在内部类中,需要确保它的构造器是public或者内部类是inner类型(推荐把依赖类放在顶层包下)。
  • 确认MainActivity的@AndroidEntryPoint注解正确添加,且页面是通过Compose的setContent加载,没有混合传统View系统导致的上下文异常。

完成以上步骤后重新运行应用,Hilt应该能正确将Sample注入到GameViewModel中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:25:58