常用的ADB调试命令及使用场景
比如说设置里调整显示的大小,此时会通过调整屏幕密度来达到调整屏幕大小的效果。一般用于看一些应用的显示/布局差异,比如三方应用的在不同分辨率下的现象是不一样的,有些应用的显示清晰度也会受到限制。adb shell "dumpsys activity top | grep '#[0-9]: ' | tail -n 1"查看当前界面的Fragment。adb shell "cat /proc/vmsta
adb的使用命令有很多,某些不常用的命令基本都是搜一下就能直接使用,下面罗列一些在工作中比较常用的命令
APK安装/获取命令
adb install <-r> <-g> <文件路径> | -r表示强制覆盖安装,-g表示授予所有运行时权限 |
adb install-multiple <apk文件1> <apk文件2> | 当导出apk有多个资源文件时使用 |
adb shell dumpsys activity | findstr mFocus | 获取当前焦点的应用activity名 |
adb shell pm path <应用包名> | 获取应用所在路径 |
adb pull <应用所在路径> | 提取应用到当前文件夹 后面加文件路径的话就是提取到某个路径下 |
查看屏幕分辨率/屏幕密度
adb shell wm size | 获取当前屏幕分辨率 |
adb shell wm size 1200x2000 | 调整分辨率至1200x2000 |
adb shell wm density | 获取屏幕密度 |
一般用于看一些应用的显示/布局差异,比如三方应用的在不同分辨率下的现象是不一样的,有些应用的显示清晰度也会受到限制。值得注意的是,低分辨率往高分辨率调,受屏幕分辨率限制是不会生效的。
屏幕密度比如说设置里调整显示的大小,此时会通过调整屏幕密度来达到调整屏幕大小的效果。目前遇到的圆角动画也是根据屏幕密度来计算的。附上px和dp的计算公式:px = dp * (densityDpi / 160);dp = px / (densityDpi / 160)
获取手机权限
adb root | 获取手机root权限 |
adb remount | 获取remount权限,允许修改手机system分区下的文件,重启后生效 |
获取屏幕上的点击操作
adb shell settings put system show_touches 1 | 打开当前触点 0关闭 |
adb shell settings put system pointer_location 1 | 打开屏幕报点 0关闭 |
adb shell getevent -lt | 触摸查看是否有touch回显 |
adb shell settings put secure clock_seconds 1 | 让时钟精确到秒 0关闭 |
一般用于解决定屏/冻屏类问题或者让测试打开后方便观察操作步骤,有些问题不太好确认时间点的,可以让时钟精确到秒,方便日志定位
日志相关命令
adb bugreport | 导出bugreport日志 |
adb pull /sdcard/debuglogger adb pull /data/debuglogger |
MTK项目导出log命令 一般以下两条路径二选一 |
adb pull /sdcard/Logs | 高通项目导出log命令 |
adb pull /data/aee_exp aee_exp_system adb pull /data/vendor/aee_exp aee_exp_vendor |
导出db命令 |
adb shell setprop persist.log.tag.NetworkPolicy V | 开启NetworkPolicy log |
adb shell am dumpheap {packages_name} /data/local/tmp/1.hprof adb pull /data/local/tmp/1.hprof |
adb命令获取内存快照 |
在有hprof-conv程序的文件夹内执行 hprof-conv 1.hprof 1_mat.hprof 对文件进行转换
通过Memory Analyze Tool 工具进行分析 或者通过AS的profile里的heap deap进行分析
获取系统信息的adb命令
adb shell settings get global <全局变量> | 获取全局变量 |
adb shell cat/proc/dma_heap/all_heaps | 抓取GPU内存占用 |
adb shell cat proc/进程号/oom_score | 获取进程的oom权重 |
adb shell "cat /proc/vmstat|grep oom_kill" | 查看是否有oom kill 不等于0就是有 |
adb shell ps -A | findstr -iE "systemui" | 获取进程的进程号 |
adb shell cat /proc/<PID>/status | 获取进程的cpu绑定核心 |
adb shell setenforce 0 | 设置SELINUX为宽容模式 |
adb shell cat proc/aed/generate-oops | 触发KE,可以用于抓取全局dump |
adb shell find -name "file" | 查找某个文件位置/so库位置 |
adb shell kill -3 <进程号> | 打印指定Java进程的trace信息 |
adb shell debuggerd -b <进程号> | 打印指定Native进程的traces信息,-b表示在控制台输出 |
adb shell am hang --allow-restart | 触发手机hang机 |
adb shell dd if=/dev/urandom of=/sdcard/Documents/testfile bs=1M count=20480 | 内存填充命令一次填充20G,用于分析内存紧张问题 |
adb shell "dumpsys activity top | grep '#[0-9]: ' | tail -n 1" | 查看当前界面的Fragment,Settings中用的比较多 |
adb shell dumpsys dumpsys window dumpsys cpuinfo dumpsys meminfo dumpsys package <package_name> dumpsys activity dumpsys activity | grep "mResume" |
dump系统信息,常见的有以下几种 查询WMS服务相关信息 查询CPU情况 查询内存情况 查看应用的详细信息 查询AMS服务相关信息 过滤关键字查找当前Activity |
更多推荐
所有评论(0)