今天记录的是 Android Debug Bridge,安卓debug调试桥,它是一款测试/开发人员必不可少的利器。作为一名测试人员,今天主要了解它在测试中简单的应用命令。 ADB是一个C/S架构(默认端口号为:5037),由三部分组成:ADB Client 、ADB Server、ADB Demo,运行过程如下图所示:
主要应用:
1、连接设备
-
数据线直接连接服务器 -
无线连接:1、将手机与电脑用usb连接,CMD输入: adb tcpip 5555 监听TCP/IP连接;2、断开usb连接,CMD输入: adb connect 移动端ip 连接;3、CMD输入:adb devices 查看是否连接成功 -
断开连接:C:\Users\melot>adb disconnect
2、查看设备是否已连接: adb devices
Microsoft Windows [版本 10.0.19042.1052]
(c) Microsoft Corporation。保留所有权利。
C:\Users\melot>adb devices
List of devices attached
7fc0e0f2 device
C:\Users\melot>
当有多台设备连接时: -d 当前唯一通过 USB 连接的 Android 设备为命令目标 -e 指定当前唯一运行的模拟器为命令目标 -s 指定相应 serialNumber 号的设备/模拟器为命令目标
adb [-d|-e|-s <serialNumber>] <command>
3、查看Android app的log,排查出现的问题:
在发现问题后,打印出带具体时间日期的日志,存放于D盘的log202106231609.txt中 执行命令打开文件,根据出错的时间以及标志性关键字exception、fatal、error等定位出错点
Microsoft Windows [版本 10.0.19042.1052]
(c) Microsoft Corporation。保留所有权利。
C:\Users\melot>adb logcat -v threadtime -d >D:\log202106231609.txt
C:\Users\melot>start D:\log202106231609.txt
C:\Users\melot>
4、测试模拟重启设备
C:\Users\melot>adb reboot
C:\Users\melot>
5、测试模拟强制停止应用
C:\Users\melot>adb shell am force-stop com.melot.kkcxlive
C:\Users\melot>
6、查看应用详细信息
C:\Users\melot>adb shell dumpsys package com.melot.kkcxlive
7、查看应用的安装路径
C:\Users\melot>adb shell pm path com.melot.kkcxlive
package:/data/app/com.melot.kkcxlive-1/base.apk
C:\Users\melot>
8、获取安卓设备的版本信息
C:\Users\melot>adb shell getprop ro.build.version.release
7.1.2
C:\Users\melot>
9、使用 Monkey 进行压力测试
C:\Users\melot>adb shell monkey -p com.melot.kkcxlive -v 500
10、安装软件至APP
C:\Users\melot>adb install C:\Users\melot\Downloads\JJYP_v2.0.1_0623_11`42`16_release.apk
11、获取设备id
adb shell settings get secure android_id
12、查看应用列表
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
默认 所有应用 -f 显示应用关联的 apk 文件 -d 只显示 disabled 的应用 -e 只显示 enabled 的应用 -s 只显示系统应用 -3 只显示第三方应用 -i 显示应用的 installer -u 包含已卸载应用 包名包含 字符串
13、清除应用数据和缓存
adb shell pm clear <packagename>
14、复制电脑里的文件到设备
adb push <电脑上的文件路径> <设备里的目录>
15、模拟按键操作
点击屏幕坐标为x = 50 y = 250的地方:
adb shell input tap 50 250
滑动屏幕解锁:
adb shell input swipe 起始x 起始y 终止x 终止y
输入文本:
adb shell input text hello
其它按键操作:
db shell input keyevent
3 HOME 键 4 返回键 5 打开拨号应用 6 挂断电话 24 增加音量 25 降低音量 26 电源键 27 拍照(需要在相机应用里) 64 打开浏览器 82 菜单键 85 播放/暂停 86 停止播放 87 播放下一首 88 播放上一首 122 移动光标到行首或列表顶部 123 移动光标到行末或列表底部 126 恢复播放 127 暂停播放 164 静音 176 打开系统设置 187 切换应用 207 打开联系人 208 打开日历 209 打开音乐 210 打开计算器 220 降低屏幕亮度 221 提高屏幕亮度 223 系统休眠 224 点亮屏幕 231 打开语音助手 276 如果没有 wakelock 则让系统休眠
16、查看日志
Android日志的优先级(由高到低): S-slient (啥也不输出) F-fatal E-error W-waring I-info D-debug V-verbose
按某级别过滤日志,将该级别及以上的日志输出(以下例子会将 Warning、Error、Fatal 和 Silent 日志输出):
adb logcat *:W
按 tag 和级别过滤日志(以下例子表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)):
adb logcat ActivityManager:I MyApp:D *:S
日志格式:
adb logcat -v <format>
brief 默认格式: <priority>/<tag>(<pid>): <message> process : <priority>(<pid>) <message> tag: <priority>/<tag>: <message> raw:<message> time:<datetime> <priority>/<tag>(<pid>): <message> threadtime:<datetime> <pid> <tid> <priority> <tag>: <message> long: [ <datetime> <pid>:<tid> <priority>/<tag> ] <message>
清空日志:
adb logcat -c
17、查看设备信息
查看手机型号:
adb shell getprop ro.product.model
查看手机电池情况:
adb shell dumpsys battery
屏幕分辨率:
adb shell wm size
查看屏幕密度:
adb shell wm density
查看显示屏参数:
adb shell dumpsys window displays
查看Android-id:
adb shell settings get secure android_id
查看Android系统版本:
adb shell getprop ro.build.version.release
查看设备ip地址:
adb shell ifconfig "| grep Mask"
查看局域网MAC地址:
adb shell cat /sys/class/net/wlan0/address
查看移动网或其它连接信息:
adb shell netcfg
查看cpu信息:
adb shell cat /proc/cpuinfo
查看内存信息:
adb shell cat /proc/meminfo
查看其它硬件与系统属性: 方法一:
adb shell cat /system/build.prop
方法二:
adb shell getprop <属性名>
ro.build.version.sdk SDK 版本 ro.build.version.release Android 系统版本 ro.build.version.security_patch Android 安全补丁程序级别 ro.product.model 型号 ro.product.brand 品牌 ro.product.name 设备名 ro.product.board 处理器型号 ro.product.cpu.abilist CPU 支持的 abi 列表[节注一] persist.sys.isUsbOtgEnabled 是否支持 OTG dalvik.vm.heapsize 每个应用程序的内存上限 ro.sf.lcd_density 屏幕密度
18、修改设置
修改分辨率:
adb shell wm size 480x1024
恢复原分辨率:
adb shell wm size reset
修改屏幕密度:
adb shell wm density 160
恢复屏幕密度:
adb shell wm density reset
修改显示区域:
adb shell wm overscan 0,0,0,200
恢复显示区域:
adb shell wm overscan reset
19、屏幕截屏保存到电脑
adb exec-out screencap -p > sc.png
20、录制屏幕(以 mp4 格式保存到 /sdcard)
adb shell screenrecord /sdcard/filename.mp4
Ctrl-C停止录制,默认录制时间和最长录制时间都是 180 秒 导出到电脑:
adb pull /sdcard/filename.mp4
21、查看连接过的wifi密码:
adb shell
su
cat /data/misc/wifi/*.conf
22、设置系统日期和时间:
adb shell
su
date -s 20160823.131500
23、检测设备是否已 root
adb shell
su
24、开启/关闭 WiFi
开启:
adb root
adb shell svc wifi enable
关闭:
adb root
adb shell svc wifi disable
设置wifi优先:
adb shell svc wifi prefer
25、开启/关闭数据流量
关闭:
svc data disable
开启:
adb shell svc data enable
优先数据流量,其次wifi:
adb shell svc data prefer
26、刷机相关
重启到Recovery 模式:
adb reboot recovery
从 Recovery 重启到 Android:
adb reboot
重启到 Fastboot 模式:
adb reboot bootloader
27、查看进程
adb shell ps
28、查看实时资源占用情况
adb shell top
PID: 进程 ID PR: 优先级 CPU%: 当前瞬间占用 CPU 百分比 S: 进程状态(R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) #THR: 线程数 VSS Virtual Set Size: 虚拟耗用内存(包含共享库占用的内存) RSS Resident Set Size: 实际使用物理内存(包含共享库占用的内存) PCY: 调度策略优先级,SP_BACKGROUND/SPFOREGROUND UID: 进程所有者的用户 ID NAME: 进程名
29、查看进程uid
方法一:
adb shell dumpsys package <packagename> | grep userId=
方法二:通过 ps 命令找到对应进程的 pid
adb shell cat /proc/<pid>/status | grep Uid
30、端口号被占用
1、找到使用该端口的进程Pid
C:\Users\melot>netstat -aon|findstr 5037
2、通过PID找到对应的进程名
C:\Windows\system32>tasklist /fi "PID eq 1中的pid号"
3、使用命令终止该命令的运行
C:\Users\wwx229495>taskkill /pid 1中的pid号 /f
|