在AppCompatActivity中使用@AndroidEntryPoint时遭遇DefaultViewModelFactories参数异常,求助Hilt依赖注入问题解决方案
解决Hilt编译错误:
DefaultViewModelFactories.getActivityFactory参数不匹配问题 你遇到的这个编译错误,核心原因是Hilt相关依赖版本不兼容,同时AndroidX组件版本和Hilt的API不匹配,导致生成的Hilt代理类调用了错误的方法签名。下面是具体的修复步骤:
1. 统一Hilt所有依赖的版本
你的配置里存在明显的版本不一致问题:
com.google.dagger:hilt-android:2.36但对应的编译器是kapt 'com.google.dagger:hilt-android-compiler:2.31.2-alpha'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03和kapt 'androidx.hilt:hilt-compiler:1.0.0'版本也不匹配
Hilt的核心库、编译器、gradle插件必须保持版本一致,否则会生成不兼容的代码。
2. 更新AndroidX组件到兼容版本
旧版本的Activity/Fragment和新版Hilt的ViewModel工厂API不兼容,建议更新到稳定且适配的版本,同时移除已废弃的lifecycle-extensions。
修改后的Gradle配置
项目级build.gradle:
buildscript { dependencies { classpath "com.google.dagger:hilt-android-gradle-plugin:2.36" } }
模块级build.gradle:
plugins { id 'com.android.application' id 'kotlin-android' id 'dagger.hilt.android.plugin' id 'kotlin-kapt' } dependencies { // AndroidX Activity/Fragment 适配版本 implementation "androidx.activity:activity-ktx:1.5.2" implementation "androidx.fragment:fragment-ktx:1.6.1" // Lifecycle组件(替换废弃的lifecycle-extensions) implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.5.1" implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" // Hilt核心依赖(版本统一) implementation 'com.google.dagger:hilt-android:2.36' kapt 'com.google.dagger:hilt-android-compiler:2.36' // Hilt ViewModel依赖(稳定版) implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0" kapt "androidx.hilt:hilt-compiler:1.0.0" }
3. 可选:简化AppController实现
如果你的业务不需要自定义Configuration.Provider,可以移除这个实现,避免不必要的代码复杂度:
@HiltAndroidApp public class AppController extends Application { }
4. 清理缓存并重新编译
修改完依赖后,执行File -> Invalidate Caches... -> Invalidate and Restart,彻底清理旧的编译缓存,然后重新构建项目。
这样修改后,Hilt生成的代理类就能正确调用DefaultViewModelFactories.getActivityFactory的匹配方法,解决编译错误。
内容的提问来源于stack exchange,提问作者Ravindra Kushwaha
相关产品推荐
相关产品推荐

