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

Hilt更新后出现Dagger重复绑定警告,请求解释

Hilt重复绑定警告解析与修复

这个警告的核心是:Dagger/Hilt检测到com.demo.myapp.data.repositories.datastores.AppSettingsRepository存在两个冲突的绑定规则,导致框架无法确定注入时该使用哪个实例。

两种冲突的绑定方式

  • 第一种绑定:你给AppSettingsRepository的构造函数添加了@Inject注解,Hilt会自动将这个类绑定到SingletonC组件(全局单例作用域),意味着整个应用生命周期内只会创建一个实例。
  • 第二种绑定:你在com.demo.myapp.di.modules.RepositoryModule中通过@Provides方法手动提供AppSettingsRepository的实例,并且给这个方法标记了@ViewModelScoped作用域,这个作用域会将实例的生命周期和ViewModel绑定,属于ViewModelC组件。

为什么会触发警告

之前Hilt并未严格校验这类跨作用域的重复绑定,但更新后将其列为警告,后续会升级为错误——因为当需要注入AppSettingsRepository时,Hilt无法判断应该使用全局单例实例,还是与ViewModel生命周期绑定的实例。

修复方案

根据你的业务需求二选一即可:

  1. 保留全局单例:删除RepositoryModule中对应的@Provides方法,仅保留构造函数上的@Inject注解(如果需要确保单例,可给AppSettingsRepository类添加@Singleton注解)。
  2. 保留ViewModel作用域实例:删除AppSettingsRepository构造函数上的@Inject注解,仅保留RepositoryModule中的@Provides方法,确保其@ViewModelScoped作用域配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:21:43