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

非Android模块通过Hilt提供Retrofit给Android模块时注入失败排查

问题解决:多模块Hilt注入Retrofit出现Missing Binding错误

你的问题出在两个关键地方,都是多模块Hilt配置的常见坑:

1. Network模块的KSP依赖用错了

你当前使用的是ksp(libs.dagger.compiler),但Hilt模块需要用Hilt专属编译器来处理@InstallIn这类Hilt特有的注解,纯Dagger编译器无法识别这些注解,导致你的NetworkModule根本没被Hilt注册到Singleton组件中。

修正:network模块的build.gradle:

plugins {
    id("java-library")
    alias(libs.plugins.jetbrainsKotlinJvm)
    alias(libs.plugins.ksp)
}

dependencies {
    implementation(libs.retrofit)
    implementation(libs.retrofit.moshi.converter)
    implementation(libs.moshi)
    implementation(libs.moshi.kotlin)
    implementation(libs.hilt.core)

    // 替换为Hilt专属编译器
    ksp(libs.hilt.compiler)
    ksp(libs.moshi.codegen)
}

2. 确认App模块的基础配置

  • 确保:app模块已添加对:network模块的依赖:
    dependencies {
        // 其他依赖...
        implementation(project(":network"))
    }
    
  • 确认:app模块自身的Hilt配置正确:
    • 插件中包含alias(libs.plugins.hilt.android)和ksp
    • 存在标注@HiltAndroidApp的Application类
    • 依赖了libs.hilt.android和ksp(libs.hilt.compiler)

问题根源说明

Hilt的@InstallIn注解用于指定模块归属的Hilt组件(比如SingletonComponent),这个注解只能被Hilt编译器处理。你之前使用Dagger编译器,相当于Hilt完全没有识别到NetworkModule的存在,因此ViewModel请求Retrofit时,Hilt找不到对应的绑定,就抛出了Missing Binding错误。

替换为Hilt编译器后,它会正确识别NetworkModule,将Retrofit和Moshi的绑定注册到Singleton组件中,App模块的ViewModel就能正常注入依赖了。

内容的提问来源于stack exchange,提问作者Daniel Bertoldi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:40:56