ADB介绍:
Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互。
ADB是一个C/S架构的应用程序,由三部分组成:
运行在pc端的adb client:
命令行程序”adb”用于从shell或脚本中运行adb命令。首先,“adb”程序尝试定位主机上的ADB服务器,如果找不到ADB服务器,“adb”程序自动启动一个ADB服务器。接下来,当设备的adbd和pc端的adb server建立连接后,adb client就可以向ADB servcer发送服务请求;
运行在pc端的adb server:
ADB Server是运行在主机上的一个后台进程。它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,ADB Server还需要将adb client的请求通过usb或者tcp的方式发送到对应的adbd上;
运行在设备端的常驻进程adb demon (adbd):
程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务。
ADB下载及安装:
下载adb压缩包去解压即可:链接:https://pan.baidu.com/s/1ERrl6t8n4I713_IjXaRVWw
提取码:u4ig
然后找到adb在SDK里的绝对路径,放入环境变量path中
(备注:如果下载放入到D盘去解压,打开dos窗口那么就要进入到D盘,然后再去执行adb命令,输入adb查看它是否安装成功)
然后输入adb version 查看版本 可以看出是否安装成功,如下就已经成功了。
启动 adb server 命令:adb start-server
停止 adb server 命令:adb kill-server
查询已连接设备/模拟器:adb devices
这个是成功检测到我们的蓝蝶模拟器的操作系统了。
该命令经常出现以下问题:
offline —— 表示设备未连接成功或无响应;
device —— 设备已连接;
no device —— 没有设备/模拟器连接;
List of devices attached 设备/模拟器未连接到 adb 或无响应
那么接下来我们可以启动adb服务了
启动adb服务命令:adb start-server。
停止adb服务命令:adb kill-server。
我们接下来可以用adb shell进入操作界面
注意:需要打开我们的蓝蝶模拟器。
当存在多个Android操作系统时,进入任一系统方式:adb –s 设备名称 shell
获取手机内所有apk对应的包名和路径
adb shell pm list package -f
(注:有些电脑是不需要带 -f 的)
这些一行一行的就是apk对应的包名和路径
将系统所有当前运行的activity(程序)日志输出到本地目录
adb shell dumpsys activity >D:\APP\Android\namelog.txt
例子:
我们可以在包中找到我们Android自带的计算器程序。
接下来我们的对计算器这个程序进行加压,从而进行压力测试。
Adb shell monkey –p com.android.calculator2 –v –v 500
我们来分析一下这个命令
首先adb shell是调用了adb的shell基础程序然后monkey这个是调用了Android自带的自动化测试工具monkey 。–p是调用某个包名意思。Com.android.calculator2 就是我们计算器的程序名称。
输出我们的一次压力测试的日志记录。
adb shell monkey –p com.android.calculator2 -v -v 500 >D:\APP\Android\jisuanqi.txt
单个设备时安装apk:adb install 本地路径.apk
多个设备时安装apk:adb -s 虚拟设备名称1虚拟设备名称2 install 本地路径.apk
卸载apk软件adb uninstall 软件名
查看卸载结果:cd /data/data
从PC上发送文件到安卓模拟器:adb push 本地路径 远程路径
先在模拟器的SD外置卡建一个mydata目录:Adb shell mkdir –p /sdcard/mydata
从安卓模拟器下载文件到电脑:Adb pull 远程路径 本地路径
先在模拟器的SD外置卡写一个文件new1.txt
Monkey的参数和用法
-p <测试的包名列表>
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中的所有app。
指定一个包:adb shell monkey -p 程序名称 100
指定多个包:adb shell monkey –p 程序名称1 –p 程序名称2 100
示例:adb shell monkey -p com.android.calculator2 -p com.android.calendar 100
-v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下所示:
示例:
Level 0 :adb shell monkey -p com.android.calculator2 -v 100
// 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
Level 1 :adb shell monkey -p com.android.calculator2 -v -v 100
// 提供较为详细的日志,包括每个发送到Activity的事件信息
Level 2 :adb shell monkey -p com.android.calculator2 -v -v -v 100
// 最详细的日志,包括了测试中选中/未选中的Activity信息
-s
随机数种子,用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
示例:
测试1:adb shell monkey -p com.android.calculator2 –s 10 100
测试2:adb shell monkey -p com.android.calculator2 –s 10 100
--throttle <毫秒>
在事件之间插入固定延迟。通过这个选项可以减缓Monkey 的执行速度。如果不指定该选项,Monkey 将不会被延迟,事件将尽可能快地被执行完成。
示例:adb shell monkey -p com.android.calculator2 --throttle 1000 -v 100
Monkey 事件
- -pct-touch <percent> | 调整触摸事件的百分比 (触摸事件是一个down-up事件,它发生 在屏幕上的某单一位置的一次点击-抬起事件)。 |
- -pct-motion <percent> | 调整动作事件的百分比 (动作事件由屏幕上某处的一个 down事件、一系列的伪随机事件和一个up事件组成, 即一个滑动操作,但是是直线的,不能拐弯。) |
- -pct-trackball <percent> | 调整轨迹事件的百分比 (轨迹事件由一个或几个随机的移 动组成,有时还伴随有点击,轨迹球现在智能手机上已经很 少用了,就是类似手柄的方向键一样)。 |
- -pct-nav<percent> | 调整“基本”导航事件的百分比 (导航事件由来自方向输入设备 的上/下/左/右组成,现在智能机上基本也少了)。 |
- -pct-majornav<percent> | 调整“主要”导航事件的百分比 (这些导航事件通常引发图形 界面中的动作,如键盘的中间按键、回退按键、菜单按键) |
- -pct-syskeys<percent> | 调整“系统”按键事件的百分比 ( 这些按键通常被保留, 由系统使用,如Home、Back、Start Call、End Call拨号 及音量控制键)。 |
- -pct-appswitch<percent> | 调整启动Activity的百分比。在随机间隔里,Monkey将 执行一个startActivity()调用,作为最大程度覆盖包中 全部Activity的一种方法。 |
- -pct-anyevent<percent> | 调整其它类型事件的百分比。(它包罗了所有其它类 型的事件,如:按键、其它不常用的设备按钮、等等。) |
--pct-pinchzoom<percent> | 调整二指缩放事件的百分比。(即智能机上的放大缩小手势操作) |
- -pct-flit <percent> | 调整键盘事件的百分比。(如点击输入框,键盘弹起 ,点击输入框以外区域,键盘收回) |
- -pct-rotation <percent> | 调整屏幕旋转百分比。(如横屏、竖屏) |
Android 7.0 的11个事件
0:触摸事件百分比参数--pct-touch
1:滑动事件百分比参数--pct-motion
2:缩放事件百分比参数--pct-pinchzoom
3:轨迹球事件百分比参数--pct-trackball
4:屏幕旋转事件百分比参数- -pct-rotation
5:基本导航事件百分比参数(键盘上的上下左右输出操作) --pct-nav
6:主要导航事件百分比参数--pct-majornav
7:系统事件百分比参数--pct-syskeys
8:Activity启动事件百分比参数--pct-appswitch
9:键盘翻转事件百分比参数--pct-flip
10:其他事件百分比参数--pct-anyevent