什么是ADB?
ADB,即?Android Debug Bridge,它是Android 开发/测试人员不可替代的强大工具。
Adb是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。
adb的工作原理
当您启动某个adb 客户端时,客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。
参照链接:
https://developer.android.google.cn/studio/command-line/adb
[if !supportLists]三、[endif]adb基本用法
adb 命令的基本语法如下:
adb [-d|-e|-s <serialNumber>] <command>
如果只有一个设备/模拟器连接时,可以省略掉?[-d|-e|-s ]?这一部分,直接使用?adb 。
如果有多个设备/模拟器连接,则需要为命令指定目标设备。
-d ?指定当前唯一通过USB 连接的 Android 设备为命令目标
-e ??指定当前唯一运行的模拟器为命令目标
-s <serialNumber> ?指定相应serialNumber 号的设备/模拟器为命令目标
adb -s 485f0fec install C:\Users\xxx\xxx-01.apk
启动/停止adb server:
adb start-server
adb kill-server ?
查看adb版本:
adb version
查找手机上的安装包包名
1.adb shell pm list package? ? 查看手机上所有的安装包
2.adb shell pm list package -3? ? 查看第三方安装包
3.adb shell pm list packages -s? ? ?查看系统的包
4.adb shell pm list packages -e “要搜索的内容”? ? ?查看启动包中搜索的包
5.adb shell dumpsys window | findstr mCurrentFocus? ?获取当前打开的APP包名(前面的为包名,斜杠后面的是当前启动的acivity)
6.adb shell pm clear (apk包名)???清除应用数据与缓存
7.adb shell am force-stop com.peopledailychina.activity ?强制停止应用
8.adb pull 和adb push 命令
adb pull <手机路径> ? <本机路径> ?从手机中拉取信息到本地电脑上
adb push <本机路径> ?<手机路径> ?从本地电脑推送信息到手机上
什么是Monkey?
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。(其实可以想象成一只猴子啥都不知道,疯狂乱敲......)
Monkey 运行在设备或模拟器上面,可以脱离PC运行(一般在一些大公司中都是将其抽离成一个测试专用的APP工具,使用相应的操作来完成测试)。
Monkey命令和基本参数介绍
注意:所有的参数都需要放在monkey和设置的次数之间,参数的顺序可以调整;若带了-p ,-p必须放在monkey之后,参数必须在-p和count之间:
adb shell monkey -p com.peopledailychina.activity --ignore-crashes --ignore-timeouts ?--ignore-security-exceptions --pct-touch 70 --pct-motion 25 --pct-majornav 5 -v -v -v --throttle 300 -s 100 100000 > C:\Users\xxx\Desktop\monkey.txt
-v??????????默认级别,仅提供启动、测试完成和最终结果等少量信息
-v? -v ?????提供较为详细的日志,包括每个发送到Activity的事件信息
-v? -v? -v???提供最详细的日志,包括了测试中选中/未选中的Activity信息
-s ???????用于指定伪随机数生成器的seed值??
--throttle ??用于指定用户事件的操作间隔时延,单位是毫秒
--ignore-timeouts ?忽略超时错误
--ignore-crashes ??忽略crash
--ignore-security-exceptions忽略许可错误