RERAN:安卓系统的定时和点击的录制和回放——(3)
来源:互联网 发布:淘宝金牌卖家有假货吗 编辑:程序博客网 时间:2024/05/17 23:01
3. 方法概述
本章节主要介绍技术以及该方法优于其他录制回放工具的关键点。谷歌提供了Android软件开发工具包(SDK),包含各种工具来帮助应用程序开发人员开发、测试和调试。RERAN的开发也用到该工具。
如图4展示的高级视图,可在手机上通过安卓终端模拟器(android app市场下可下载)录制回放,也可从一台计算机通过USB连接到手机来实习录制或回放。Android调试桥(ADB),通过运行命令对Android SDK进行操作,同时安卓终端模拟器作为RERAN和智能手机之间的接口。 命令通过shell发布到手机的操作系统.。我们使用这种方式现实记录和回放事件。
A. 记录
我们使用Android SDK的getevent工具,它读取手机/dev/input/event*路径下的实时(跟踪)日志,如图4所示。在读取日志时应用程序的性能不受影响。一旦日志结束,RERAN的记录阶段会翻译捕获跟踪和创建事件跟踪文件以备播放。在翻译过程中,所有捕获的事件信息被转换为一个简洁的形式并且计算延迟时间。我们目前在电脑上执行离线翻译,但我们计划在未来的工作中直接在手机里执行。
图4 RERAN的概述
B. 重播
Android SDK还提供了sendevent工具,它允许开发人员将一个输入事件发送到手机。不幸的是,我们发现串联使用sendevent时有些小滞后,这使得它无法忠实地回放记录的事件流。如果不准确的回放会导致几个负面的影响。例如,滑屏手势中间出现延迟会使得滑屏手势变成一系列点击操作,点击时延迟,会使得的点击操作变成按下-保持一样等。
因此,提供准确的时间是一个关键的技术挑战。如前所述,回放一个滑屏手势通常需要50或更多的事件流。此外,每个滑屏手势不到一秒,滑屏手势各个事件流之间的时间不到60微秒。
因为事件流之间的时间比较敏感我们必须改进方法进行回放,而不是使用sendevent。我们修复已有的回放代理,直接在手机上运行和注入事件到手机的事件流中(见图4底部)。这种方法还允许同时注入多个事件,在回放时可无缝地处理多个事件。
在回放过程中,回放代理通过手机的输入设备作为手机的外部用户生成事件。虽然在理论上回放可能与其他事件发生冲突,但是在实践中并没有发现该问题。因为我们的测试设置(见部分IV-B)手机可接受和处理来自所有来源的事件,app在我们的测试套件上并没有明显的差异行为。
C. 与关键字方法的比较
通过执行录制及回放的个别事件,我们的工具可以忽视高级的表现方式而再现复杂的触屏手势。此外,在未来我们的方法可以很自然的处理新的屏幕手势,也可以是新型传感器。能实现的原因是这些行为都会分解为低级事件。
与之相反,基于关键字的方式直接代表了高级的表现方式。这可以传递更多的语义信息给用户。然而,它要求在每次操作或者感应时都更新高级的表达方式。此外,这种方法需要从多个低级的表现方式来推断高级的表达方式。最后,当前多自由度触摸屏手势与关键字方式的风格不一致。例如,滑屏手势可能不仅依赖于开始和结束的位置也依赖于两者之间的轨迹跟踪位置以及操作的力道等。
- RERAN:安卓系统的定时和点击的录制和回放——(3)
- RERAN:安卓系统的定时和点击的录制和回放——(1)
- RERAN:安卓系统的定时和点击的录制和回放——(2)
- RERAN:安卓系统的定时和点击的录制和回放——(4)
- RERAN:安卓系统的定时和点击的录制和回放——(5)
- RERAN:安卓系统的定时和点击的录制和回放——(6~8)
- monkeyrunner的录制和回放学习总结
- UFT脚本的录制和回放
- CLI操作的录制和回放
- Android Monkeyrunner的录制和回放功能
- Android自动回放工具——RERAN
- 4 款开源的 Linux 控制台录制和回放工具
- loadrunner-录制和回放时的乱码问题
- ROS总结——录制和回放数据
- 安卓录制视频的时候,预览和录制设置成不同分辨率的步骤
- monkeyrunner的录制与回放
- 脚本录制和回放终端会话(script、scriptreplay)使用
- monkeyrunner学习笔记四(录制和回放)
- 23种设计模式(2):工厂方法模式
- 【深度学习Deep Learning系列】word2vec和doc2vec
- faster-rcnn+ubuntu14.04+matlab2014a+cpu配置
- poj_3070 Fibonacci(矩阵快速幂)
- 关于NSURL NSURLComponents
- RERAN:安卓系统的定时和点击的录制和回放——(3)
- 查询某字段更新历史
- 解析XML文件
- Windows下搭建React Native环境与Android Studio集成
- Xcode各种iOS版本模拟器的安装使用
- 获取当前iframe的id
- BeautifulSoup解析页面造成信息丢失的解决办法
- scala学习(十五)——trait运行时装配
- java基本数据类型长度详解