​​

背景

做开发最痛苦的事情,不是写代码,是看别人的代码,看老代码. 写个功能,刷刷就完了,要看懂别人的代码,就想骂娘.但是作为开发进入一个老项目时,又不得不熟悉老代码.那怎么样才能最快的熟悉呢? 安卓开发里要了解老项目时,一般先从UI开始,一边在手机上把app跑起来熟悉界面,一边看代码.那么怎么找到当前浏览界面对应的代码呢? 大多数情况下,可见界面是一个activity,有时主体是fragment.本文介绍这个点.

一、查看当前界面所属activity
  1. BaseActivity里打断点
    一般的工程都会自定义一个BaseActivity,其他activity都是从这个继承的.基于这一点,可以在BaseActivity的onCreate方法里打断点即可.
    如何用最快的速度熟悉安卓项目老代码_安卓开发
  2. AppCompatActivity或更底层基类打断点
    如果工程里没有定义统一的BaseActivity,或者只有部分activity继承了BaseActivity,那可以在activity的基类AppCompatActivity或更底层基类onCreate方法中打断点.
    如何用最快的速度熟悉安卓项目老代码_github_02
  3. 使用查看当前最前端activity的app
    该项目地址:​​https://github.com/sinawangnan7/CurrentActivity​app下载地址
    效果:
    如何用最快的速度熟悉安卓项目老代码_github_03
二、查看当前界面所属fragment

类似activity的查看方式,在BaseFragment或者更底层的基类中onViewCreated方法打断点.

  1. BaseFragment里打断点
    一般的工程都会自定义一个BaseFragment,其他fragment都是从这个继承的.基于这一点,可以在BaseFragment的onViewCreated方法里打断点,然后在Debug面板中切换到“Variables”查看this的值即可.
    如何用最快的速度熟悉安卓项目老代码_下载地址_04
  2. Fragment或更底层基类打断点
    如果工程里没有定义统一的BaseFragment,或者只有部分fragment继承了BaseFragment,那可以在fragment的基类或更底层基类中onCreateView方法中打断点,然后在Debug面板中切换到“Variables”查看this的值即可.
    如何用最快的速度熟悉安卓项目老代码_自定义_05
三、查找界面元素对应的xml文件
  1. 根据界面显示的文字直接到工程里搜索.
    适用于具有特点的文字字符串,并且不是拼接的那种.
  2. 通过uiautomatorviewer查看界面元素对应的控件id,再根据id到代码中查找.
    适用于控件设置了id,并且id唯一.
    运行安卓sdk自带的uiautomatorviewer(sdk/tools/bin目录下)命令工具.resource-id的最后一部分(斜线后面部分)就是控件id.
    如何用最快的速度熟悉安卓项目老代码_github_06