ADB命令
一、ADB命令
1. 显示系统中全部设备

- 命令: adb devices
- 作用: 查看当前连接的设备,包括连接到计算机的android设备或模拟器。
2. 连接设备
- 命令: adb connect IP:端口号
- 作用: 连接设备,特别是当设备因系统环境原因未自动连接时,可通过此命令手动连接。
- 注意:
- 默认端口号为5555,但某些模拟器(如木木)的默认端口号可能为7555。
- 连接时需确保设备在同一局域网内。
3. 安装、卸载软件包
1)安装软件

- 命令: adb install -(APK路径)
- 作用: 安装APK到连接的设备上。
- 参数:
- -r:如果APK已安装,重新安装并保留数据和缓存文件。
- 操作: 可直接将APK文件拖入命令行窗口。
2)卸载软件
- 命令: adb uninstall (apk包名)
- 作用: 从连接的设备上卸载指定包名的APK。
- 参数:
- -k:卸载APP但保留数据和缓存文件。
4. 获取软件包名

- 命令:
- adb shell pm list packages:列出手机安装的所有APP的包名。
- adb shell pm list packages -s:列出系统应用的所有包名。
- adb shell pm list packages -3:列出除系统应用外的第三方应用包名。
- adb shell dumpsys window | findstr mCurrentFocus(Windows)或adb shell dumpsys window | grep mCurrentFocus(Mac/Linux):显示当前打开的软件包名。
- 作用: 获取设备上已安装应用的包名,用于安装、卸载等操作。
二、包名获取包命令
1. 列出手机装的所有APP的包名
- 命令: adb shell pm list packages
- 作用: 该命令可以列出手机中安装的所有应用程序的包名,包括系统应用和第三方应用。
2. 列出第三方应用的包名
- 命令: adb shell pm list packages -3
- 作用: 该命令专门用于列出手机中安装的第三方应用程序的包名,不包括系统应用。
3. 获取当前的包名
- 命令:
- Windows: adb shell dumpsys window | findstr mCurrentFocus
- Mac/Linux: adb shell dumpsys window | grep mCurrentFocus
- 前提: 在执行此命令前,必须确保目标应用已启动且处于当前活动窗口。
- 作用: 该命令用于获取当前活动窗口(即当前打开的应用)的包名和启动活动名。
- 注意:
- 执行结果中,com.后面的内容为包名,直到遇到第一个/为止。
- /后面的内容为启动活动名,通常不需要复制。
- 在Windows系统中使用findstr,在Mac/Linux系统中使用grep进行字符串过滤。
-
包名与启动名区分
包名以com开始,一直到/结束,不包括花括号
包名与启动名的区别,花括号内为启动名
三、日志及启动时间
1. 获取APP日志
1)日志获取命令
- 命令: adb logcat > 指定路径(" > "是重定向)
- 举例: adb logcat > C:\Users\18810\Desktop\1.txt
- 执行: 在命令行中输入上述命令后,日志会实时显示在指定文件中。
- 结束: 使用Ctrl+C结束日志获取。
2)日志查看
- 查看方式: 打开指定路径下的日志文件(如1.txt)即可查看获取的日志内容。
- tail -f 1.txt (实时查看文件)
3)日志分析
- 关键字: 主要关注错误关键字如ANR(闪退)Error、Exception等。
- 分析目的: 通过日志分析APP闪退、无响应等问题的原因。
2. 获取APP启动时间
1)启动时间获取命令
- 命令: adb shell am start -W 包名/activity名
- 参数说明:
- -S: 表示每次启动前先强行停止。
- -R: 表示重复测试次数。
- -W: 等待启动完成并返回启动时间。
2)启动时间指标
- ThisTime: 当前activity的启动时间。
- TotalTime: 应用的启动时间,包括创建进程、App初始化、Activity初始化等。
- WaitTime: 前一个应用activity pause的时间。
3)举例
- 命令举例: adb shell am start -S -R 5 -W com.tpshop.malls/com.tpshop.malls.SplashActivity
- 解释: 该命令会启动com.tpshop.malls应用的SplashActivity,共启动5次,每次启动前强行停止应用,并返回每次启动的时间指标。
4)冷热启动
- 热启动: 应用已在后台运行,再次启动时间较短(如示例中的0ms)。
- 冷启动: 应用完全关闭后的启动,时间较长。可通过关闭应用后再执行启动命令来测试冷启动时间。
5)知识小结
|
知识点 |
核心内容 |
考试重点/易混淆点 |
难度系数 |
|
获取a db包名启动名 |
通过特定命令获取应用的包名和启动名 |
如何准确获取并记下包名和启动名 |
🌟 |
|
日志的重要性 |
在APP测试过程中,日志用于分析闪退、死机等问题 |
日志的作用和如何查看日志 |
🌟🌟 |
|
日志获取命令 |
使用adb logcat命令获取实时日志 |
adb logcat命令的使用方法和参数 |
🌟🌟 |
|
日志分析 |
关注错误类型(如ANR、异常等)和内存溢出等关键字 |
如何从日志中定位和分析问题 |
🌟🌟🌟 |
|
日志重定向 |
将日志重定向到文件中保存 |
如何将日志保存到文件及查看文件内容 |
🌟🌟 |
|
日志操作技巧 |
使用ctrl+c停止日志,tail -f动态查看文件 |
日志操作中的实用技巧和命令 |
🌟 |
|
包名启动名应用 |
使用adb shell dumpsys window等命令查看包名和启动名 |
如何应用获取的包名和启动名进行后续操作 |
🌟🌟 |
|
APP启动时间测试 |
通过adb shell am start等命令测试APP的启动时间 |
冷热启动的区别及如何测试启动时间 |
🌟🌟 |
四、获取内存
1. 命令与解析

