adb基本操作及环境配置
前言
全网最全的adb知识点
学习框架如下:
一、adb基础
1.adb是什么?
全称: Android debug bridge
安卓 调试 桥
ADB是我们用来操作(调试)android设备(比如android手机)的一套指令集。
adb client(本质adb shell):每打开一个adb shell的命令行窗口,就存在一个adb client客户端进程。
adb server:PC端和手机端交互的唯一接口。
adbd(adb daemon):每台安卓设备只能有一个adbd服务进程
2. 环境搭建
------------------------ ** 环境配置**---------------------------
3.连接手机设备及查看设备状态(先连接设备)
1.先连接设备
- 模拟器
- 真机
Android 模拟器种类
- Android Studio emulator(官方)
- genymotion(信赖网络)
- mumu,雷电,夜神,逍遥等第三方模拟器(推荐)
连接模拟器(mumu 为例)连接设备
windows系统:
adb connect 127.0.0.1:7555
mac系统:
adb kill-server
查看手机状态
adb devices
二选一
adb get-state
设备状态种类
- device 正常
- offline 连接出现异常,设备无响应
- unauthorized 未授权
4.adb命令格式_安装卸载包
adb 命令格式
- 格式 :
adb [-d|-e|-s <serialNumber>]<command>
- -d 指定当前唯一通过 Usb 连接的 android 设备为命令目标(了解)
- -e 指定当前唯一运行的模拟器为命令目标(了解)
- -s 指定相应的设备为命令目标(重点)
1. 安装
普通安装
adb install xxx.apk
覆盖安装/替代安装
adb install -r <apk路径>
2. 卸载
卸载应用
adb uninstall 包名
adb devices
adb shell pm list packages
adb uninstall com.xxx.xxx
卸载应用(不删除配置文件,保存数据缓存信息)
adb uninstall -k 包名
-
1.打开命令行Windows+R,输入adb devices,查看设备是否连接;
-
2.输入adb shell pm list packages,查看设备已有的程序列表,找到需要卸载多大程序包名;
-
3,输入adb uninstall com.xxx.xxx(需要卸载的程序包名);
5. adb启动页面
- package 包:是 Android 应用的唯一标志
- Activity 活动页: Android 应用页面,一个页面就是一个 Activity
获取页面的两种方法
1. 获取当前的页面名
1——打开手机或者模拟器的应用的某个页面
2——打开命令行工具:执行命令:
adb shell "dumpsys window | grep mCurrentFocus"
- 以mumu的模拟器为例:获取到包和activity后,关掉qq
- 然后
输入 adb shell am start -n 加上红色框的代码就可以启动应用程序
2.获取启动页面的 activity
命令:
mac:adb logcat ActivityManager:I | grep "cmp"
win: adb logcat ActivityManager:I | findstr "cmp"
1.直接找到包和activity (复制cmp=后面的内容)
2.然后adb shell am start -n <包名>/<avticity名>
,即可启动应用程序
最终启动页面
命令:
adb shell am start -n <包名>/<avticity名>
6. 使用 adb shell 命令清缓存
1.理解Android系统
linux 系统内核,底层是Linux的操作系统吗,可以用Linux命令
2.adb shell 应用
直接进入手机内环境
exit 退出目录
查看目录结构 :adb shell ls
查看系统当前日期 :adb shell date
查看系统 CPU 使用情况 :adb shell cat /proc/cpuinfo
查看系统内存使用情况 :adb shell cat /proc/meminfo
3. adb shell 应用 - 查看应用列表
显示所有应用 :adb shell pm list packages
显示系统自带应用 adb shell pm list packages -s
显示第 3 方应用 :
adb shell pm list packages -3
4.清除应用数据及缓存
1.先进入内环境 adb shell
,cd /data/data 再输入ls ,显示所以包的目录
- 再输入
ls | grep <应用名>
3cd 包名——> 再输入 ls
4 清除历史记录
adb shell pm clear <包名>
包名获取方法-----查看当前页面名
adb shell "dumpsys window |grep mCurrentFocus"
pm----packages manager
二、 adb进阶
1.Android 设备与电脑传输文件
adb push
电脑路径 设备路径adb pull
设备路径 电脑路径
notice:跳出android系统执行,否则提示无adb not found
2.使用adb查看手机日志
1).默认打印日志
adb logcat
运行如下
2). 查看日志常用的参数
格式:
adb logcat --help
adb logcat [TAG:LEVEL ] [TAG:LEVEL ] ...
3).打印时间
adb logcat -v time
3.) 使用不同的颜色来显示每个优先级
adb logcat -v color
4)将日志输出到文件
adb logcat -f <filename>
5) 保存日志到pc上
adb logcat >log.log
5.)清理已存在的日志
adb logcat -c
4.根据条件过滤日志
1)打印warning及以上级别的日志
adb logcat -v tima "*:W"
2) 过滤tag 为 ActivityManager,level为Debug及以上级别的日志
adb logcat ActivityManager:D '*:S'
5.常见问题
****************************** 查看问题
6.adb 模拟按键格式
1、打开【指针位置】设置
2、执行adb shell input 命令
红框内是可以input的内容
adb shell tap x坐标 y坐标
adb shell input text <输入内容>
adb shell swipe <起点x> <起点y> <终点x> <终点y> <滑动时长>
模拟手机按键
》》》》》模拟机对于的keyevent值
- 返回键:adb shell input keyevent 4
- Home键:adb shell input keyevent 3(置应用于后台运行)
- 音量放大:adb shell input keyevent 24
- 音量缩小:adb shell input keyevent 25
7.adb 查看性能指标
1.CPU 使用情况
- 查看当前系统 CPU 使用情况:
adb shell dumpsys cpuinfo
2.内存使用情况
展示均值性能,不是很准确
- 查看当前系统的内存:
adb shell dumpsys meminfo
- 查看某个应用的内存:
adb shell dumpsys meminfo <应用名>
应用名就是包名,如何获取包名可以在基础知识查看
8.top 命令
adb shell top
会把当前的cup,内存等各种情况,实时打印性能情况
adb shell top |grep ”包名“ 查看某个包的一些性能指标
过滤不需要的指标,得到目标指标
adb shell top -d 1 |grep “包名"
每隔一秒打印指标可以 加 -d 1
实时打印性能情况
9.电池电量
adb shell dumpsys battery
打印结果
adb shell dumpsys battery
Current Battery Service state:
AC powered: true
USB powered: false
Wireless powered: false
Max charging current: 2000000 # 最大充电电流; mA
status: 2 #电池状态:2:充电状态 ,其他数字为非充电状态
health: 2 #电池健康状态:只有数字2表示good
present: true #电池是否安装在机身
level: 81 #电量: 百分比
scale: 100
voltage: 4108 #电池电压
temperature: 353 #电池温度,单位是0.1摄氏度
technology: Li-poly #电池种类
9.性能相关的具体用法
》》》》》》》 官网介绍
三.monkey 测试
1.什么是monkey
Monkey 是 Google 提供的一个用于 稳定性与压力测试 的命令行工具
2.为什么要做压力测试
- 随机性
- 完整性
- 持续性
3.monkey 命令格式
adb shell monkey [参数] {随机发送事件数}
对应的方法查询不同的值
4.基本用法
1.Monkey 命令- 添加事件数
-
1.在命令提示符中输入adb devices 查看有无连接的设备
-
2.确认有设备连接
-
3.获取 app 的包名(可以看adb基础如何获取报名)
-
执行命令:adb shell monkey [参数] {随机发送事件数}
一百下事件完成时间可能只要几秒,速度很快,时间数不要太少建议1000++
事件随机性很强,可能十多个进行。
2.monkey 打印详细日志
adb shell monkey -v <事件数> //打印一级日志
adb shell monkey -vv <事件数> / /打印较详细日志
adb shell monkey -vvv <事件数>// 打印最全面日志
事件越大,需要时间就多,ctrl +c 停止进程
3.monkey 测试停止条件
- 1、指令执行完成
- 2、遇到崩溃,或者异常
- 3、杀掉进程
如果模拟器系统崩溃,就重启
adb shell 进入内环境
ps | grep 查看Linux进程,找到monkey 的包
kill 加上进程号,就会停止进程,在pc端无法停止,只能进入内环境
4.monkey 运行某个包
- 指定一个包 adb shell monkey -p 包名 [数件数]
- 指定多个包 adb shell monkey -p 包名 -p 包名 [事件数],多个程序会来回切换
5.指定事件时间间隔
真实模拟用户点击事件
--throttle <milliseconds>:
每个事件结束后的间隔时间
adb shell monkey -p 包名 --throttle 时长(秒)
6.设置种子数
-s < 种子> :用于指定伪随机数生成器的seed(种子)值
可以复现上一次随机动作,设置相同的种子数,可以进行相同的序列,来复现进程,寻找一些问题
7.设置事件比例
--pct-touch:触摸事件 ( 设定点击事件百分比)
--pct-motion :滑动事件(设定动作事件百分比 )
--pct-trackball :轨迹球事件( 设定轨迹球事件百分比 )
--pct-nav :导航事件( 设定基本导航事件百分比,比如输入设备上、下、左、右键 )
--pct-majornav:主要导航事件( 设定主要导航事件百分比,比如中间键、返回键、菜单键 )
--pct-syskeys:系统按键事件( 设定系统导航事件百分比,比如HOME键、BACK建、拨号键及音量键 )
--pct-appswitch:activity之间的切换( 设定启动Activity事件百分比)
--pct-pinchzoom:缩放事件
--pct-rotation:屏幕旋转事件
--pct-flip:键盘事件
--pct-anyevent :任意事件 (设定不常用事件百分比)
如果不设置的话,系统会自动默认设定
事件超过100%会报错
可以把事件分配到那几个
8.忽略异常
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--dbg-no-events:初始化启动的activity,但是不产生任何事件
--hprof:指定该项后在事件序列发送前后会立即生成分析报告
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:直到连接了调试器才执行monkey测试
–bugreport:当ANR,系统无响应,Crash的时候获得bugreport
9.保存日志
`
方式一:
adb shell monkey 1000> 文件路径/文件名
方式二:
adb logcat -v time '*E' > monkey.log