一,adb介绍
1.1,简介
- Android Debug Bridge(Android 调试桥)简称 adb
- Android sdk 中提供的用于管理模拟器或真机状态的工具
- 命令行工具
1.2,adb 操作手机设备
- 打开应用
adb shell am start -n com.tencent.wework/.launch.LaunchSplashActivity
- 传输文件
- 点击,输入,滑动等
- 硬件操作 返回,回到首页
- 性能指标
1.3,adb 工作原理
- 采用了客户端-服务器(C/S)模型,包括三个部分:
- 客户端 client
- 服务端 server
- 守护进程 daemon
1.4,adb 环境搭建与配置
(1) Java 环境安装与配置
-
环境安装贴:Java环境准备贴-Windows
-
java 官方下载地址:
- `Oracle Java 技术 | Oracle 中国
- /javase/javase-jdk8-downloads.html`
- 注意:windows 下载 exe 安装包即可
-
社区提供下载地址:
- 链接: 百度网盘 请输入提取码
- 提取码: e5wv
-
j配置Java环境变量:
- java(windows 系统):Java 环境安装
- java(mac 系统):Java环境准备帖-Mac
(2)Android SDK 环境安装
-
SDK 下载
- 官方 下载地址:
- 社区提供下载地址:
- 链接: 百度网盘 请输入提取码
- 提取码: e5wv
-
SDK 环境配置
ANDROID_HOME D:\adt-bundle-mac-x86_64-20140702\sdk
PATH %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools
(3)检查是否安装成功
- adb 回车(或者 adb shell )
二,adb常用命令
2.1 adb 与设备交互
(1)连接模拟器 (mumu 为例)
- windows:
adb connect 127.0.0.1:7555
adb devices
- mac:
adb kill-server
adb devices
(2)连接真机(android 手机)设备
- 手机端:让手机处于一个调试模式
- 电脑端安装手机驱动
(3)查看手机设备状态
-
命令:
adb devices
adb get-state
-
设备状态种类
- device 正常
- offline 连接出现异常,设备无响应
- unauthorized 未授权
2.2 adb 安装卸载命令
(1) adb 命令格式
- 格式 :
adb [-d|-e|-s <serialNumber>]<command>
- -d 指定当前唯一通过 Usb 连接的 android 设备为命令目标(了解)
- -e 指定当前唯一运行的模拟器为命令目标(了解)
- -s 指定相应的设备为命令目标(重点)
(2) 安装
- 普通安装
adb install <apk路径>
- 覆盖安装/替代安装
adb install -r <apk路径>
(3) 卸载
- 卸载应用
adb uninstall 包名
- 卸载应用(不删除配置文件,保存数据缓存信息)
adb uninstall -k 包名
2.3 adb命令启动页面
(1) 包和 Activity(活动页)的概念
- package 包:是 Android 应用的唯一标志
- Activity 活动页: Android 应用页面,一个页面就是一个 Activity
(2) 获取当前的页面名
- 1、打开手机 app 应用的某个页面
- 2、打开命令行工具
- 执行命令:
adb shell "dumpsys window | grep mCurrentFocus"
获取当前的页面名
- 执行命令:
(3) 获取启动页面的 activity
- 执行命令:
- mac:
adb logcat ActivityManager:I | grep "cmp"
- win:
adb logcat ActivityManager:I | findstr "cmp"
- mac:
(4) 启动页面
- 执行命令:
adb shell am start -n <包名>/<avticity名>
2.3 adb清缓存命令
(1) adb shell 应用
- 查看目录结构:
adb shell ls
- 查看系统当前日期:
adb shell date
- 查看系统 CPU 使用情况:
adb shell cat /proc/cpuinfo
- 查看系统内存使用情况:
adb shell cat /proc/meminfo
(2) 查看应用列表
- 显示所有应用:
adb shell pm list packages
- 显示系统自带应用:
adb shell pm list packages -s
- 显示第 3 方应用:
adb shell pm list packages -3
(3)清除应用数据及缓存
adb shell pm clear <包名>
2.4 adb文件传输
adb push 电脑路径 设备路径
-
adb pull 设备路径 电脑路径
2.5 adb日志操作
(1)日志级别
- V — 明细 verbose(最低优先级)
- D — 调试 debug
- I — 信息 info
- W — 警告 warn
- E — 错误 error
- F — 严重错误 fatal
- S — 无记载 silent(最高优先级,绝不会输出任何内容)
(2)查看日志
- adb logcat
(3)查看日志常用的参数
adb logcat --help
- adb logcat [TAG:LEVEL ] [TAG:LEVEL ] …
-
adb logcat
打印默认日志数据 -
adb logcat -v time
打印时间 -
adb logcat -v color
使用不同的颜色来显示每个优先级 -
adb logcat -f <filename>
将日志输出到手机文件,filename为手机文件的路径地址 -
adb logcat > log.log
保存日志到PC上 -
adb logcat -c
清理已存在的日志
三,App压力与性能测试
3.1 adb 模拟手机按键操作
- 1、打开【指针位置】设置
- 2、执行
adb shell input
命令,查看可以执行的相关命令
(1)模拟点击事件(打开app)
- 执行命令:
adb shell input tap x坐标 y坐标
(x,y坐标为app对应的坐标)
(2) 模拟输入事件
- 打开app页面,将鼠标放到对应的输入框处
- 执行命令:
adb shell input text <输入内容>
(3) 模拟滑动事件
adb shell input swipe <起点x> <起点y> <终点x> <终点y> <滑动时长>
(4) 模拟手机按键
- 返回键:
adb shell input keyevent 4
- Home 键:
adb shell input keyevent 3
(置应用于后台运行) - 音量放大:
adb shell input keyevent 24
- 音量缩小:
adb shell input keyevent 25
3.2 adb性能分析
###(1) CPU 和内存使用情况
- 查看当前系统 CPU 使用情况:
adb shell dumpsys cpuinfo
(查看某一时段内的均值) - 查看当前系统的内存:
adb shell dumpsys meminfo
- 查看某个应用的内存:
adb shell dumpsys meminfo <应用名>
###(2)top 命令
adb shell top
-
adb shell top |grep "包名"
查看某个包的一些性能指标 adb shell top -d 1 |grep "包名"
###(3)电池电量
- 命令:
adb shell dumpsys battery
3.3 adb压力测试
(1)Monkey 介绍
- Monkey 是 Google 提供的一个用于稳定性与压力测试的命令行工具
- 可以运行在模拟器或者实际设备中
- 它向系统发送伪随机的用户事件对软件进行稳定性与压力测试
(2) Monkey 基本用法
- 在命令提示符中输入
adb devices
查看有无连接的设备 - 确认有设备连接
- 获取 app 的包名
adb shell monkey [参数] {随机发送事件数}
- 最简单的 monkey 命令:
adb shell monkey 100
(3) Monkey 常用选项
-
-v
:用于指定反馈信息级别,总共分 3 个级别adb shell monkey -v -v -v 10
-
-s <seednumber>
:用于指定伪随机数生成器的 seed(种子)值adb shell monkey -s 123 10
-
--throttle <milliseconds>
:每个事件结束后的间隔时间adb shell monkey --throttle 300 10
-
-p
: 用于约束限制,用此参数指定一个或多个包adb shell monkey -p com.android.browser 10
-
--ignore-crashes
:忽略崩溃 -
--ignore-timeouts
:忽略超时 -
--ignore-security-exceptions
:忽略安全异常 -
--ignore-native-crashes
:忽略本地代码导致的崩溃异常 -
--monitor-native-crashes
:跟踪本地方法的崩溃问题
(4)Monkey 事件选项
-
--pct-touch
:触摸事件 -
--pct-motion
:滑动事件 -
--pct-appswitch
:activity 之间的切换 -
--pct-pinchzoom
:缩放事件 -
--pct-rotation
:屏幕旋转事件 -
--pct-flip
:键盘事件 -
--pct-anyevent
:任意事件 - 注意:所有类型属性比例加起来不能超过 100
(5) Monkey 日志分析
- 程序无响应,ANR 问题:在日志中搜索 “ANR”
- 崩溃问题:在日志中搜索 “CRASH”
- 其他问题:在日志中搜索 “Exception”