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

Android Dagger-Hilt忽略@Provides方法 无法注入ApiService报错如何解决

问题原因

该报错本质是Hilt无法匹配到provideLoginRepository方法所需的ApiService依赖,因此判定该提供方法无效,最终抛出LoginRepository无法提供的错误,常见触发原因如下:

  • 类导入不一致:NetworkModule中provideApiService返回的ApiService,与RepositoryModule中参数声明的ApiService不是同一个包下的同名类,Hilt无法匹配类型
  • 跨模块Hilt配置缺失:如果NetworkModule定义在独立的Library模块中,该模块未正确引入Hilt注解处理器依赖,导致模块对外暴露的提供方法无法被主模块的Hilt识别
  • 注解导入错误:@Module、@Provides等Hilt核心注解错误导入了其他库的同名注解,导致Hilt没有识别到NetworkModule是合法的DI模块
  • 构建缓存异常:注解处理器的构建缓存损坏,导致NetworkModule的提供方法没有被Hilt生成的代码收录
解决步骤

按照以下顺序排查即可解决问题:

  1. 校验类导入一致性
    分别检查两个Module文件中ApiService的import语句,确认路径完全一致,不存在导错不同模块下同名类的问题。
  2. 校验跨模块Hilt配置
    如果NetworkModule在独立子模块中,需要确保子模块的构建配置和主模块对齐:
    子模块build.gradle.kts必须添加如下配置(Groovy配置对应调整即可):
    plugins {
        id("com.google.dagger.hilt.android")
        kotlin("kapt")
    }
    
    android {
        // 开启kapt错误类型校正,避免跨模块类识别异常
        kapt {
            correctErrorTypes = true
        }
    }
    
    dependencies {
        // Hilt版本和主模块保持完全一致
        implementation("com.google.dagger:hilt-android:2.44")
        kapt("com.google.dagger:hilt-android-compiler:2.44")
    }
    
  3. 校验注解导入正确性
    确认两个Module的注解都来自正确的包:
    • @Module 导入自 dagger.Module
    • @InstallIn 导入自 dagger.hilt.InstallIn
    • @Provides 导入自 dagger.Provides
    • @Singleton 导入自 javax.inject.Singleton
  4. 清理缓存重建项目
    依次执行:
    • 点击Android Studio菜单栏 Build -> Clean Project
    • 关闭Android Studio,删除项目根目录下的.gradle、.idea文件夹
    • 重新打开项目执行 Build -> Rebuild Project

内容的提问来源于stack exchange,提问作者Vojtěch Hořánek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:27:02