mcpField
A
android-di-hilt

android-di-hilt

github.com/krutikjain开发14358 次安装31 周前更新
代码仓库

关于 android-di-hilt

面向 Android 开发的 Hilt 依赖注入技能,帮助 Agent 规划绑定、组件作用域、模块边界和测试替换。适用于注入图所有权或生命周期设计存在疑问的场景。

主要功能

  1. 01规划组件与依赖作用域
  2. 02选择绑定和注入方式
  3. 03配置测试替换与伪实现
  4. 04审查模块所有权边界

适用场景

  1. 01为 ViewModel 注入 Repository
  2. 02为依赖选择合适的 Hilt 作用域
  3. 03在测试中替换依赖
  4. 04检查跨模块绑定的归属

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/krutikjain/android-agent-skills --skill android-di-hilt

安装后在 Claude Code 中输入/android-di-hilt确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
official-links.md
patterns.md
scenarios.md
scripts/
run_examples.sh

详细介绍

Android DI Hilt

适用场景

  • 当请求涉及以下内容时使用此技能:Android Hilt 配置、注入 ViewModel 和 Repository、在 Android 中管理依赖项作用域。
  • 主要目标:使用 Hilt 配置 Android 依赖注入、作用域、测试替换项和模块所有权边界。
  • 当难点在于组件所有权、绑定、作用域、入口点或测试替换时,使用此技能。如果请求仅涉及网络 API 或 reducer 设计,请改用相邻技能。
  • 当范围扩大时,移交给以下技能:
  • android-testing-unit
  • android-networking-retrofit-okhttp

工作流

  1. 首先确定注入边界:应用级单例、Activity 保留范围、ViewModel、Worker、Service,或来自不受支持的框架代码的入口点。
  2. 确定要绑定的内容:构造函数注入、@Binds、@Provides、限定符、多重绑定或辅助注入。
  3. 明确匹配生命周期与作用域,避免依赖项的生命周期超出其所有者,或过于频繁地重新创建。
  4. 使用 Hilt 测试模块、卸载模块,或在合适的组件边界使用 fake,确认测试替换策略。
  5. 只有在 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 相关工作移交处理,而不是塞进模块中。

官方参考资料

评论

支持 Markdown