一、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)操作步骤
  • 操作步骤:
    1. 启动目标应用(如TP Shop)。
    2. 在命令行中输入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,理解命令参数和用途

🌟

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