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下载及安装
链接:https://www.androiddevtools.cn/,将sdk下载解压到目录盘,创建Android_HOME系统变量,找到adb在SDK里的绝对路径,放入环境变量path中,%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools
基本用法
1.设备连接
USB连接:
Android设备正常开机,通过USB线与电脑连接
开启开发者选项和USB调试模式
设备驱动状态正常
无线连接(需借助usb):
1.将 Android 设备通过USB与电脑相连,且两者连到同一个局域网
2. 让设备在 5555 端口监听 TCP/IP 连接:adb tcpip 5555
4. 断开 USB 连接。
5. 通过设备IP地址连接设备。adb connect <device-ip-address>
(断开无线连接adb disconnect <device-ip-address>)
2.基本命令
命令含义
adb verion查看adb版本
adb start-server启动adb server(一般无需手动启动)
adb kill-server停止adb server
adb root以 root 权限运行 adbd
adb unroot以 普通权限运行 adbd
adb remount已读写方式挂载系分区/system
adb devices查询已经链接的设备
adb get-serialno打印设备序列号(和adb devices中的序列号一致)
adb wait-for-device阻塞直到设备在线
adb get-state查看设备状态:
device:设备正常连接
offline:连接出现异常,设备无响应
unknown:没有连接设备
adb status-window连续输出设备状态
adb bugreport返回设备bug report相关的所有信息
adb [-d|-e|-s ]adb -e shell //进入到模拟器中
adb –d shell //进入到真机中
adb –s <设备id> shell //进入到指定设备中(adb连接了多台设备需要用到此命令)
adb shell svc wifi enable/disable开/关wifi
adb reboot重启设备
adb reboot-bootloader设备重启到bootloader模式
adb reboot [bootloader|recovery]设备重启到bootloader或recovery模式
adb tcpip <port>重启adbd在指定的tcp端口上进行监听
adb usb重启adbd在usb上进行监听
3.常用命令
adb connect <设备id>连接到真机或模拟器
adb install E:\SDK\platform-tools\app-appchina-release.apk 安装apk包
adb uninstall 包名 卸载apk包
pm packageName简写
adb shell pm list packages 查看所有APK包名
adb -s 127.0.0.1:21503 shell pm list packages 指定设备
adb -s 127.0.0.1:62001 shell pm list packages -f 查看所有APK包名及路径
adb shell pm clear packageName 清理应用数据
adb shell am start -n 包名/Activity类名 启动应用
adb shell am force-stop 包名 关闭应用
adb shell screencap -p /sdcard/screencap.png 截屏
日志抓取
adb logcat 命令格式 :
[adb] logcat [<option>] ... [<filter-spec>] ...
其中<filter-spec> 可以由多个 <tag>[:priority] 组成
adb logcat --help 查看内置的帮助说明
选项解析 :(option)
-- "-s"选项 : 设置输出日志的标签, 只显示该标签的日志;
--"-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;
--"-r"选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;
--"-n"选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;
--"-v"选项 : 设置日志的输出格式, 注意只能设置一项;
--"-c"选项 : 清空所有的日志缓存信息;
--"-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞;
--"-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞;
--"-g"选项 : 查看日志缓冲区信息;
--"-b"选项 : 加载一个日志缓冲区, 默认是 main, 下面详解;
--"-B"选项 : 以二进制形式输出日志;
过滤项解析<tag>[:priority] , 标签:日志等级, 默认的日志过滤项是 " *:I " ;
-- V : Verbose (明细);
-- D : Debug (调试);
-- I : Info (信息);
-- W : Warn (警告);
-- E : Error (错误);
-- F: Fatal (严重错误);
-- S : Silent(Super all output) (最高的优先级, 可能不会记载东西);
例如:
adb logcat | find "packageName" >d:\hello.txt 将logcat导出到d盘
adb logcat | find "packageName" 在dos窗口中日志
adb logcat ActivityManager:I MyApp:D *:S //输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)
Monkey命令
一、Monkey事件注入机制
Monkey注入系统事件是通过 framework 层的 hidenApi (如:activemanager,inputmanager,windowmanager) 获取系统服务。
Monkey中有11种事件,这些事件在MonkeyEventSource中对事件之间的比例进行设置。Monkey事件根据类型比例生成事件队列,循环查找事件。
a.触摸事件(inputmanager):包括屏幕以及物理键的触摸,滑动,点击事件。
b.Activity事件(activemanager):是指我们调用Android系统组件的事件。
c.Window事件(windowmanager):是指操作Window的事件,例如转屏
二、基本参数介绍
adb shell monkey -p com.tal.kaoyan -v 200 一个-v一级日志,越多越详细 最多可以写3个
anr 表示Android未相应
没有出现问题就会出现monkey finished
adb shell monkey -p com.tal.kaoyan -v 200 >D:/test.txt 指定位置生成日志
adb shell monkey -p com.tal.kaoyan --throttle 20 -v 200 执行200次每次间隔20毫秒
adb shell monkey -p com.tal.kaoyan --ignore-orashes -v 200 出现问题会继续执行不会终止测试
--ignore-crashes 忽略应用程序崩溃(Force & Close错误),继续发送执行事件,直到事件数执行完成
--ignore-timeouts 通常,当应用程序发生任何超时错误(如“Application Not Responding”对 话框)时,Monkey将停止运行。如果设置此选项,Monkey将继 续向系统发送事件,直到计数完成
--ignore-security-exceptions 通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将 停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成
--kill-process-after-error 通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项时,将会通知系 统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,设备只是在结束事件之 后,简单地保持在最后的状态
-v -v二级日志
--pct-touch 调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
--pct-motion 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)
--pct-trackball 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)
--pct-nav 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
--pct-majornav 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
--pct-appswitch 调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
--pct-anyevent 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等
压力测试
--pct-syskeys 调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)
adb -s 127.0.0.1:62001 shell monkey -p com.tal.kaoyan --ignore-crashes --ignore-timeouts --ignore-security-exceptions --kill-process-after-error -v-v --pct-syskeys 80 10000>E:\bugLog.txt