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
相关产品推荐
相关产品推荐

