快速寻找Activity/Fragmente及打印Logcat信息的ADB常用命令

我们在接触一个新的项目或入职新公司接手项目,特别是大型项目,对项目不熟悉,有些小伙伴经常去找同事帮忙找这个页面对应是那个Activity或Fragment时,如果是长时间去问这些问题,会大量浪费同事的时间,同时对我们自己的成长不是很好。我们要学会怎么去找切入口。下面分享自己在日常开发使用的adb命令(基于windows平台),我平时怎么快速定位页面对应的Activity或Fragment,打印日志信息也很关键的实战所用到的,希望帮到大家。

ADB查看APP的常用命令

查看当前界面Activity:

adb shell "dumpsys activity top | grep ACTIVITY | tail -n 1"
  • dumpsys activity top :打印顶层Activity信息
  • grep ACTIVITY:从上个命令结果中过滤出Activity相关信息
  • tail -n 1:从上一步过滤结果中继续过滤出最后一条记录,也就是当前界面(顶层top)activity

查看当前界面Fragment:

adb shell "dumpsys activity top | grep '#0: ' | tail -n 1"
或adb shell "dumpsys activity top | grep '#[0-9]: ' | tail -n 1"
  • grep '#0: ' : 当前第一个Fragment

如果不知道一个Activity里有几个Fragment,使用这命令,Activity信息栈里显示有那些相关的Fragment

adb shell dumpsys activity top
命令 描述
adb shell ps 查看进程
adb shell dumpsys activity 获取当前 Android 系统 Activity 栈中 Activity 信息
adb shell dumpsys activity top 获取当前 Android 系统 中与用户交互的 Activity 的详细信息
adb shell dumpsys meminfo 应用包名 查看应用的内存使用情况
adb shell dumpsys package 应用包名 获取手机里面某个 apk 的应用信息、版本信息
adb shell pm list package -3 列出所有的应用的包名 (-s:列出系统应用 -3:列出第三方应用 -f:列出应用包名及对应的apk名及存放位置 -i:列出应用包名及其安装来源)
adb shell dumpsys activity activities 显示当前所有在运行的任务栈,并可查看栈中所有的 Activity 的列表
adb shell wm size 手机屏幕分辨率
adb shell wm density 手机屏幕密度
adb shell getprop ro.product.model 查看设备型号

获取连接的设备列表及设备状态

adb devices

安装APK

adb install path_to_apk

-l向前锁定应用
adb install -l your.apk #forward lock application
-r替换已存在应用
adb install -r test.apk #replace existing application
-t测试package标志
adb install -t test.apk #allow test packages
-s将应用安装到sdcard
adb install -s test.apk #install application on sdcard
-d忽略版本号安装apk
adb install -d test.apk #allow version code downgrade
-p部分安装apk标志
  • path_to_apk:指apk的绝对路径

卸载 APK

adb uninstall 应用包名
//使用-k参数:保留安装包的数据和缓存目录
adb uninstall -k 应用包名 

Logcat常用命令

捕捉手机里已经发生过的崩溃日志,bugreport是支持所有手机日志信息

D:\bugreport>adb bugreport > 123.txt

输出到指定目录到123.txt文件(过程需要等待几分钟时间),会down下一个所有日志的压缩包。

在此目录下输入命令:findstr "FATAL EXCEPTION" .\** 找异常所有的对应文件,然后打开对应的文件,然后全文搜索FATAL EXCEPTION,就可以找出问题所在。

查看命令帮助, 查看一下一些简单的数据格式

adb logcat --help

使用命令adb logcat的打印:从上而下,优先级最高
V - Verbose(lowest priority:优先级最低,输出得最多)
D - Debug
I - Info
W - Warning
E - Error
F - Fatal
S - Silent(highest priority,on which nothing is ever printed:优先级最高,啥也不输出)

清除缓存信息

adb logcat -c
  • 最好的做法的先使用-c清除之前的日志信息,再触发事件,查看最近的日志信息。

使用tag以后级别失效的原因是没有加上*:S。不加静默所有其他日志的选项就会把其他日志都输出。

在developers文档有介绍 Logcat 命令行工具 | Android 开发者 | Android Developers (google.cn)

打印优先级为Error以上的日志信息。

adb logcat *:E
  • *表示任何的Tag
  • E表示优先级

显示所有优先级Warning以上的日志

adb logcat *:W *:S

打印时间和优先级为Error以上的日志信息:

adb logcat -v time *:E *:S

把日志信息保存到电脑上D盘log.txt文件上

adb logcat -v time *:E *:S > D:\log.txt

如果需要精准到某他APP上,则在其后面添加上 " | findstr app进程ID"

注意:

Window环境:findstr
Mac或Linux环境:grep

打印某个APP下,且tag为tagName的info级别以上的信息

adb logcat TagName:I *:S | findstr app进程ID

打印某个APP的某个Tag的logcat信息(级别从E到S)

adb logcat TagName:E *:S | findstr app进程ID

打印某个APP的某些Tag的logcat信息(级别从E到S)

adb logcat TagName:E Tag:E *:S | findstr app进程ID

你可能感兴趣的:(快速寻找Activity/Fragmente及打印Logcat信息的ADB常用命令)