[bug]android monkey命令在Android N和Android O上的一点差异发现
最近再调试这个统计FPS的代码,发现代码在android N上可以正常运行,但在android O上却运行不了,拼了命的报错,给出的提示就是 ZeroDivisionError: division by zero,看这错误很明显就是除数不能为0,理论上来说这问题也比较好定位就一步一步找了,排查代码后发现获取除数这个值的逻辑有问题,重新把逻辑修改后获取到正确的值后,重新运行命令跑的时候有时候会有值,有时候还是继续报这个除数不能为零,再重新查看这个除数的来源,是当屏幕有刷新时才能获取到该值,再查看让屏幕刷新的代码,发现是通过monkey的命令来模拟拖动屏幕操作,但在实际测试过程中屏幕根本就没有动,接下来就看Monkey的命令 :adb shell monkey -f /sdcard/monkeyTest_UD.txt 10,发现是从sd卡中获取一个monkey脚本来运行的,打开monkey脚本后,看看格式也没有啥问题。如下
type = user
count = 10
speed = 1.0
start data >> Drag(300.0, 307.2, 300.0, 819.2,122.8)
Drag(300.0, 307.2, 300.0, 819.2,122.8)
Drag(300.0, 819.2, 300.0, 307.2,122.8)
Drag(300.0, 819.2, 300.0, 307.2,122.8)
给出monkey命令中drag的命令语法:
Drag(xStart,yStart,xEnd,yEnd,stepCount)
D:\WorkSpace3\Performance\>python3 FPStest.py -o UD -c 10
通过gfxinfo取值, 测试开始... bash arg: -f
bash arg: /sdcard/monkeyTest_UD.txt
bash arg: 10
args: [-f, /sdcard/monkeyTest_UD.txt, 10]
arg: "-f"
arg: "/sdcard/monkeyTest_UD.txt"
arg: "10"
data="/sdcard/monkeyTest_UD.txt"
** Error: A RuntimeException occurred:
java.lang.NumberFormatException: For input string: "122.8"
at java.lang.Integer.parseInt(Integer.java:608)
at java.lang.Integer.parseInt(Integer.java:643)
at com.android.commands.monkey.MonkeySourceScript.handleEvent(MonkeySourceScr
ipt.java:502)
at com.android.commands.monkey.MonkeySourceScript.processLine(MonkeySourceScr
ipt.java:793)
at com.android.commands.monkey.MonkeySourceScript.readLines(MonkeySourceScrip
t.java:249)
at com.android.commands.monkey.MonkeySourceScript.readNextBatch(MonkeySourceS
cript.java:835)
at com.android.commands.monkey.MonkeySourceScript.getNextEvent(MonkeySourceSc
ript.java:962)
at com.android.commands.monkey.Monkey.runMonkeyCycles(Monkey.java:1199)
at com.android.commands.monkey.Monkey.run(Monkey.java:697)
at com.android.commands.monkey.Monkey.main(Monkey.java:557)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:285) Events injected: 0
## Network stats: elapsed time=18ms (0ms mobile, 0ms wifi, 18ms not connected)
** System appears to have crashed at event 0 of 10 using seed 1541262762069
Traceback (most recent call last):
File "FPStest.py", line 196, in <module>
monkey_run()
File "FPStest.py", line 190, in monkey_run
fps_avg = round(sum(fps_list) / len(fps_list), 2)
ZeroDivisionError: division by zero
找到生成monkey脚本的代码,把它调整为整型并保存重新全跑一次所有代码,结果正常生成。
[bug]android monkey命令在Android N和Android O上的一点差异发现的更多相关文章
- 【转】Android Monkey 命令行可用的全部选项
常规 事件 约束限制 调试 原文参见:http://www.douban.com/note/257030384/ 常规 –help 列出简单的用法. -v 命令行的每一个 -v 将增加反馈信息的级别. ...
- [原创]Android Monkey测试工具使用介绍
[原创]Android Monkey测试工具使用介绍 1 Android Monkey介绍 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件 ...
- Android Monkey压测命令
测试步骤:1.安装ADB2.连接被测手机和电脑3.打开CMD命令行4.输入monkey命令adb shell monkey -p your.package.name --pct-touch 30 -- ...
- Android Monkey压力测试
Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上. Monkey会发送伪随机的用户事件流,适合对app做压力测试. 1为什 ...
- Android Monkey 压力测试 介绍
Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上. Monkey会发送伪随机的用户事件流,适合对app做压力测试 阅读目录 ...
- Android Monkey压力测试使用
一.Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击.滑动.Application切换.横竖屏.应用关闭)实现对 ...
- android monkey app乱点测试
Monkey是Android中的一个命令行工具 查看包名:查看电脑中某一位置的apk文件的包名:PC打开CMD-进入TMG目录-运行设备--查看包名aapt dump badging *.apk(ap ...
- Android Monkey的用法(一)
Monkey 简介 ü Monkey 是一个命令行工具,可以运行在 Android 模拟器里或真实设备中.它可以向系统发送伪随机(pseudo-random)的用户事件流(如按键输入.触摸屏输入 ...
- Android Monkey压力测试(转)
参考链接:https://www.cnblogs.com/yyh8/p/6707745.html Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Andr ...
随机推荐
- WINDOWS内核编程(一)Hello Drv的实现
我们开始编写第一个驱动程序,首先我们需要进行项目的创建,在以前的随笔中,我们已经学会了如何去建立双机调试环境. 我们打开VS2017,建立如图所示的项目,取名为:MyFirstDriver.点击确定 ...
- 认识Nginx,理解原理和功能
前端工程师在理解Nginx之后,就能更好的与后端工程师沟通,为了能提高工作效率,这两天抽空读了<Nginx高性能Web服务器实战教程>. 一.Nginx Nginx是一款高性能的Web服务 ...
- Java 容器源码分析之ArrayBlockingQueue和LinkedBlockingQueue
Java中的阻塞队列接口BlockingQueue继承自Queue接口. BlockingQueue接口提供了3个添加元素方法. add:添加元素到队列里,添加成功返回true,由于容量满了添加失败会 ...
- Maven_3 如何从Maven远程存储库下载
如果在你的项目中,需要使用到的jar包. 如果使用build path的话,你把你的项目给别人运行的时候,别人还需要去build path,如果要换jar包的版本,这些都是比较麻烦的,所以我们使用ma ...
- openssl签署和自签署证书的多种实现方式
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.采用自定义配置文件的实现方法 1.1 自建CA 自建CA的机制:1.生成 ...
- SpringMVC Hello World
前言 新年伊始,元宵佳节,窗外灯火通明,炮声连连.北漂以来第一次一个人在北京过十五. 切入正题,收假后一边要赶项目进度还要学习java,so在元宵佳节之际写了第一篇SpringMVC Hello Wo ...
- MongoDB设计系列
原创文章,如果转载请标明出处.作者. https://www.cnblogs.com/alunchen/p/9762233.html 1 前言 MongoDB作为现今流行的非关系型文档数据库,已经有很 ...
- MVC 【Razor 视图引擎】基础操作 --页面跳转,传值,表单提交
ASPX 与 Razor 仅仅是视图不一样. 新建项目----ASP.NET MVC 4 Web 应用程序------选择模板(空).视图引擎(Razor ) 1.视图中 c# 代码 与 HT ...
- Angular Forms - 自定义 ngModel 绑定值的方式
在 Angular 应用中,我们有两种方式来实现表单绑定--"模板驱动表单"与"响应式表单".这两种方式通常能够很好的处理大部分的情况,但是对于一些特殊的表单控 ...
- SqlServer主键
*主键 作用:唯一标识表中的一条记录. *特点: 1不能重复的列. 2主键不能为null. *同名时如何处理:王洋(大) 王洋(小) *主键有两种选用策略: 业务主键和逻辑主键. 业务主键是使用有业务 ...