##ADB调试妙用:
1. 基本用法
1.1 adb 等待设备连接:
#adb wait-for-device
eg://windows运行工具指令如下:
识别并连接设备后输出devices信息
#adb wait-for-device
#adb devices
1.2 重启adb
#adb kill-server
#adb start-server
1.3 修改权限
#adb root //获取root权限
#adb disable-verity //关闭检测功能
#adb remount //重新挂载system分区为可读可写
1.4 文件处理
#adb push xxx data/ //推送文件到 data/目录下
#adb pull data/xxx //拉取 data/目录下的xxx文件
#adb sync //同步数据
#adb shell sync //同步数据
1.5 安装卸载
#adb install xxx.apk //安装名称为xxx的APP
#adb uninstall com.xxx.app //卸载包名为com.xxx.app的APP
1.6 重启
#adb reboot
#adb reboot bootloader //重启进入bootloader模式
#adb reboot fastboot //重启进入fastboot模式
#adb reboot recovery //重启进入recovery模式
1.7 屏幕信息
#adb shell wm size //查看屏幕分辨率
#adb shell wm density //查看屏幕密度
#adb shell wm density 320 //修改屏幕密度=320ppi
#adb shell wm density reset //恢复原屏幕密度
2. Adb shell 调试
2.1 dumpsys查看系统数据
帮助文档:
#adb shell dumpsys -h
命令格式:
#adb shell dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h]
列出 dumpsys 支持的所有系统服务:
#adb shell dumpsys -l
获取当前APP窗口名/包名:
#dumpsys window | grep mCurrentFocus //shell环境
#adb shell dumpsys window | findstr mCurrentFocus //window下
获取某个app package的activity栈:
#dumpsys activity activities | grep com.android.mms | grep Hist
#adb shell dumpsys activity activities | findStr com.android.mms | findStr Hist
查看正在运行的应用/服务:
#dumpsys activity | grep -i run
#adb shell dumpsys activity | findStr -i run
查看前台Activity:
#adb shell dumpsys activity activities
#adb shell dumpsys activity top
查看某个APP包名的版本信息:
#dumpsys package com.android.mms | grep version
#adb shell dumpsys package com.android.mms | findStr version
内存分析:
#adb shell dumpsys meminfo
#adb shell dumpsys meminfo [pid/pkg] //dump某个pid进程或者app的内存信息
eg-> #adb shell dumpsys meminfo com.android.mms
2.2 PM
帮助文档:
#adb shell pm -h
列出所有包名:
#adb shell pm list packages
列出所有不可用的包名:
#adb shell pm list packages -d
列出所有可用的包名:
#adb shell pm list packages -e
列出系统所有包名:
#adb shell pm list packages -s
列出系统所有第三方包名:
#adb shell pm list packages -3
列出系统所有包名及对应的UID: (UID 是安装APK 时,系统赋予的,是不变的,除非卸载重装)
#adb shell pm list packages -U
查看包名和versionCode:
#adb shell pm list packages --show-versioncode
过滤包名:
#adb shell pm list packages -U [pkg]
2.3 AM
启动activity:
#adb shell am start <package>/<activity>
#eg: adb shell am start com.android.mms/com.android.mms.MainActivity
触发内存级别回调:
adb shell am send-trim-memory [--user <USER_ID>] <PROCESS>
[HIDDEN|RUNNING_MODERATE|BACKGROUND|RUNNING_LOW|MODERATE|RUNNING_CRITICAL|COMPLETE]
#eg: adb shell am send-trim-memory com.android.mms RUNNING_LOW
计算APP启动时间:
#adb shell am start -W packagename/MainActivity
总共返回了三个结果,我们以 WaitTime 为准
Waittime = endTime - startTime
- startTime记录的刚准备调用startActivityAndWait()的时间点
- endTime记录的是startActivityAndWait()函数调用返回的时间点
- WaitTime = startActivityAndWait()调用耗时。
3. Adb查看服务
3.1 查看所有服务:
#adb shell service list
//dump service 数据
#adb shell dumpsys activity services
3.2 查看某个服务xxxx是否在运行:
#adb shell service list | grep xxxx
#adb shell dumpsys activity services | grep xxxx
3.2 使用pidof 指令查看app/service 运行情况,如果运行则返回pid num
#adb shell pidof com.xxx.app
#adb shell pidof com.xxx.service