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、如果当前连接设备超过一台,使用命令会出错,无法确定对哪台操作。

一、设备管理
对设备进行最常规的操作,如安装卸载应用、传输文件、查看基本信息。
-
应用管理
安装应用-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等 -
文件传输
adb push [电脑文件路径] [设备目标路径]:从电脑推送文件到设备。 adb pull [设备文件路径] [电脑目标路径]:从设备拉取文件到电脑。 在传输前,常需要检查或创建目录。进入设备Shell操作: adb shell -> su (获取root权限) -> mkdir -p /data/test (创建目录) -> exit (退出)。系统分区(如/system)通常只读,不能写入
![image-20260826102723719]()
-
设备基础信息
adb get-serialno:获取设备的序列号 (SN)。 adb shell wm size:获取设备屏幕分辨率。 adb shell getprop ro.product.model:获取设备型号。![image-20260825163731692]()
-
设备重启与截屏
adb reboot:重启设备。 adb shell screencap -p [设备路径/文件名.png]:截屏并保存到设备。-p :指定截屏保存格式为PNG
二、日志、性能与信息
当App出现问题时,能使用ADB命令抓取日志、分析性能,定位问题根源。
-
日志管理-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 级别日志。 -
应用与性能分析-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]()
-
当前界面信息
adb shell dumpsys window | findstr mCurrentFocus (Windows) 查看当前屏幕最顶层正在运行的是哪个应用的包名和Activity名称。这是编写自动化脚本时定位页面的关键信息。![image-20260825164735137]()
三、电池与事件
模拟各种极端场景(如电量变化、充电状态),以测试App的健壮性。
-
电池模拟-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]()
-
模拟按键与输入
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。
-
Monkey核心命令
基础语法:
adb shell monkey -v [日志级别] -p [应用包名] [事件次数] -
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 [百分比]:其他事件。 记忆口诀: 触摸滑动缩缩放,轨迹旋转危险权, 导航分主统按键,启翻其他事件全。 -
忽略异常参数
--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
感觉很神奇


















浙公网安备 33010602011771号