携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详
adb常用命令
- 查看手机设备ID名称和状态:
adb devices
adb devices
设备ID 设备在线状态(device(在线)/offine(不在线)
- 启动adb服务:
adb start-server
- 关闭adb服务:
adb kill-server
自动化过程中需要获取到app的包名和界面名才能对app进行操作
- adb获取包名:app包名,通过app包名区分不同的app,app的包名是唯一的。
- adb获取界面名:app中每个界面都会有一个名字。
- 需要在手机或者模拟器上打开app
adb shell dumpsys window | findstr mFoucusedApp/'usedApp'
adb shell dumpsys window windows | findstr mFoucusedApp/'usedApp'
也可以
C:\Users\12801\Desktop> adb shell dumpsys window windows | findstr(wind)/grep(mac or linux) mFocusedApp/'usedApp' mFocusedApp=AppWindowToken{2943bdad token=Token{1b544ac4 ActivityRecord{24ff11d7 u0 com.bjcsxq.chat.carfriend/.module_main.activity.MainActivity t2}}}
包名和界面名以/进行分隔 |
com.bjcsxq.chat.carfriend # 包名
.module_main.activity.MainActivity # 界面名
- 通过aapt获取app的包名和界面名
需要注意的是aapt获取的界面名和adb获取的不一致,建议使用aapt获取界面名和包名
aapt dump badging apk路径 | findstr package # 获取包名
aapt dump badging apk路径 | findstr launchable-activity # 获取界面名
C:\Users\12801\Desktop> aapt dump badging C:\Users\12801\Desktop\UI自动化工具\app自动化工具集合\apk\xuechebu.apk | findstr package
package: name='com.bjcsxq.chat.carfriend' versionCode='100' versionName='7.2.4' platformBuildVersionName=''
C:\Users\12801\Desktop> aapt dump badging C:\Users\12801\Desktop\UI自动化工具\app自动化工具集合\apk\xuechebu.apk | findstr launchable-activity
launchable-activity: name='com.bjcsxq.chat.carfriend.module_main.activity.SplashActivity' label='' icon=''
- adb进行app安装
adb install apk路径
- app卸载
adb uninstall app包名
- 上传文件:将电脑上的文件上传到手机
adb push 电脑上的文件路径 手机路径
- 文件下载:将手机上的文件下载到电脑
adb pull 手机文件路径 电脑路径
- adb查看日志信息
adb logcat # 查看日志
adb logcat > log.log # 将日志保存在文件中
- adb测试app的启动速度(性能测试)
需要关注的结果是totaltime,在实际的测试过程中会进行多次测试,然后取平均值。也可以和同类型的产品进行对比测试
# adb shell am start-W 包名/界面名
adb shell am start-W com.bjcsxq.chat.carfriend/.module_main.activity.MainActivity
# 结果
thistime
totaltime:主要关注的
waittime
- adb稳定性测试
需要借助集成在adb工具中的monkey
工具进行稳定性测试,monkey
是通过java编写的稳定性测试工具,主要用于测试app会不会出现崩溃的情况。
相当于让一只猴子随机操作app,所有的操作都有可能出现,通过长时间的操作来测试app会不会出现问题。
monkey常用的参数和命令:
-
adb shell monkey -p app包名 n
-p app包名:对指定的app进行随机操作
n:对app进行随机操作的次数
-
adb shell monkey -p app包名 -v n
adb shell monkey -p app包名 -v -v n
# 推荐使用-v:表示的是记录信息的级别
一个-v表示level0,显示的信息最少,是默认的级别
两个-v表示level1,将本程序的相关信息输出的比较详细
三个-v表示level2,会将其他程序的相关信息也输出出来
可以将信息输出至文件中
-
adb shell monkey -p app包名 -v -s -s的值 n
-s:用于指定伪随机数,如果两次的伪随机数相同,那么两次的操作步骤、流程和操作时间完全一样。主要的作用就是用于复现操作中出现的问题
-
adb shell monkey -p app包名 --throttle -v -s -s的值 n
--throttle:用于指定随机事件的间隔时间,单位是ms
组合使用:
adb shell monkey -p app包名 --throttle --pct--touch 10 --pct-motion 50 -v -v -s -s的值 n
--pct--touch 10:表示触摸操作,10表示触摸操作在整个随机操作中占10%
--pct-motion 50:表示滑屏操作,50表示滑屏操作在整个随机操作中占50%
- 日志分析:
如果在日志中出现了ANR(application not responsing)表示程序卡死。
如果在日志中出现了Exception,程序可能出现崩溃
- adb模拟手势操作
# 模拟点击操作,xy表示点击的坐标点
adb shell input tap x,y
# 模拟滑屏操作
adb shell input swip startx,starty,endx,endy
# 模拟home 返回 回车操作
adb shell input keyevent '键值'
重要键值:3-home 4-返回键 66-回车键
# 模拟输入操作,需要注意的是不能输入中文
adb shell input test '输入内容'
- 多个设备的注意点
如果adb连接了多个模拟器或者手机,需要使用-s
参数指定设备ID。
adb -s 设备名称 shell 命令