源码阅读小技巧 | AndroidStudio 类型篇

1. 前言

鉴于很多朋友在阅读小册,对研究源码时 AndroidStudio 如何调出相关面板有所疑惑,这里就专门写篇文章来介绍一下 AndroidStudio 阅读源码的小技巧。阅读源码的小技巧不单单是看底层源码,应用层的源码也依然适用,比如你接手了一个项目,也需要去阅读源码。

由于不同平台或者个人的快捷键不同,所以这里不以快捷键为主,而是让大家知道对应的菜单是什么。快捷键可以自己修改,但菜单栏不会变动。另外,菜单栏中一般也会有对应的快捷键,大家自行查看即可。比如下面的查询类型在 Navigate/Class... , 在我的 AndroidStudio 里对应的快捷键是 Ctrl+N :


1. 类型层次关系 Type Hierarchy

菜单位置 : Navigate/Type Hierarchy

激活条件 : 光标停留在类名上,或停留在类的区域内

AndroidStudio 的菜单有些需要激活条件,下图中圆圈标记了三个位置,示意鼠标的光标。其中 1 点在类型定义之外,此时 Type Hierarchy 菜单就不会激活。

在 2 点时鼠标光标在 Widget 名称上,菜单会激活,点击菜单项会弹出 Hierarchy 面板,会展示 Widget 类在源码中的类型层次关系。这样你就可以很方便地看到它的父类以及所有的子类型,对整体的继承结构有一个宏观的认知。另外,面板中的每个条目都可以通过双击跳转到对应的源码位置。

在类型源码中的任意其他位置,点击菜单,会展示当前类在源码中的类型层次关系。比如上面的 3 点, Hierarchy 面板展示的是 StatefulWidget 的层次关系。


2. 方法层次关系:Method Hierarchy

菜单位置 : Navigate/Method Hierarchy

激活条件 : 光标停留在方法名上

在阅读源码中,方法的继承关系也是一个非常重要的信息。在一个类型的派生过程中,子类可以复写父类的方法来拓展自己额外的功能。但你一般很难确定,哪个子类型沿用了父类方法处理,哪个子类型有自己的定制化逻辑。

Method Hierarchy 就可以轻松地让你了解该方法在继承体系中的表现。如下是 Route#install 方法的层次关系,双击类名条目可以进入对应的类型中。

大家也许注意到了,类名前有 加号 或者 减号。其中比如 TransitionRoute 左侧有加号,说明 install 方法在该类中进行了复写。进入之后会发现 TransitionRoute#install 方法中,额外实现了动画控制器的创建和状态监听的逻辑,也就是路由跳转过程中动画驱动力的根源。

另外,类名前的 减号 表示该类没有复写父类的该方法,这样在研究 install 方法在源码中的作用时,带减号的类型就可以忽略了。


3. 方法调用关系:Call Hierarchy

菜单位置 : Navigate/Call Hierarchy

激活条件 : 光标停留在方法名上

有时候我们期望知道方法是在哪里被调用的,这时通过调用层次来查看。比如对于 Route#install 方法,右侧面板中第一层是该方法的调用者,一共有五处,双击条目就可以跳转到对应的方法中。

另外条目可以进行展开,来查看调用的上一层级。比如下面的第一条展开的内容,就可以看到源码中哪些地方调用了 _RouteEntry.handlePush,以此类推。


4. 类型结构:Structure

类型结构在源码分析中是一个非常重要面板,它可以让你迅速查看一个类的信息,类的构造、成员、方法都能一目了然,从而对整体有个认知。

其中条目的左侧图标有一些小细节,下面统一整理介绍一下。对应 Flutter 而言:

  • 类型图标
普通类 抽象类/mixin 枚举 typedef
  • 字段(成员)图标
普通成员 final 不可变成员 static 静态成员 static 常成员
  • 方法图标
普通方法 抽象方法 get 方法 set 方法

5. 快捷查看的浮窗

另外关于类型有些操作的方式,可以弹出浮窗,可以更便捷的查看一些信息:


Navigate/Implementations 可以弹出浮窗,从而可以看到方法在子类中的实现情况:除了快捷键,Windows 中可以通过 Ctrl + Alt + 鼠标单击弹出:


Navigate/Declaration or Usages 可以弹出浮窗,从而可以看到方法在的调用情况:除了快捷键,Windows 中可以通过 Ctrl + 鼠标单击弹出:


Navigate/File Strcture 可以弹出当前文件中类型的结构,相当于浮窗版的 Structure 。

Navigate/File Path 可以弹出当前文件在计算机的磁盘位置,点击条目可以进入对应的文件夹中:


这就是在阅读源码时,AndroidStudio 编辑器可以给我们的一些类型相关的辅助。希望这些可以在你阅读源码的过程中,可以对你有所帮助。处理类型以外,源码阅读过程中也有其他方面的小技巧,在后面的文章再来介绍。那感谢观看,下次再见 ~

相关推荐
hunterandroid1 小时前
[Android 从零到一] Compose LazyColumn 性能优化:key、稳定性与重组治理
android·前端
pengyu1 小时前
【Kotlin 协程修仙录 · 元婴境 · 中阶】 | 操作符真解:Flow 中间操作符与数据流变幻术
android·kotlin
pengyu2 小时前
【Kotlin 协程修仙录 · 元婴境 · 初阶】 | 冷流初啼:Flow 的基础与响应式编程的入门
android·kotlin
wawo002 小时前
Kuikly实践-从Android compose迁移到kuikly compose
android
程序员老刘3 小时前
跨平台开发地图 | 2026年8月
flutter·ai编程·客户端
Carson带你学Android4 小时前
Android 版 MCP 正式登场:AppFunctions
android·ai编程·jetbrains
古法安卓7 小时前
Android-Direct Boot 阶段与 getFilesDir() 路径变更问题深度分析
android·java·android studio
阿巴斯甜7 小时前
Android Studio Detekt 使用
android
杉氧8 小时前
Flutter 跨平台多端适配与 Android/iOS 一键自动化打包发布
android·前端·flutter
Super 含8 小时前
Android 包体积优化(一):APK 到底大在哪里?从 APK 结构到体积分析
android·ide·vscode