Hilt报错:无法提供App类,缺少@Inject构造或@Provides方法
Hilt注入错误:App类无法提供的解决方案
错误原因
你碰到的Dagger/MissingBinding错误,本质是Hilt找不到com.example.assignment.App的注入实例。尽管你给自定义的App类加了@HiltAndroidApp注解,但Hilt默认只会自动提供Application或Context类型的实例,不会直接识别你自定义的App类作为可注入类型。
解决方案
有两种可行的修复方式:
方式一:改用Application作为依赖参数
直接把provideDatabase方法的参数从App替换成Application,Hilt可以自动注入这个类型的实例:
@Provides @Singleton fun provideDatabase(app: Application) = Room.databaseBuilder(app, AppDatabase::class.java, "app_database").build()
方式二:让Hilt能识别自定义App类
如果你必须依赖自定义的App类,可以二选一:
- 给
App类添加@Inject构造函数:
@HiltAndroidApp class App : Application() { @Inject constructor() : super() }
- 在
AppModule中添加一个提供App实例的方法:
@Module @InstallIn(SingletonComponent::class) object AppModule { // 其他方法保持不变 @Provides @Singleton fun provideApp(app: Application): App = app as App }
后续验证
修改完成后,执行Clean Project再Rebuild Project,确保Hilt重新生成注入代码。同时检查gradle配置中Hilt相关依赖是否正确引入。
内容的提问来源于stack exchange,提问作者jane
相关产品推荐
相关产品推荐

