关于 android-di-hilt
面向 Android 开发的 Hilt 依赖注入技能,帮助 Agent 规划绑定、组件作用域、模块边界和测试替换。适用于注入图所有权或生命周期设计存在疑问的场景。
主要功能
- 01规划组件与依赖作用域
- 02选择绑定和注入方式
- 03配置测试替换与伪实现
- 04审查模块所有权边界
适用场景
- 01为 ViewModel 注入 Repository
- 02为依赖选择合适的 Hilt 作用域
- 03在测试中替换依赖
- 04检查跨模块绑定的归属
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ krutikjain/ android-agent-skills --skill android-di-hilt安装后在 Claude Code 中输入/android-di-hilt确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/official-links.mdpatterns.mdscenarios.mdscripts/run_examples.sh详细介绍
Android DI Hilt
适用场景
- 当请求涉及以下内容时使用此技能:Android Hilt 配置、注入 ViewModel 和 Repository、在 Android 中管理依赖项作用域。
- 主要目标:使用 Hilt 配置 Android 依赖注入、作用域、测试替换项和模块所有权边界。
- 当难点在于组件所有权、绑定、作用域、入口点或测试替换时,使用此技能。如果请求仅涉及网络 API 或 reducer 设计,请改用相邻技能。
- 当范围扩大时,移交给以下技能:
android-testing-unitandroid-networking-retrofit-okhttp
工作流
- 首先确定注入边界:应用级单例、Activity 保留范围、ViewModel、Worker、Service,或来自不受支持的框架代码的入口点。
- 确定要绑定的内容:构造函数注入、
@Binds、@Provides、限定符、多重绑定或辅助注入。 - 明确匹配生命周期与作用域,避免依赖项的生命周期超出其所有者,或过于频繁地重新创建。
- 使用 Hilt 测试模块、卸载模块,或在合适的组件边界使用 fake,确认测试替换策略。
- 只有在 DI 图的所有权关系正确后,才移交与 API 相关或架构相关的问题。
护栏
- 对于由你负责的应用代码,优先使用构造函数注入。
- 有目的地使用限定符和作用域注解;绑定不明确是依赖图的异味,而不是便利之举。
- 将 Hilt 模块放在其所配置的所有权边界附近。
- 将测试替换视为设计的一部分,而非事后补充。
反模式
- 为了回避作用域问题,把所有内容都标记为
@Singleton。 - 当构造函数注入已足够时,仍将业务构造逻辑隐藏在庞大的
@Provides方法中。 - 将 Hilt 模块用作跨模块、存放无关绑定的杂物堆。
- 混淆 DI 图的所有权与应用架构的所有权。
审查重点
- 组件与作用域是否匹配。
- 绑定方式与限定符是否明确。
- 不受支持的入口点桥接方式及测试替换策略。
- 功能模块与核心代码之间的模块所有权边界。
示例
正常流程
- 场景:为 OrbitTasks 的 Repository 和 Dispatcher 注入依赖,并明确设置 Hilt 作用域。
- 命令:
cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest
边缘情况
- 场景:在 XML fixture 中替换为 fake 依赖,以便进行确定性测试。
- 命令:
cd examples/orbittasks-xml && ./gradlew :app:testDebugUnitTest
故障恢复
- 场景:及时捕获特定于 DI 的提示,避免偏离到 architecture-clean 或网络相关内容。
- 命令:
python3 scripts/eval_triggers.py --skill android-di-hilt
完成检查清单
- 组件生命周期与依赖项生命周期相匹配。
- 绑定方式明确且可测试。
- 已在合适的依赖图边界规划测试替换项或 fake。
- 将非 DI 相关工作移交处理,而不是塞进模块中。
官方参考资料
- https://developer.android.com/training/dependency-injection/hilt-android
- https://developer.android.com/training/dependency-injection/hilt-testing
- https://developer.android.com/training/dependency-injection/hilt-multi-module
- https://developer.android.com/topic/libraries/architecture/viewmodel
- https://developer.android.com/training/dependency-injection/manual
评论
支持 Markdown