Now in Android 的 Hilt 组件依赖图

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

组件层级总览

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

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

怎么看这张图

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

各组件详情图直达

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

作用域层级速记

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:

  • 理解 Android 的 baseline-prof.txt 和 startup-prof.txt
  • Hilt / Koin / Knit 对比分析
  • Android 官方 Skills 分析报告
  • ANR-WatchDog、ACRA、Firebase Crashlytics、xCrash 核心原理对比总结
  • Android ViewModel 总结