ADB概述
ADB(Android Debug Bridge)顾名思义—“安卓调试桥”。
是一种功能多样的命令行工具,可与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
- 客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
- 守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
- 服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。
关于移动端Android平台上的自动化框架,很多都是基于ADB进行连接,甚至很多的API接口的调用也是借用的ADB
点击前往—官方文档
一、安装与连接
首先,需要Java sdk
环境,这个就不再赘述。网上有很多教程,大家自行解决。
可以直接去国内的这个网站下载Android SDK:传送门;进入页面往下拉,找到SDK Tools
,选择适合自己的版本进行下载。以下内容在win7环境安装,win10大体上相同。
下载后解压或安装,可以看到下图所示内容
这时候,如果Java环境安装正确,双击SDK Manager.exe就可以打开下图所示
这里面提供了很多的工具以供下载,比如Tools里面的Android SDK Platform-tools,里面就有我们所需要的Adb套件了。
下载安装完毕,接下来配置环境变量
-
创建ANDROID_HOME,值就是SDK的目录
-
在Path变量中添加以下路径变量
- ;%ANDROID_HOME%\platform-tools
- ;%ANDROID_HOME%\tools
-
接下来就可以在命令行cmd窗口进行验证了。
- 输入adb version,显示以下版本号,即为安装成功。
安装成功后,怎样进行连接呢??
- 首先无论是真机,还是模拟器,开发者选项内的
USB调试
是需要开启的-
这里进行演示使用的是夜神模拟器,则需要主动去连接以下,命令:
adb connect 127.0.0.1:62001
-
显示
connected to 127.0.0.1:62001
则表示连接成功;可以使用adb devices
查看当前连接的设备
-
二、常规使用方法
序号 | 命令 | 功能 |
---|---|---|
01 | adb devices | 查看当前已连接设备 |
02 | adb shell getprop ro.build.version.release | 查看系统版本(安卓版本) |
03 | adb shell pm list packages | 获取所有应用包名 |
04 | adb shell dumpsys window|grep mCurrent | 获取当前启动的应用包名 |
05 | adb shell pm list packages huawei | 获取包名包含某字符串的应用 |
06 | adb logcat | 查看日志 |
07 | adb install ok.apk | 使用命令安装apk |
08 | adb -s [设备序列号] install ok.apk | 多台设备安装apk |
09 | adb uninstall [包名] | 卸载应用 |
10 | adb shell wm size | 查看屏幕分辨率 |
其实以上命令日常的使用差不多足够了;毕竟现在自动化框架把该有的功能也都集成了。
三、Adb shell
实际上,Android系统是基于Linux内核的,所以Linux的很多命令在Android里也能够使用。
如果输入adb shell
则进入Android的终端命令行模式
- adb shell
- adb shell dumpsys
- adb shell pm
- adb shell am
- adb shell ps
- adb shell monkey
#清除apk的所有缓存,再次打开apk会重新申请权限
adb shell pm clear com.taobao.taobao
四、性能统计dumpsys
- 获取所有的 dumpsys 子命令
dumpsys | grep -i DUMP
- 获取当前
activity adb shell dumpsys activity top
- 获取 activities 的记录,可以获取到 appium 依赖的原始
activity dumpsys activity activities
- 获取特定包基本信息
adb shell dumpsys package com.taobao.taobao
- 获取系统通知
adb shell dumpsys notification
- 获得内存信息
adb shell dumpsys meminfo com.android.settings
- 获取 cpu 信息
adb shell dumpsys cpuinfo
- 获取 gpu 绘制分析
adb shell dumpsys gfxinfo com.android.settings
- 获取短信
adb shell dumpsys activity broadcasts | grep senderName=
五、Monkey工具
Monkey是一个在模拟器或设备上运行的程序,可生成伪随机用户时间,可以对正在开发的应用做一个稳定性的测试;属于一种伪随机的便利工具。
- 不支持业务行为定制
- 经常点到外部的app
- 经常点击到注销和退出
- 无法灵活控制
- 常见的遍历工具:
- UIcrawler
- 谷歌原生monkey
- 百度SmartMonkey
- 腾讯NewMonkey
- 头条zhangzhao Maxim
- 等等
当我们要使用Monkey时,需要知道他的各个参数是怎样填写的。
序号 | 参数 | 含义 |
---|---|---|
01 | -p | 指定被测应用程序 |
02 | –pct-touch 60 | 点击事件占60%比重 |
03 | –pct-motion 10 | 滑动事件占10%比重 |
04 | –pct-majornav 20 | 主要导航事件占20%比重 |
05 | –pct-syskeys 10 | 系统级事件操作占10%比重 |
06 | –throttle [毫秒] | 设置事件之间的缓冲时间 |
07 | –ignore-crashes | 忽略崩溃 |
08 | –ignore-timeouts | 忽略超时 |
09 | –ignore-native-crashes | 忽略本地崩溃 |
10 | –monitor-native-crashes | 忽略本地崩溃代码 |
11 | –ignore-secuurity-execptions | 忽略安全异常 |
12 | -s | 随机种子数 伪随机 |
13 | -v -v -v | 最高等级日志信息 |
事件的参数中还有一些未列举的,比如:
- trackball–轨迹球(无规则滑动)
- syskeys–系统级事件操作
- nav–方向导航
- appswitch–app之间activity活动窗口切换交互
- anyevent–不常见的操作事件
举个栗子:
# monkey测试淘宝
adb shell monkey -p com.taobao.taobao --pct-touch 60 --pct-motion 10 --pct-majornav 20 --pct-syskeys 10 -s 17 --throttle 300 --ignore-crashes --ignore-timeouts --ignore-native-crashes --monitor-native-crashes --ignore-security-exceptions -v -v -v 200 >D:\monkeytest.txt
这个的命令呢,就是monkey测试淘宝应用,点击事件占60%比重、滑动事件占10%比重、主要导航事件占20%比重、系统级事件操作占10%比重、设置伪随机种子17号、设置事件之间的缓冲时间300毫秒、忽略崩溃、忽略超时、忽略本地崩溃、忽略本地崩溃代码、忽略安全异常、 -v -v -v 最高等级日志信息,事件次数200次,日志结果输出至D:\monkeytest.txt