Now in Android 的 Hilt 组件依赖图

本文用 Scabbard 为 Now in Android 生成的 Hilt 组件依赖图,直接以交互形式嵌入。图由 Hilt 在编译期生成的组件源码导出,如实反映 NiaApplication 的组件层级与作用域关系。

组件层级总览

下面这张是总览树,展示了 NiA 中全部 Hilt 组件的父子关系与作用域。点击任意节点会在新标签页满屏打开该组件的完整依赖详情图。

想要更大视野?↗ 在新标签页全屏打开,可自由缩放滚动。

怎么看这张图

  • 节点:每个方框是一个 Hilt 组件,上方标注其作用域注解(如 @Singleton、@ActivityRetainedScoped、@ViewModelScoped 等)。
  • 连线方向:箭头表示父组件 → 子组件的派生关系。
  • 交互:点击任意连线会高亮它所在的完整依赖链(上游调用方 + 下游依赖);实心脉冲的那条是当前锚点。点其他连线可换锚点,点空白处清除高亮。
  • 下钻:点节点跳到对应组件(如 SingletonC、ViewModelC)的详情图,查看该组件内部的具体绑定与提供者。

各组件详情图直达

SingletonC、ViewModelC 等组件的详情图较大,在上方内嵌窗口里会偏小。下面的链接会在新标签页以满屏方式打开对应大图(可自由缩放滚动):

作用域层级速记

NiA 的组件层级从上到下依次是:

SingletonC (@Singleton)
└── ActivityRetainedC (@ActivityRetainedScoped)
    ├── ServiceC (@ServiceScoped)
    ├── ActivityC (@ActivityScoped)
    └── ViewModelC (@ViewModelScoped)
        ├── FragmentC (@FragmentScoped)
        │   └── ViewWithFragmentC (@ViewScoped)
        └── ViewC (@ViewScoped)

越靠上的组件生命周期越长、可见范围越大;子组件能注入父组件提供的所有绑定,反之不行。这也是排查「为什么这个依赖在这里注入不到」时的第一张参考图。




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • LLM 能力认知差距:观点分析与事实核查
  • DHH Rails World 2026 Opening Keynote
  • Codex CLI 快捷键参考(macOS)
  • 我们总把别人的片段拼凑成理想的自己,却忘了当下的自己已经是生命奇迹
  • 【AI时代的阿德勒心理学】访谈《被讨厌的勇气》作者岸见一郎