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

相关推荐
奔跑吧 android18 分钟前
【android bluetooth 协议分析 01】【HCI 层介绍 8】【ReadLocalVersionInformation命令介绍】
android·bluetooth·hci·bt·hcicmd·readlocalver·bt5.3
私人珍藏库18 分钟前
[Android] 安卓彩蛋:Easter Eggs v3.4.0
android
androidwork22 分钟前
Android Kotlin权限管理最佳实践
android·java·kotlin
我命由我123453 小时前
Android 动态申请 REQUEST_INSTALL_PACKAGES 权限问题:申请权限失败
android·java·开发语言·java-ee·android studio·android jetpack·android-studio
追随远方4 小时前
深入解析OkHttp与Retrofit:Android网络请求的黄金组合
android·okhttp·retrofit
nukix5 小时前
Android Studio Kotlin 中的方法添加灰色参数提示
android·kotlin·android studio
飞露5 小时前
android studio clone子分支
android·ide·android studio
吴胜ws5 小时前
Android Studio 中 build、assemble、assembleDebug 和 assembleRelease 构建 aar 的区别
android·ide·android studio
tangweiguo030519875 小时前
Android SwitchButton 使用详解:一个实际项目的完美实践
android
金融数据出海5 小时前
使用PHP对接东南亚、日本、印度和印度尼西亚股票数据源
android·开发语言·php