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

多模块Android应用中Hilt因双Application类引发依赖注入异常

多模块Android应用中Dagger Hilt的Application冲突解决方案

核心结论

不能直接指定Hilt使用第二个模块的Application类,因为Android应用运行时仅能存在一个Application子类实例,该实例由AndroidManifest.xml中<application>标签的android:name属性决定。你当前运行的是主模块的AndroidAppApplication,而第二个模块标注@HiltAndroidApp的SecondModule并未被系统初始化,因此Hilt检测到当前Application未被@HiltAndroidApp标记,触发报错。

可行解决方案

方案1:统一使用主模块Application作为Hilt入口

  • 删除第二个模块中SecondModule类的@HiltAndroidApp注解
  • 在主模块的AndroidAppApplication类上添加@HiltAndroidApp注解
  • 确保第二个模块中需要依赖注入的组件(如Activity、Fragment)添加@AndroidEntryPoint注解,同时模块内的依赖注入模块(@Module标注的类)通过@InstallIn指定合适的组件作用域(如SingletonComponent、ActivityComponent等)

方案2:让第二个模块可独立运行(作为单独App)

  • 为第二个模块创建独立的AndroidManifest.xml,在其中将android:name指定为第二个模块的SecondModule类
  • 配置构建变体,编译时根据需求选择主模块或第二个模块的Application配置,实现两个模块各自独立运行

关键注意事项

  • 所有标注@AndroidEntryPoint的组件,其依附的Application必须被@HiltAndroidApp标注,这是Hilt的强制规则
  • 多模块架构下,@HiltAndroidApp仅需在根App模块(主模块)配置一次,其他功能模块只需提供@Module形式的依赖配置,无需重复声明@HiltAndroidApp类

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:20:30