主要内容
adb构成和工作原理
全称:Android Debug Bridge 就是起到调试桥的作用。顾名思义,adb就是一个debug工具。
adb构成
- client端:在电脑上,负责发送adb命令
- daemon守护进程:在手机上,负责接收和执行adb命令
- server端:在电脑上,负责管理client和daemon之间的通信
adb工作原理
- client端将命令发送给server端
- server端将命令发送给daemon端
- daemon端进行执行
- 将执行结果,返回给server端
- server端将结果再返回给client端
adb的作用
借助adb工具,我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。简而言之,adb就是连接Android手机和PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。
adb常用命令
查看当前连接设备
必要前提:设备端上版本号多次点击打开开发者选项–>打开USB调试
adb devices
没有设备信息时可以尝试手动连接(模拟器)
adb connect 127.0.0.1:62001 本地夜神模拟器为例
端口号被占用或连接出错时尝试使用一下方法解决
安装apk文件
adb install <apk文件路径> 将指定的apk安装到安装到设备上。如:adb install F:\Desktop\酷安.apk
adb install -r xxx.apk 强制安装或覆盖安装
adb –s 设备号 install xxx.apk 连接多个设备时,指定设备号安装
卸载APP
adb uninstall <apk包名> 例如:adb uninstall com.coolapk.market
adb uninstall -k <apk包名> -k参数为卸载软件时保留配置和缓存文件
获取包名和界面名
- 包名(package):决定程序的唯一性
- 界面名(activity):可以理解为,一个界面名对应着一个界面
步骤:打开需要测试的应用程序,输入adb命令
命令格式:Mac/Linux:
adb shell dumpsys window windows | grep mFocusedApp
Windows:
adb shell dumpsys window windows | findstr mFocusedApp
adb shell am/pm
am全称为activity manager,可使用am命令模拟各种系统的行为,如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等。
adb shell am start -W包名/界面名 获取APP启动时间(ms)
This time–>activity
Total time–>Application+activity
wait time–>系统+Application+activity
启动时间看Total time,Application一般不会有
adb shell am start <apk包名>/<activityName> 启动一个app。
adb shell am force-stop 包名 强制关闭应用程序
adb shell am start -n 包名/界面名 -S 启动APP,-S是启动前先杀掉这个进程
pm全称为package manager,利用pm命令可模拟android行为或查询设备上的应用等。
adb shell pm list packages 获取所有应有的包名
adb shell pm list packages -s 获取系统应用的包名
adb shell pm list packages -3 获取第三方应用的包名
adb shell pm clear 包名 清除应用程序缓存数据
adb文件传输
adb push 电脑的文件路径 手机的文件夹路径 从电脑发送文件到手机
adb pull 手机的文件路径 电脑的文件夹路径 从手机拉取文件到电脑
其他常用命令
adb kill-server 停止服务器
adb start-server 启动服务器
adb shell 进入到安卓手机内部的Linux系统命令行中
adb logcat 获取手机日志
adb shell ps/top 查看当前终端中的进程信息,如pid等
adb shell screencap /sdcard/screen.png 可以使用screencap命令来进行手机屏幕截图
adb shell screenrecord /sdcard/demo.mp4 录制屏幕视频
monkey常用命令
跑monkey是android自动化测试的一种手段,所谓monkey测试就是模拟用户的按键输入,触摸屏输入,手势输入等。当Monkey程序在模拟器或设备运行的时候,如果用户比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey的随机重复的方法对apk作压力测试,来测试android app的稳定性。
注意:日志必须写在倒数第二,事件数写在倒数第一,其他命令不分顺序
事件数
adb shell monkey 100 100为事件次数
频率 –throttle(毫秒),延时操作
adb shell monkey --throttle 1000 50 1000为事件频率,单位ms;50为事件次数
使用频率的好处:
1:尽可能模拟用户的操作
2:通过频率来设置不同的压力
3:通过频率和事件数量来控制运行时间
monkey命令模拟用户操作,持续执行1分钟。大部分用户的执行频率是0.5s,1s
1分钟=60s=60000ms
1000ms*次数=60000ms 次数=60
所得命令为:adb shell monkey --throttle 1000 60
指定执行的应用 –p
adb shell monkey -p com.wuba --throttle 1000 50 -p指定一个包,1000为频率 100为事件次数
adb shell monkey -p com.wuba -p com.handsgo.jiakao.android 200 -p 指定多个包,对每个包执行200次事件
日志 -v
-v 用于指定反馈信息级别,总共分为level 0、level 1、level 2三个级别,级别越高,输出的日志越详细。
adb shell monkey -p com.wuba -v -v -v 100 >D:\app\wuba.log 将日志信息保存到指定位置
日志中的日志信息:
ANR:程序无响应
CRASH:程序崩溃或异常
Exception:异常
调试选项
--ignore-crashes 忽略在应用程序出现crash时导致的monkey停止
--ignore-timeouts 忽略在应用程序出现ANR问题时导致monkey停止
--ignore-security-exceptions 忽略应用程序发生许可错误时导致monkey停止
--kill-process-after-error 当应用程序发生错误时,应用程序停止运行并保持在当前状态
完整应用monkey命令进行稳定性测试
adb –s 44a188f9 shell monkey -p com.tal.kaoyan –s 101 --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 500 >d:\kaoyan.log
说明:第一个-s指定设备,如果只连接了一台设备,可不用该参数。
-p <apk包名>只允许系统启动指定的app,如果不指定,将允许系统启动设备中的所有app,也可指定多个包。
第2个-s,用于指定伪随机数生成器的seed值,可以自己指定。如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
–throttle <毫秒数> 指定用户操作(事件)间的时延。
–ignore-crashes 指定当应用程序崩溃时,Monkey依然发送事件,直到事件计数完成。
–ignore-timeouts 当应用程序发生ANR错误时,Monkey依然会发送事件,直到事件计数完成。
最后的数字(这里是500):表示Monkey程序模拟500次随机用户操作事件。
(> 将日志信息保存到d:\ kaoyan.log