Android项目Dagger Hilt报错:无法处理SingletonC组件
解决Hilt编译错误:无法解析
dagger.hilt.android.internal.lifecycle.DefaultActivityViewModelFactory 问题根源
这个编译错误的核心原因有两个:
- 缺少AndroidX Hilt ViewModel依赖:
androidx.hilt.lifecycle.ViewModelFactoryModules属于AndroidX Hilt扩展库,而非核心Hilt库,你当前的依赖配置中未引入该库,导致注解处理器无法找到相关类。 - 版本兼容性冲突:你使用的Hilt 2.44发布于2022年,不支持Kotlin 2.0.10版本,注解处理器无法正常解析Hilt内部注解类。
分步解决方案
1. 补充AndroidX Hilt ViewModel依赖
在app/build.gradle的dependencies块中添加以下依赖,版本需与核心Hilt版本对齐:
// AndroidX Hilt ViewModel扩展支持 implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0" kapt "androidx.hilt:hilt-compiler:1.0.0"
2. 升级Hilt到兼容Kotlin 2.0的版本
将Hilt版本从2.44升级到2.50+(该版本开始支持Kotlin 2.0),修改versions.gradle中的版本配置:
// versions.gradle中更新版本号 library_versions.dagger_hilt = "2.50" plugin_versions.hilt = "2.50"
3. 彻底清理并重建项目
执行以下Gradle命令清除缓存后重新编译:
./gradlew clean ./gradlew assembleDebug
修改后验证
更新后的app/build.gradle依赖块示例:
dependencies { implementation "com.google.dagger:hilt-android:$library_versions.dagger_hilt" kapt "com.google.dagger:hilt-compiler:$library_versions.dagger_hilt" // 新增AndroidX Hilt依赖 implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0" kapt "androidx.hilt:hilt-compiler:1.0.0" implementation "com.mrpg.mobile:pos-shared-library:$library_versions.mrpg_pos_shared" }
额外注意事项
- 若升级后仍有问题,建议将
composeOptions中的kotlinCompilerExtensionVersion升级到1.5.10,确保与Kotlin 2.0.10兼容 - 所有Hilt相关依赖(核心库、Gradle插件、AndroidX扩展)必须保持版本一致,避免版本碎片化引发的解析错误
内容的提问来源于stack exchange,提问作者Bradley Deans
相关产品推荐
相关产品推荐

