Dagger Hilt无法在HiltWorker中注入依赖的问题求助
问题根源
错误日志明确提示找不到Worker的(Context, WorkerParameters)构造方法——这是WorkManager默认创建Worker时依赖的仅含Context和WorkerParameters的构造。但使用@AssistedInject后,Worker必须由HiltWorkerFactory实例化,而当前WorkManager未正确关联该工厂,仍尝试用默认逻辑创建Worker,自然找不到对应构造方法(添加Repository参数后,默认构造已不存在)。
修复步骤
确认WorkManager默认启动器完全禁用
已在Manifest中移除WorkManagerInitializer,需确保代码中没有手动调用WorkManager.initialize(),完全交由Application类的Configuration.Provider实现处理WorkManager初始化。清理并重构项目
kapt生成的代码可能存在缓存问题,执行Clean Project+Rebuild Project,确保Hilt生成的Worker工厂代码正确更新。对齐依赖版本
当前hilt-work:1.0.0与hilt-android:2.47版本不兼容,需将hilt-work和hilt-compiler升级至适配版本,同时将hilt-navigation-compose替换为稳定版:implementation ("com.google.dagger:hilt-android:2.47") kapt("com.google.dagger:hilt-android-compiler:2.47") // 升级为稳定版 implementation("androidx.hilt:hilt-navigation-compose:1.1.0") implementation("androidx.work:work-runtime-ktx:2.8.1") // 对齐Hilt版本的hilt-work implementation("androidx.hilt:hilt-work:1.1.0") kapt("androidx.hilt:hilt-compiler:1.1.0")验证Application类注册
确保AppInstance类已在Manifest中正确注册为应用的android:name属性值:<application android:name=".AppInstance" ...> ... </application>清除WorkManager缓存
卸载应用后重新安装,或在开发者选项中清除应用存储,避免之前错误的WorkRequest残留影响测试结果。
内容的提问来源于stack exchange,提问作者Евгений s

