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

Android中Hilt DI注入自定义对象到WorkerManager失败求助

解决Hilt注入自定义对象到Worker失败的问题

问题分析

当给BackgroundWorker添加MockClass依赖注入后,Worker无法初始化并失败,但移除该注入后Worker正常运行。核心原因是Hilt无法正确生成Worker的工厂代码,导致WorkManager无法创建Worker实例,大概率是注解处理器依赖缺失或配置遗漏。

修复步骤

1. 补充AndroidX Hilt注解处理器依赖

@HiltWorker注解由AndroidX Hilt提供,需要对应的注解处理器生成必要的工厂代码。你当前只添加了Dagger Hilt的编译器,缺少AndroidX Hilt的编译器依赖。

修改libs.versions.toml

添加AndroidX Hilt编译器的版本和依赖配置:

[versions]
# ... 原有版本
hiltAndroidxCompiler = "1.2.0"

[libraries]
# ... 原有依赖
hilt-androidx-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltAndroidxCompiler" }

修改模块级build.gradle.kts

在dependencies块中添加AndroidX Hilt的KSP依赖:

dependencies {
    // ... 原有依赖
    ksp(libs.hilt.androidx.compiler)
}

2. 清理并重建项目

注解处理器生成的代码可能存在缓存问题,执行以下操作:

  • 点击Android Studio菜单栏的Build > Clean Project
  • 然后点击Build > Rebuild Project

3. 验证依赖兼容性

确保依赖版本匹配(你的当前配置已符合要求):

  • Kotlin 2.1.0 对应 KSP 2.1.0-1.0.29
  • Dagger Hilt 2.55 与 AndroidX Hilt 1.2.0 完全兼容

验证修复

重新运行应用,启动Worker后,查看Logcat是否输出Worker: Initiated和Worker: Doing work!,同时在App Inspector中确认Worker状态为Succeeded。

额外检查点

如果问题仍存在,可排查:

  • 确认MockModule的@Provides方法正确标注@Singleton,MockClass无特殊构造要求
  • 在MyApplication的onCreate中添加日志验证WorkerFactory注入状态:
    override fun onCreate() {
        super.onCreate()
        Log.d("deb", "WorkerFactory injected: ${::workerFactory.isInitialized}")
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:54:49