文章列举了一些我平时开发经常用到的一些命令或者日志,帮助排查问题或者解决问题。
1. ActivityTaskManager
这个是系统提供的Tag(logcat用这个tag过滤),在高版本上是“ActivityTaskManager”,低版本是“ActivityManager”,简直太好用了。
使用场景如下:
- 定位当前页面Activity是哪个类
例如我打开了招商银行App,日志就显示了打开的是哪个Activity,还需要用Displayed来过滤下日志,同时也能看到这个页面创建时间。
- Activity打开方式
如果想知道XXX应用push是怎么打开页面的,用这个命令也行。第一张是通过intent action来打开。第二张就是通过scheme打开。
还有其他场景就不一一列举,大家平时可以多用这个Tag过滤下日志,多看看系统都记录哪些tag。
2.打印应用启动耗时
使用adb shell获取应用的启动时间
// 其中的AppstartActivity全路径可以省略前面的
adb shell am start -W [packageName]/[AppstartActivity全路径]
MacBook-Pro:~ xuanxuan3$ adb shell am start -W cmb.pb/.app.mainframe.frame.PBEntryActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=cmb.pb/.app.mainframe.frame.PBEntryActivity }
Status: ok
Activity: cmb.pb/.app.mainframe.frame.PBEntryActivity
ThisTime: 1693
TotalTime: 1693
WaitTime: 1727
Complete
拿了招商银行(如何拿到招商银行入口Activity呢,就是通过刚刚的ActivityTaskManager + Displayed拿到的)为例子,打印了下招商银行的数据。 执行后会得到三个时间:ThisTime、TotalTime和WaitTime,详情如下:
- ThisTime:表示最后一个Activity启动耗时。
- TotalTime:表示所有Activity启动耗时。
- WaitTime:表示AMS启动Activity的总耗时。
一般来说,只需查看得到的TotalTime,即应用的启动时间,其包括 创建进程 + Application初始化 + Activity初始化到界面显示 的过程。
3. dmtracedump
大家平时应该使用过Debug.startMethodTracing,但是可能不太好看,google提供了一个工具,可以把Debug生成的文件,生成图片来展示。
dmtracedump -g ~/Downloads/dmtracedump.png ~/Downloads/dmtrace.trace
或者使用github上的工具,可以专门过滤出你想要的数据:AppMethodOrder。
有其他技巧后续更新。