【Android】如何快速熟悉项目

一、UI - 定位

(1)Activity定位

在Android Studio 编辑器中,我们想要在不熟悉的工程里面快速定位到对应的UI界面,可以通过 Terminal 【AIT + F12】终端输入下面的adb命令查看:

csharp 复制代码
adb shell dumpsys activity | findstr "Run"

示例结果:

(2)获取当前显示的视图

第一步:找到SDK路径


第二步:找到uiautomator viewer,它位于SDK下的 \tools\bin 目录下,打开后可以很直观的显示当前视图所有的内容,如下

(3)Layout Inspector

当你需要在某个页面,实现某个功能点,但是却因为项目太大,你连该页面对于的xml文件和java文件都找不到时,就需要用到这个功能了。

先在Android Studio上运行项目,打开到你所需要修改功能的页面。然后在Android Studio上点击Tools -> Layout Inspector。

等layout Inspector加载完成后,就可以看到该页面中所有view的构成情况了,在这里就可以找到我们所需要的布局文件,在这里面随便找到一个相关的布局id,或者一些别的名称。

示例效果:

二、逻辑 - 定位

(1)全局搜索

在Android Studio中,用ctrl+shift+f进行全局搜索(如果快捷键失效,可以点击菜单栏的Edit->Find->Find in Path...)。可以在整个项目中查找指定的名称所在的文件和具体位置,在第一步找到的一些id名或者别的,用全局搜索就可以精确的定位。这样就可以找到目标页面的xml文件。

(2)find usage

在xml文件中,想要定位到指定的java文件,只需要按住ctrl,然后点击资源的名称,就会显示这个资源在哪些地方有被用上,如果长按点击不行,那就右键该资源,点击find Usage即可。

(3)debug断点调试

在找到某个方法,但是又不清楚这个方法的上下文和运行情况的时候,就用断点调试的方式好了,在启用debug后,可以在Android Studio的左下角查看方法运行的堆栈,通过这个可以轻松的获取方法的上下文,有助与我们理解代码。

Android Studio使用Debug的时候,注意不要直接点击Debug的按钮,因为debug的运行速度较慢,加上APP刚启动时需要初始化一些内容,直接debug启动app可能会造成应用卡死。

用Attach Debugger to Android Porcess按钮,他可以在app跑到一半的时候,转变成debug模式。

三、工程 - 定位

(1) 熟悉流程

先打开项目app的测试版(一般都会有),进去把app内每个按钮都点一下,每一个流程都先过一遍。

(2)查看主要的Activity和Fragment

Activity和Fragment是所有逻辑的起点,在对流程有一定的熟悉之后,就要去查看不同页面所在的Activity或者Fragment,然后在剩下的时间再看看页面布局,看看大部分Activity中是否用上了Fragment,用的时候都用在了哪一部分。

前期无论是遇到什么需求,都要以页面作为起点去分析逻辑

(3)查看当前Activity

如果项目比较规范,有一个比较完整的BaseActivity的话,可以在BaseActivity的onCreate方法或者onResume方法前,打上一句log,内容填getClass.getName()。这样当你打开新的Activity时,你只要在Logcat中进行过滤,就可以很轻易的知道当前Activity类所在的地址了

(4) 查看当前Fragment

1、项目比较规范,在BaseFragment中用log打印getClass().getName(),在点一遍app,就可以知道Fragment具体挂在哪个Activity下或者在哪里有复用了,和Activity一起打印,更容易知道两者之间的层级关系。

2、项目比较乱,在Fragment类中对onCreate()方法设置断点,用debug的方式打开项目。就可以一个个查看了。

参考材料:

https://blog.csdn.net/qq_41872247/article/details/106467123

https://blog.csdn.net/qq_41872247/article/details/116456260

相关推荐
Kapaseker1 天前
Compose 进阶—巧用 GraphicsLayer
android·kotlin
黄林晴1 天前
Android17 为什么重写 MessageQueue
android
阿巴斯甜2 天前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker2 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95272 天前
Andorid Google 登录接入文档
android
黄林晴2 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab2 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿3 天前
Android MediaPlayer 笔记
android
Jony_3 天前
Android 启动优化方案
android
阿巴斯甜3 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android