APP测试辅助神器之ADB
知乎首发地址:https://zhuanlan.zhihu.com/p/134135268
作者:捉虫布道人
ADB,即 Android Debug Bridge,ADB具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能,是 Android 开发/测试人员不可替代的强大工具,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。
一、ADB安装
下载adt-bundle-windows,并解压到本地文件夹:D:\adt-bundle-windows;并配置其环境变量。
在cmd窗口验证ADB安装是否成功:
C:\Users\chang>adb version
Android Debug Bridge version 1.0.31
二、ADB连接手机或模拟器
当您连接运行 Android 4.2.2 或更高版本的设备时,系统将显示一个对话框,询问您是否接受允许在这台计算机上调试的 RSA 密钥。这种安全机制可以保护用户设备,因为它可以确保只有在您能够解锁设备并确认对话框的情况下才能执行 USB 调试和其他 ADB 命令。
Android手机用usb数据线连接到pc的usb口上(或启动模拟器)
打开手机的开发者模式(默认没打开):设置->关于手机->版本号10.0.0.162,连续点五次以上,会提示已经打开开发者模式
在设置的最上端,搜索“开发人员选项”,点进去
勾选其中的USB调试,确定弹出的提示框
在屏幕的通知栏,点击usb连接的通知,选传输文件mtp
在cmd->adb devices,如果能够列出设备的序列号就说明环境搭建成功
C:\Users\chang>adb devices
List of devices attached
127.0.0.1:56001 device
三、常见的ADB命令
1、列出所有的设备(模拟器、真机)
如果有多个设备连接的话,在使用ADB的时候需要使用-s参数指定设备的序列号,如adb -s emulator-5554 shell top。
C:\Users\chang>adb devices
List of devices attached
127.0.0.1:56001 device
emulator-5554 devices
2、获取设备状态
设备的状态有 3 种,device , offline , unknown
device:设备正常连接
offline:连接出现异常,设备无响应
unknown:没有连接设备
C:\Users\chang>adb get-state
device
3、 开启adb服务
C:\Users\chang>adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
4、关闭adb服务
C:\Users\chang>adb kill-server
5、adb logcat 查看Log日志信息(熟练掌握)
#比较直接的方法
adb logcat
#-v的选项:brief(默认的、简要的) process tag thread raw time threadtime long
adb logcat -v time
#打印在控制台上,不太好查阅,能不能直接写到文件中去
adb logcat -v time > e:\log.txx
#日志等级,每一条日志记录都有一个等级的
V:所有的信息都打印
D:debug调试信息
I: Information,信息
W:warning,警告,编译器认为你可能有问题;实际上可能没问题
E:error,错误
F: fatal,致命的
S:静默的,啥也不打印到日志
#通过分析,v、s没啥用,D、I、W对我们测试人员来说用处也不大,需要过滤掉
adb logcat -v time *:W > e:\log1.txt
6、挂载到Linux的空间
C:\Users\chang>adb shell
root@iToolsAVM_T0018628S:/ # ls
ls
acct
cache
config
d
data
default.prop
dev
etc
file_contexts
fstab.vbox86
init
init.environ.rc
init.rc
init.trace.rc
init.usb.rc
init.vbox86.rc
init.vbox86p.rc
mnt
proc
property_contexts
root
sbin
sdcard
seapp_contexts
sepolicy
storage
sys
system
ueventd.goldfish.rc
ueventd.rc
ueventd.vbox86.rc
vendor
7、 获取linux下运行系统进程
adb shell top -n 1 -d 1
-n 1:表示获取后台进程的次数
-d 1:获取多次的时候,每次之间的时间间隔1秒
C:\Users\chang>adb shell top -n 1 -d 1
User 0%, System 0%, IOW 0%, IRQ 0%
User 1 + Nice 0 + Sys 1 + Idle 400 + IOW 0 + IRQ 0 + SIRQ 0 = 402
PID PR CPU% S #THR VSS RSS PCY UID Name
2029 2 0% S 61 998000K 72336K system system_server
2 0 0% S 1 0K 0K root kthreadd
3 0 0% S 1 0K 0K root ksoftirqd/0
4 0 0% S 1 0K 0K root kworker/0:0
5 0 0% S 1 0K 0K root kworker/0:0H
6 0 0% S 1 0K 0K root kworker/u8:0
7 2 0% S 1 0K 0K root rcu_preempt
8 3 0% S 1 0K 0K root rcu_sched
9 0 0% S 1 0K 0K root rcu_bh
10 3 0% S 1 0K 0K root rcuop/0
11 2 0% S 1 0K 0K root rcuos/0
12 0 0% S 1 0K 0K root rcuob/0
8、 安装应用程序手机或模拟器
C:\Users\chang>adb install e:\data\2048.apk
3428 KB/s (24140275 bytes in 6.875s)
pkg: /data/local/tmp/2048.apk
Success
此安装方式,如果应用已经存在,会安装失败,推荐使用覆盖安装,adb install -r e:\data\2048.apk
9、应用程序的包名
C:\Users\chang>adb shell dumpsys window | findstr mCurrentFocus
mCurrentFocus=Window{4a9e5314 u0 com.lilysgame.calculatorjw/com.lilysgame.calculator.b.Es}
C:\Users\chang>adb uninstall com.lilysgame.calculatorjw
Success
10、将本地的文件推送到远程设备上
adb push <local> <remote>
C:\Users\chang>adb push e:\data\2048.apk /data
3051 KB/s (24140275 bytes in 7.724s)
11、将远程设备上文件拉取到本地(pc)
adb pull <remote> <local>
C:\Users\chang>adb pull /data/2048.apk d:\
2247 KB/s (24140275 bytes in 10.490s)
12、获取当前焦点的包名及activity名
C:\Users\chang>adb shell dumpsys window | findstr mCurrentFocus
mCurrentFocus=Window{4a9e5314 u0 com.lilysgame.calculatorjw/com.lilysgame.calculator.b.Es}
欢迎关注作者,如果觉得写的还不错,就给点个赞同、喜欢、收藏(后续持续更新)。
【全文手打 如需转载 请标注此出处】