adb学习记录(二)
adb学习记录(二)
五、adb进阶命令
adb push <本地文件路径> <手机存储文件夹路径>
将电脑上的文件传到手机指定路径下,文件路径使用绝对路径adb pull <手机文件路径> <本地存储文件夹路径>
将手机上的文件拉到本地指定路径下- 日志的级别:优先级从上到下逐级升高
V-明细verbose
D-调试debug
I-信息info
W-警告warn
E-错误error
F-严重错误fatal
S-无记载silent adb logcat
打印系统默认日志
-v time
日志添加时间然后打印,线程日志区别使用-v threadtime
-v color
不同级别日志用不同颜色区别
-f <手机文件路径>
将日志存放到手机的指定文件里
> <电脑文件路径>
将日志存放到电脑的指定文件里
-c
清理之前缓存的日志
"*:<日志级别>"
打印当前级别及以上级别的日志,例:adb logcat "*:W"
<tag>:level "*:<日志级别>"
打印当前级别及以上级别的日志,例:adb logcat opengl-gc:D "*:S"
adb shell input tap <x坐标> <y坐标>
模拟点击动作adb shell input text <文本内容>
模拟输入操作,将文本内容输入到输入栏里,不要使用中文adb shell input swipe <起点x> <起点y> <终点x> <终点y> <滑动时长>
模拟手机滑动操作,滑动时间单位是msadb shell input keyevent 4
模拟返回键adb shell input keyevent 3
模拟home键,对于这些按键的key值基本都是固定的,可以直接百度到adb shell dumpsys cpuinfo
获取CPU的使用情况adb shell dumpsys cpuinfo
获取内存的使用情况adb shell dumpsys meminfo <包名>
获取指定应用的内存使用情况adb shell top
实时显示当前时间的各个进程的系统资源使用情况,类似于windows的任务管理器adb shell top | findstr "<包名>"
获取某个应用的系统资源使用情况,top后面加-d 1
代表每隔1S打印一次adb shell dumpsys battery
查看手机电池状态
六、monkey压力测试
adb shell monkey <事件数>
随机发送<事件数>的事件,monkey后面加-v
会将事件日志以及一些异常情况打印出来,如果加的是-vv
或者-vvv
,打印的信息会更加全面- monkey的停止条件:事件数执行完毕、遇到崩溃或者异常、关闭monkey进程。
- 关闭monkey进程的方式:
adb shell
进入手机内环境,ps |grep monkey
查看monkey运行的进程号,kill -9 <进程号>
关闭进程 adb shell monkey -p <包名> -vvv <事件数>
只对某个应用发送随机事件,可以针对多个应用,重复加-p <包名>
即可adb shell monkey -p <包名> --throttle <时间> -vvv <事件数>
表示针对这个应用发送事件的事件间隔,单位是msadb shell monkey -p <包名> --throttle <时间> -s <种子seek> -vvv 100
每次进行monkey测试都会产生一个monkey的seek,我们想要复刻此次monkey测试,就可以把seek号传进去即可- 事件分类:
--pct-touch
:触摸事件
--pct-motion
:滑动事件
--pct-trackball
:轨迹球事件
--pct-nav
:基本导航事件
--pct-majornav
:主要导航事件
--pct-syskeys
:系统按键事件
--pct-appswitch
:activity之间的切换事件
--pct-pinchzoom
:缩放事件
--pct-rotation
:屏幕旋转事件
--pct-flip
:键盘事件
--pct-anyevent
:任意事件(不常用事件)
我们进行monkey测试时可以固定分配以上事件的百分比,分配格式:<指令> <比例>
eg:adb shell monkey -p <包名> --pct-touch 80 --throttle <时间> -vvv 100
在100个事件中触摸事件占比80% - 分配事件比例的注意点:
默认是由monkey自动分配11个事件的比例;
当我们只分配了其中部分事件,则其它事件由monkey在剩余的比例中自动分配;
分配事件比例之和最大不能超过100%,否则会出现错误; - 忽略异常以及几个常用的指令:
当有异常或者程序崩溃时会导致monkey停止,这时我们可以通过以下三个指令去忽略异常:
--ignore-crashes
:忽略崩溃
--ignore-timeouts
:忽略超时
--ignore-security-exceptions
:忽略安全异常
eg:adb shell monkey -p <包名> --throttle <时间> --ignore-crashes --ignore-timeouts --ignore-security-exceptions -vvv 100
其它了解的指令:
--kill-process-after-error
:发生错误后直接杀掉进程
--dbg-no-events
:初始化启动的activity,不产生任何事件
--hprof
:在事件序列发送前后立即生成分析报告
--monitor-native-crashes
:跟踪本地方法的崩溃问题
--wait-dbg
:直到连接了调试器才执行monkey测试
--bugreport
:当ANR,系统无响应,crash的时候获得bugreport
10. 收集日志:
(1)在最后加指令> <文件路径>
,会将日志打印到该文件
eg:adb shell monkey -p com.tencent.mm --throttle 300 -vvv 100 > LOG.log
(2)先使用adb logcat -v time '*:E' > log.log
,然后另开一个控制窗口跑普通monkey命令即可
11. 日志分析:
(1)crash闪退
(2)exception异常
(3)force closed强制退出
(4)ANR 程序无响应
文章旨在入门使用,很多工作实际应用只需要你看懂一些指令,并不需要你全部掌握,如文章有错误的地方,欢迎大家指正。互相交流,共同进步。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?