- 命令: adb shell dumpsys meminfo <包名>
- 解析: 该命令用于获取指定应用的内存信息,包括Native/Dalvik的Heap信息和Total的PSS信息等。
1)Heap信息
- Native/Dalvik的Heap信息: 如果这个值一直增长,可能代表程序出现了内存泄漏(Out of memory)。
2)PSS信息
- Total的PSS信息: 这个值表示应用真正占据的内存大小,通过它可以轻松判别手机中哪些程序占内存比较大。
2. 实际操作与示例
1)操作步骤
- 操作步骤:
-
- 启动目标应用(如TP Shop)。
- 在命令行中输入adb shell dumpsys meminfo <包名>,其中<包名>替换为目标应用的包名。
2)示例解析
- 示例: 以TP Shop为例,执行命令后获取到的内存信息包括Pss、Private、Heap等多个字段。
- 关键字段解析:
- Pss: 应用真正占据的内存大小,是判断应用内存占用的关键指标。
- Heap: 包括Native Heap和Dalvik Heap,如果持续增长可能表明内存泄漏。
3. 注意事项与总结
- 注意事项:
- 执行命令时需要确保设备已连接并获得相应权限。
- 内存单位通常为KB,需根据需要转换为MB或GB以便理解。
- 总结: 通过adb shell dumpsys meminfo <包名>命令,我们可以获取到应用的详细内存信息,进而分析应用的内存使用情况和可能存在的问题。
五、查看CPU占用情况
1. 使用top命令查看CPU和内存

