app自动化--adb使用

1、ADB--Android Debug Bridge :电脑与安卓设备之间的调试”桥梁“

2、服务管理:

  • adb devices:灵魂命令。查看当前已连接的设备列表及其状态(device 正常,offline 无响应,unknown 未连接)。
  • adb version:查看当前ADB工具的版本号。
  • adb kill-server:停止ADB服务。当设备状态异常时,首先用它来终结服务。
  • adb start-server:启动ADB服务。通常执行任意adb命令时会自动启动,但也可手动重启。

3、无线/模拟器连接:adb connect [IP地址:端口号] 连接网络设备或模拟器

4、常见模拟器端口:夜神模拟器62001、雷电模拟器5555、逍遥模拟器21503、MuMu模拟器7555

5、如果当前连接设备超过一台,使用命令会出错,无法确定对哪台操作。

image-20260825155152338
一、设备管理

对设备进行最常规的操作,如安装卸载应用、传输文件、查看基本信息。

  1. 应用管理

    安装应用-install

    adb install [APK文件路径]:标准安装。
    adb install -r [APK文件路径]:覆盖安装,保留应用数据,用于版本升级。
    adb install -d [APK文件路径]:降级安装,安装比现有版本更低的应用。
    adb install -g [APK文件路径]:安装时授予所有运行时权限,方便测试。
    

    image-20260825161522304

    列出安装的包名

    adb shell pm list package:查看所有已安装的应用包名 系统应用+第三方
    adb shell pm list package -s: 只查看系统应用 system
    adb shell pm list package -3:只查看第三方应用(用户安装的)third-party
    

    image-20260825162658650

    卸载应用-uninstall

    adb uninstall [应用包名]:卸载应用。注意:这里是包名,不是APK文件名。
    adb shell pm uninstall -k [应用包名]:卸载应用,但保留其数据和缓存。
    adb shell am force-stop [应用包名]:强制停止正在运行的应用程序。
    

    image-20260825162730080

    image-20260825163247509

    pm=Package Manager(包管理器),用于安装、卸载、查询应用包信息等操作。

    am=Activity Manager(活动管理器),用于管理应用组件,如启动、停止、强制关闭Activity/Service等

  2. 文件传输

    adb push [电脑文件路径] [设备目标路径]:从电脑推送文件到设备。
    adb pull [设备文件路径] [电脑目标路径]:从设备拉取文件到电脑。
    在传输前,常需要检查或创建目录。进入设备Shell操作:
    adb shell -> su (获取root权限) -> mkdir -p /data/test (创建目录) -> exit (退出)。
    

    系统分区(如/system)通常只读,不能写入
    image-20260826102723719

  3. 设备基础信息

    adb get-serialno:获取设备的序列号 (SN)。
    adb shell wm size:获取设备屏幕分辨率。
    adb shell getprop ro.product.model:获取设备型号。
    

    image-20260825163731692

  4. 设备重启与截屏

    adb reboot:重启设备。
    adb shell screencap -p [设备路径/文件名.png]:截屏并保存到设备。
    

    -p :指定截屏保存格式为PNG

二、日志、性能与信息

当App出现问题时,能使用ADB命令抓取日志、分析性能,定位问题根源。

  1. 日志管理-Logcat

    adb logcat:最核心。打印Android系统的实时运行日志。
    adb logcat -c:清空(清除)缓存中的日志。
    adb logcat > [电脑文件路径]:将日志输出并重定向到电脑的一个文件里。
    日志级别过滤:日志按严重程度分为 V < D < I < W < E < F。
    adb logcat *:E:只打印Error级别的日志。
    adb logcat -f [设备文件路径]:将日志输出并保存到设备的指定文件中。
    

    image-20260826103124312

    -f:将日志输出写入指定文件

    adb logcat -d | findstr [应用包名] > [电脑文件路径]:导出包含指定包名的所有日志。
    adb logcat *:S [应用包名]:E > [电脑文件路径]:只导出指定应用的Error级别日志。*:S 表示静默其他所有日志。
    

    image-20260826104649152

    *:E:只输出Error级别及以上的日志

    *:S:所以标签静默

    -d:转储dump当前缓冲区日志后立即退出

    加引号--通过findstr在输出的错误日志中搜索包含"com.baidu.netdisk" 的行。

    不加引号--com.baidu.netdisk:E 表示只输出该标签的 Error 级别日志。

  2. 应用与性能分析-Dumpsys

    adb shell dumpsys meminfo [PID或包名]:常用。查看指定进程或应用的内存占用情况(以KB为单位)。
    adb shell dumpsys cpuinfo:查看CPU使用情况。
    adb shell dumpsys diskstats:查看磁盘使用情况。
    adb shell dumpsys battery:查看电池状态和信息(详见第四阶段)。
    adb shell pm clear [应用包名]:重要。清除指定应用的所有数据和缓存,相当于恢复到刚安装时的状态。
    

    adb shell top:查看所有进程实时资源占用,PID在第一列

    image-20260826105542529

    image-20260826105629058

    image-20260826105738112

  3. 当前界面信息

    adb shell dumpsys window | findstr mCurrentFocus (Windows)
    查看当前屏幕最顶层正在运行的是哪个应用的包名和Activity名称。这是编写自动化脚本时定位页面的关键信息。
    

    image-20260825164735137

