Android自动回放工具——RERAN

一 、安卓输入子系统事件编码

安卓输入时间编码格式为:(timestamp: device: type code value)

timestamp:系统开机到当前的时间

device:可以产生输入事件的设备

type:输入事件类型码,如下图定义

/*
 * Event types
 */
#define EV_SYN          0x00
#define EV_KEY          0x01
#define EV_REL          0x02
#define EV_ABS          0x03
#define EV_MSC          0x04
#define EV_SW           0x05
#define EV_LED          0x11
#define EV_SND          0x12
#define EV_REP          0x14
#define EV_FF           0x15
#define EV_PWR          0x16
#define EV_FF_STATUS    0x17
#define EV_MAX          0x1f
#define EV_CNT          (EV_MAX+1)

types对应于一个相同逻辑输入结构的一组Codes。每个type都有一组可用的codes用于产生输入事件。每个type可用的codes的详细信息请参考Codes一节的内容。

* EV_SYN:

- 用于事件间的分割标志。事件可能按时间或空间进行分割,就像在多点触摸协议中的例子。

* EV_KEY:

- 用来描述键盘,按键或者类似键盘设备的状态变化。

* EV_REL:

- 用来描述相对坐标轴上数值的变化,例如:鼠标向左方移动了5个单位。

* EV_ABS:

-用来描述相对坐标轴上数值的变化,例如:描述触摸屏上坐标的值。

* EV_MSC:

- 当不能匹配现有的类型时,使用该类型进行描述。

* EV_SW:

- 用来描述具备两种状态的输入开关。

* EV_LED:

- 用于控制设备上的LED灯的开和关。

* EV_SND:

- 用来给设备输出提示声音。

* EV_REP:

-用于可以自动重复的设备(autorepeating)。

* EV_FF:

- 用来给输入设备发送强制回馈命令。(震动?)

* EV_PWR:

- 特别用于电源开关的输入。.

* EV_FF_STATUS:

- 用于接收设备的强制反馈状态。

例如 EV_ABS对应的code如下:

/*
 * Absolute axes
 */

#define ABS_X           0x00
#define ABS_Y           0x01
#define ABS_Z           0x02
#define ABS_RX          0x03
#define ABS_RY          0x04
#define ABS_RZ          0x05
#define ABS_THROTTLE        0x06
#define ABS_RUDDER      0x07
#define ABS_WHEEL       0x08
#define ABS_GAS         0x09
#define ABS_BRAKE       0x0a
#define ABS_HAT0X       0x10
#define ABS_HAT0Y       0x11
#define ABS_HAT1X       0x12
#define ABS_HAT1Y       0x13
#define ABS_HAT2X       0x14
#define ABS_HAT2Y       0x15
#define ABS_HAT3X       0x16
#define ABS_HAT3Y       0x17
#define ABS_PRESSURE        0x18
#define ABS_DISTANCE        0x19
#define ABS_TILT_X      0x1a
#define ABS_TILT_Y      0x1b
#define ABS_TOOL_WIDTH      0x1c
#define ABS_VOLUME      0x20
#define ABS_MISC        0x28

#define ABS_MT_TOUCH_MAJOR  0x30    /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR  0x31    /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR  0x32    /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR  0x33    /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION  0x34    /* Ellipse orientation */
#define ABS_MT_POSITION_X   0x35    /* Center X ellipse position */
#define ABS_MT_POSITION_Y   0x36    /* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE    0x37    /* Type of touching device */
#define ABS_MT_BLOB_ID      0x38    /* Group a set of packets as a blob */
#define ABS_MT_TRACKING_ID  0x39    /* Unique ID of initiated contact */
#define ABS_MT_PRESSURE     0x3a    /* Pressure on contact area */

#define ABS_MAX         0x3f
#define ABS_CNT         (ABS_MAX+1)

二、SDK自带工具

getevent/sendevent

这两个命令的源码在system/core/toolbox/下,sendevent.c getevent.c

getevent

使用getevent获得/dev/input/eventX设备汇报的事件,这个命令还会输出所有event设备的基本信息,如下:

add device 1: /dev/input/event1  name:     "mxc_ts"add device 2: /dev/input/event0  name:     "mxckpd"

表明系统有两个event设备,分别对应着input设备touchscreen,keyboard

sendevent

使用sendevent来模拟触屏,键盘以及其他类型的event事件,

sendevent /dev/input/eventX type code value

/dev/input/eventX 对应一个event设备,可以通过getevent获得可用的event设备

type, code, value的详细定义可参看kernel/include/linux/input.h

三、RERAN

RERAN具源码在点击打开链接

(1)安装ARM交叉编译工具

工具下载链接点击打开链接

依据不同系统安装对应工具,完成之后配置系统环境变量,我本机是win10系统,在系统环境变量Path中添加“;installdir\bin”,其中installdir是你安装工具的更路径。

(2)编译 Translate.java 文件为 jar

(3)编译 record.c,之后将其复制到手机/data/local  路径中

arm-none-linux-gnueabi-gcc -static -o replay replay.c
adb push yourpath/replay /data/local

(4)记录事件路径,并将路径文件recordedEvents.txt
翻译成 translatedEvents.txt,然后将这个文件放入手机/data/local  路径中