- top命令: 在Linux系统中,top命令是一个任务管理器,类似于Windows的任务管理器,用于查看系统的CPU和内存使用情况。
- 查看内容: top命令可以显示每个进程的CPU和内存使用情况,以及系统的总CPU和内存使用情况。
- 实时更新: top命令的输出是实时更新的,默认每两秒钟刷新一次。
2. top命令的输出结构
- 上下两部分: top命令的输出分为上下两部分,上面部分显示系统的总CPU和内存使用情况,下面部分显示每个进程的详细信息。
- 系统总信息: 包括CPU使用率、内存使用情况、交换区使用情况等。
- 进程信息: 包括进程ID(PID)、用户(USER)、优先级(PR)、虚拟内存(VIRT)、实际使用的物理内存(RES)、共享内存(SHR)、进程状态(S)、CPU使用率(%CPU)、内存使用率(%MEM)、运行时间(TIME+)和命令名(CMD)。
3. 排序功能
- 默认排序: top命令默认按CPU使用率(第九列)进行排序。
- 排序参数: 使用-s参数可以指定按哪一列进行排序,例如-s 10表示按内存使用率(第十列)进行排序。
- 查看帮助: 通过top help命令可以查看top命令的详细帮助信息,包括排序参数的使用方法。
4. 查看帮助信息
- help命令: 在top命令后加help参数可以查看top命令的帮助信息,了解各参数的含义和使用方法。
- 默认排序列: 帮助信息中会显示top命令默认按哪一列进行排序,以及如何通过-s参数指定排序列。
5. 实时查看进程信息
- 实时更新: top命令的输出是实时更新的,可以动态地查看系统的CPU和内存使用情况以及各进程的资源占用情况。
- 进程状态: 通过进程状态(S列)可以了解进程当前是处于运行状态(R)、休眠状态(S)还是僵死状态(Z)等。
6. 求助技巧
- 求助手册: 当对top命令的某个参数或输出不理解时,可以通过查看手册(如man top)或在线求助(如有道词典等)来获取更多信息。
- 复制粘贴: 对于不熟悉的命令或参数,可以复制粘贴到搜索引擎或求助工具中进行查询。
六、获取APP使用流量
1. 获取进程PID
- 命令: 在Windows系统中使用adb shell ps | findstr 包名,在Mac或Linux系统中使用adb shell ps | grep 包名来获取指定应用的进程PID。
- 示例: 如获取包名为com.tpshop.malls的应用的进程PID,命令为adb shell ps | grep com.tpshop.malls。
- 注意: PID是进程的唯一标识符,用于区分不同应用的流量使用情况。
2. 获取流量
- 命令: 使用adb shell cat /proc/{pid}/net/dev命令查看指定PID应用的网络流量情况。
- 解释: 安卓系统会自动将每个应用的流量使用情况记录在一个文件中,文件路径为/proc/{pid}/net/dev,其中{pid}需替换为具体应用的进程PID。
- 网卡标识: 在输出结果中,wlan0通常表示WiFi网卡,Receive表示接收的流量(下载),Transmit表示发送的流量(上传)
3. 流量查看示例
- 示例操作: 假设已获取到某应用的进程PID为5310,则使用命令adb shell cat /proc/5310/net/dev查看该应用的流量情况。
- 结果解析: 输出结果中包含接收和发送的字节数、数据包数等信息,通过查看wlan0对应的Receive和Transmit字段,可以了解该应用通过WiFi网卡接收和发送的流量。
4. 注意事项
- 网卡选择: 在查看流量时,需选择正确的网卡(如WiFi网卡wlan0)。
- 数据对齐: 为方便查看,可将输出结果拉大,使各字段对齐,便于直观了解接收和发送的流量情况。

通过以上步骤,我们可以获取并查看指定应用的网络流量情况,为性能测试和流量监控提供数据支持。
四、知识小结
|
知识点 |
核心内容 |
考试重点/易混淆点 |
难度系数 |
|
日志命令 |
了解内存、CPU、流量相关命令 |
无需记忆具体命令,知道用途和查询方法 |
🌟 |
|
内存查看命令 |
adb shell dumpsys meminfo + 包名 |
区分PSS和总内存,理解单位KB和MB |
🌟🌟 |
|
CPU查看命令 |
top命令 |
理解top命令的上下两部分,掌握排序方法 |
🌟🌟🌟 |
|
top命令的-s参数用于排序 |
默认按CPU排序,可通过-s参数按内存排序 |
🌟🌟🌟 | |
|
流量查看命令 |
adb shell cat /proc/PID/net/dev |
获取进程PID,理解网络接收发送数据 |
🌟🌟🌟🌟 |
|
识别网卡,区分接收(下载)和发送(上传) |
对齐网卡和数据,一目了然查看流量 |
🌟🌟🌟🌟 | |
|
求助命令 |
使用help或man查看命令说明 |
有困难找help或man,理解命令参数和用途 |
🌟 |
更多推荐


所有评论(0)