三、电池与事件

模拟各种极端场景(如电量变化、充电状态),以测试App的健壮性。

  1. 电池模拟-Battery

    查看状态

    adb shell dumpsys battery
    status:2=充电中,3=未充电,4=未充电(与3类似),5=已充满。
    level:当前电量百分比。
    AC powered / USB powered:是否在充电。
    

    image-20260825164944178

    模拟电量

    adb shell dumpsys battery set level 9
    adb shell dumpsys battery reset  --重置
    

    image-20260825165644152

    模拟充电状态

    adb shell dumpsys battery set usb 0:模拟断开USB充电。
    adb shell dumpsys battery set usb 1:模拟连接USB充电。
    

    image-20260825170042581

    image-20260825170121037

  2. 模拟按键与输入

    adb shell input keyevent [KeyCode]:模拟发送按键事件。
    常用:Home键(3),返回键(4),电源键(26),菜单键(82),音量+(24),音量-(25)。
    adb shell input tap [X坐标] [Y坐标]:模拟点击屏幕指定坐标。
    adb shell input swipe [X1] [Y1] [X2] [Y2] [持续时间ms]:模拟滑动屏幕。
    adb shell input text [字符串]:模拟输入文本。
    
    adb shell input keyevent 4    # 返回上一级
    adb shell input tap 540 960   # 点击屏幕中心偏下位置(假设分辨率1080x1920)
    adb shell input swipe 100 500 100 1000 500   # 从(100,500)下滑到(100,1000),耗时500ms
    adb shell input text "Hello World"           # 在当前输入框输入"Hello World"
    

四、Monkey

对App进行压力测试,模拟用户的各种随机操作,检验App是否会发生崩溃或ANR。

  1. Monkey核心命令

    基础语法:adb shell monkey -v [日志级别] -p [应用包名] [事件次数]

  2. Monkey关键参数

    -v:日志级别

    -v:默认,提供简要信息。
    -v -v:较详细。
    -v -v -v:最详细,包含所有事件信息和选中的Activity。
    

    -s [种子数]:指定随机事件的种子数。相同种子数将重现完全相同的操作序列,对于Bug复现至关重要。

    adb shell monkey -v -v -s 1 -p com.baidu.wenku 100
    adb shell monkey -v -v -s 1 -p com.baidu.wenku --pct-touch 100 100
    -p:指定被测包名
    

    image-20260826110734996

    image-20260826110958408

    --throttle [毫秒]:指定每个事件之间的间隔时间。用于放慢操作速度,模拟真实用户。

    --throttle 1000 (事件间隔1秒)

    事件百分比控制(--pct-xxx)控制各种操作类型所占的比例,总和应为100%。

    --pct-touch [百分比]:触摸(点击)事件。
    --pct-motion [百分比]:滑动事件。
    --pct-pinchzoom [百分比]:缩放事件。
    --pct-trackball [百分比]:轨迹球事件。
    --pct-rotation [百分比]:屏幕旋转事件。
    --pct-permission [百分比]:获取危险权限事件。
    --pct-nav [百分比]:基本导航事件。
    --pct-majornav [百分比]:主要导航事件。
    --pct-syskeys [百分比]:系统按键事件(如Home、Back)。
    --pct-appswitch [百分比]:Activity启动事件。
    --pct-flip [百分比]:键盘翻转事件。
    --pct-anyevent [百分比]:其他事件。
    记忆口诀:
    触摸滑动缩缩放,轨迹旋转危险权,
    导航分主统按键,启翻其他事件全。
    
  3. 忽略异常参数

    --ignore-crashes:忽略应用崩溃,Monkey继续执行。
    --ignore-timeouts:忽略ANR(应用未响应),Monkey继续执行。
    --ignore-security-exceptions:忽略安全权限异常。
    --ignore-native-crashes:忽略系统底层崩溃。
    

练习:

对微博应用进行5000次随机操作测试

要求:日志级别为最详细,固定种子数为300,触摸事件20%,滑动事件10%,键盘翻转事件50%,每个事件间隔1秒,忽略所有崩溃和超时异常,将完整的日志输入到电脑D:\db 目录下,文件名为 abc.txt。

adb shell monkey -p com.sina.weibo -v -v -v -s 300 --pct-touch 20 --pct-motion 10 --pct-flip 50 --throttle 1000 --ignore-crashes --ignore-timeouts 5000 > D:\db\abc.txt

感觉很神奇

posted on 2026-08-26 13:05  珉好好  阅读(57)  评论(0)    收藏  举报