adb shell getevent -tt > recordedEvents.txt
java -jar translate.jar /path/to/recordedEvents.txt /path/to/android-sdk/platform-tools/translatedEvents.txt
adb push translatedEvents.txt /data/local

(5)回访记录

adb shell /data/local/./replay /data/local/translatedEvents.txt

时间: 2024-08-30 13:03:27

Android自动回放工具——RERAN的相关文章

转:Android自动测试之Monkey工具

转自:here  Monkey工具 前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其它test tool等等.因接触时间很短,很多地方有不足之处,希望能和大家多多交流. 一.  什么是Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),

Android蓝牙连接自动测试工具

蓝牙连接自动测试工具 1.需求产生 开发不按着需求走都是耍流氓且浪费时间.此工具的需求产生是研发人员在开发产品时涉及到蓝牙驱动和安卓蓝牙两个东西.但是呢,蓝牙不太稳定,那么工作来了.就需要研发人员一边开发,一遍测试(用产品的安卓app一直按连接,产品设备重启,安卓app再连接蓝牙,再重启产品设备...........一直循环这个过程),这个过程是无聊且没意义的.我们作为程序员肯定是要偷懒的啊.因此就有了此工具的诞生. 2.功能介绍 1.除首次手动连接所需设备蓝牙外,设备重启后能自动重连 2.连接

Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具

来兴趣时写了些Kivy的代码,调试却总感觉不是很方便.直接打包到public.mp3的方式太繁锁,用文件共享的软件又发现没有一个好用的, 用samba filesharing本来也只是慢,但是更新的版本之后就一直提示说wifi没有tethering,意思是wifi热点没有打开,但是打开了还是提示没有tethering. 找了个叫什么卓*力的文件管理器,下载了samba插件后输入用户名和密码死活不对,被搞得实在恼火,花了点时间写了个通过adb同步安卓文件的工具,用着也挺爽的. 事件为什么总是要搞得

Android 开发小工具之:Tools 属性 (转)

Android 开发小工具之:Tools 属性 http://blog.chengyunfeng.com/?p=755#ixzz4apLZhfmi 今天来介绍一些 Android 开发过程中比较有用但是大家又不常用的小工具.这些小工具可以提高 Android 应用开发的效率.还可以提高代码质量.所以还是有必要使用的. 首先介绍布局文件中的 tools 属性. 如果你用 Android Studio 创建一个简单的示例项目,在生成的布局文件中会有这么一行内容: xmlns:tools="http:

一个使用命令行编译Android项目的工具类

一个使用命令行编译Android项目的工具类 简介 编译apk项目需要使用的几个工具,基本都在sdk中,它们分别是(Windows系统): 1.aapt.exe 资源打包工具 2.android.jar Android编译工具 3.dx.bat dex文件生成工具 4.sdklib.jar 生成apk 5.jarsigner 签名工具 准备 在打包前,需要的环境如下: 1.JDK1.6+ 2.Android SDK 3.上述5个工具的路径 打包过程 1.生成R.java文件 比如: aapt p

2015最流行的Android组件、工具、框架大全(转)

转自:2015最流行的Android组件.工具.框架大全 Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件.本文试图将目前流行的组件收集起来以供参考, 如果你发现本文还没有列出的组件,欢迎在评论中贴出来,我会定期的更新本文. 部分图片需国内或许不能访问才能显示 很好的中文教程Google Android官方培训课程中文版 awesome-android, android列表. 另,g

基于Travis CI搭建Android自动打包发布工作流(支持Github Release及fir.im)

最近付费购买了Travis CI,Travis CI的收费模式很有意思,不是按项目或者用户,而是按工作进程收费,比如初级版本是$129/月,总共提供2个工作进程.在项目不多的情况下,除了用于跑单元测试外,不免想利用的更充分一些,因此抽空搭建了一套基于Travis CI的Android自动发布工作流. 未自动化前安卓开发总是避免不了这样的工作流程: 开发一些新功能,提交代码 完成一部分功能后,打包一个测试版APK 将测试版APK上传到QQ群 / 网盘 / Fir.im / 蒲公英等 在QQ群或发布

用jenkins搭建android自动打包环境

这里假设你已经搭建了jenkins的环境.否则,请阅读我的另一篇文章: http://my.oschina.net/u/930967/blog/298980 其实那个文章里面有用的就两句话的事儿,还是直接写在这里吧 jenkins是一个java web项目,可以去官网下载war包,放在tomcat的webapps下就能运行. 访问localhost:8080/jenkins进入 步入正题 任何一个开发工具,都提供了命令行工具.比如android用的是ant.java有maven.还有xcode,

项目管理及自动构建工具Maven

项目管理及自动构建工具Maven 一.Maven安装.目录结构.cmd命令1.下载安装apache-maven-3.2.3-bin.zip下载:http://maven.apache.org/download.cgi 安装:解压,配置环境变量M2_HOME=D:\Idea\config\apache-maven-3.2.3Path+=D:\Idea\config\apache-maven-3.2.3\bin 通过执行 mvn -v 可以查看当前版本号 C:\Users\yuki>mvn -v A