掌桥专利:专业的专利平台
掌桥专利
首页

一种安卓应用按钮功能实现机制的分析方法及装置

文献发布时间:2023-06-19 12:07:15


一种安卓应用按钮功能实现机制的分析方法及装置

技术领域

本发明属于在桌面操作系统上运行移动应用的开发技术领域,具体涉及一种安卓应用按钮功能实现机制的分析方法及装置。

背景技术

Linux或Windows等桌面操作系统Android运行环境是一种在Linux或Windows操作系统上运行Android应用(App)的技术,对丰富操作系统应用生态有着重要的意义。根据实现机制的不同,Android运行环境包括Android模拟器及Android兼容环境。例如,运行于Linux系统上的Android兼容环境一般由Host端和Guest端组成,Host端运行于Linux系统上,主要包括Android容器和用户交互窗口,Android容器的作用是从Linux系统中隔离出部分内核资源来支撑Guest端运行,Guest端主要包括特殊定制的Android应用框架和Android运行时库等,Android应用都运行在Guest端。用户在Linux操作系统使用Android应用时,Android应用的窗口的实现方式为:运行于Linux系统的xDroidUI将图形缓冲区句柄发送至运行于Android容器中的Android系统,由Android系统渲染得到的Android应用用户界面,其中,xDroidUI为Android应用用户界面的一种实现。本发明中所涉及的桌面平台安卓运行环境包括Android模拟器、Android兼容运行环境等运行环境。

在桌面操作系统上运行的应用程序,往往通过敲击键盘的“回车键”来执行某些功能。例如,通过敲击键盘上的“回车键”触发后续动作,包括在各类编辑框中输入内容后敲击“回车键”进行确认以触发后续动作,比较典型的应用包括桌面版的“微信”应用程序等,在桌面版“微信”中,通过敲击“回车键”即可完成消息的发送,在“搜索栏”中敲击“回车键”即可执行搜索操作等。然而,对于Android应用中的编辑框来说,往往需要点击相关按钮来完成操作,例如,在Android版“微信”应用程序中执行发送消息、搜索等操作则需要点击“发送”、“搜索”等按钮。因此,当用户在现有的Android模拟器或Android兼容运行环境中使用Android应用时,Android运行环境虽然将键盘事件发送到了Android系统,但用户仍需要按照现有的使用方式使用Android应用,即需要点击特定按钮执行某种操作,这种方式增加了用户操作的复杂度,为用户带来了不便,降低了用户体验。为了改善用户体验,首先需要解决的问题是确定Android应用中按钮功能的实现机制,现有技术中往往是通过人工测试的方式分析确定,但是这种方式的分析效率非常低,难以满足大量Android应用的移植需求。

发明内容

有鉴于此,本发明提供了一种安卓应用按钮功能实现机制的分析方法及装置,能够自动分析安卓应用中编辑框所对应的按钮功能的实现机制。

本发明提供的一种安卓应用按钮功能实现机制的分析方法,具体包括以下步骤:

采用Android兼容环境xDroidUI运行待测安卓应用,遍历所述待测安卓应用的所有待测编辑框执行编辑框测试,确定所述待测编辑框所对应的按钮功能实现机制;所述按钮功能实现机制包括使用了输入事件处理函数实现按钮功能、组合按键消息模拟按钮功能及基于位置的触摸消息模拟按钮功能。

进一步地,所述编辑框测试包括以下步骤:

步骤1、使所述待测编辑框获得输入焦点;若所述待测编辑框调用了输入事件处理函数,则执行步骤6,否则执行步骤2;

步骤2、预设所述待测编辑框内的测试文本,由xDroidUI向安卓兼容环境依次发送组合按键消息;

步骤3、由xDroidUI向安卓兼容环境依次发送预设按键的按键按下事件和按键抬起事件的消息;若所述待测编辑框为空,则执行步骤5;否则,令组合按键循环次数自加1,若所述组合按键循环次数小于设定循环阈值,则使所述待测编辑框获得输入焦点,执行步骤3;若所述组合按键循环次数不小于设定循环阈值,则执行步骤4;

步骤4、预设所述待测编辑框内的测试文本,获取所述待测编辑框的左上顶点及右下顶点的坐标分别记为(x

x=x

y=y

其中,r为位置测试循环次数,step为测试位置移动的步长;采用所述测试位置坐标构造类型为ACTION_DOWN及ACTION_UP的MotionEvent事件消息,由xDroidUI向安卓兼容环境依次发送上述消息;

若所述待测编辑框为空,则执行步骤5;否则,若x<x

步骤5、记录所述编辑框测试的测试结果,及对应的所述待测编辑框。

进一步地,所述步骤4中计算测试位置坐标(x,y)的方式为,采用如下公式计算测试位置坐标(x,y):

x=x

y=y

其中,a为测试位置所占按钮区域的比例,按钮区域是指编辑框的右边沿与窗口右边沿之间的区域。

进一步地,在所述步骤5中,根据所述测试结果生成所述待测安卓应用的配置文件。

进一步地,所述配置文件包括所述待测安卓应用的包名、父窗口名称、编辑框类名及编辑框对应的按钮功能实现机制;所述按钮功能实现机制包括使用输入事件处理函数处理机制、组合按键消息模拟机制及基于位置的触摸消息模拟机制。

进一步地,所述遍历所述待测安卓应用中的所有编辑框的过程,采用编辑测试脚本实现。

本发明提供的一种桌面平台中安卓应用按钮功能的实现装置,包括基于xDroidUI的安卓应用运行模块、编辑框获取模块、实现机制判断模块及配置文件生成模块;

所述基于xDroidUI的安卓应用运行模块,用于采用xDroidUI运行待测安卓应用;

所述编辑框获取模块,用于确定所述待测安卓应用中的所有待测编辑框;

所述实现机制判断模块,用于判断所述编辑框获取模块输出的待测编辑框所对应的按钮功能的实现机制是否属于包括使用输入事件处理函数处理机制、组合按键消息模拟机制及基于位置的触摸消息模拟机制;

所述配置文件生成模块,用于根据所述实现机制判断模块输出的判断结果,为所述待测安卓应用生成配置文件,所述配置文件包括所述待测安卓应用的包名、父窗口名称、编辑框类名及编辑框所对应的按钮功能实现机制。

进一步地,所述实现机制判断模块判断所述待测编辑框所对应的按钮功能的实现机制为组合按键消息模拟机制的具体方式为:预设所述待测编辑框内的测试文本,由xDroidUI向安卓兼容环境依次发送组合按键消息、预设按键的按键按下事件和按键抬起事件的消息;若所述待测编辑框为空,则所述待测编辑框对应的按钮功能实现机制为组合按键消息模拟机制。

进一步地,所述实现机制判断模块判断所述待测编辑框所对应的按钮功能的实现机制为基于位置的触摸消息模拟机制的具体方式为:预设所述待测编辑框内的测试文本,根据所述待测编辑框的左上顶点及右下顶点的坐标计算所述待测编辑框所对应的按钮位置,根据所述按钮位置构造类型为ACTION_DOWN、ACTION_UP的MotionEvent事件消息,由xDroidUI向安卓兼容环境依次发送ACTION_DOWN、ACTION_UP消息;若所述待测编辑框为空,则所述待测编辑框对应的按钮功能实现机制为基于位置的触摸消息模拟机制。

有益效果:

本发明采用Android兼容环境xDroidUI运行待测安卓应用,遍历安卓应用中的所有编辑框,针对不同的编辑框采用不同的测试方式,根据测试结果判断编辑框所对应的按钮功能的实现机制,实现了编辑框所对应的按钮功能实现机制分析的自动化,有效提高了分析效率。

附图说明

图1为本发明提供的一种安卓应用按钮功能实现机制的分析方法的流程图。

图2为本发明提供的一种安卓应用按钮功能实现机制的分析装置的结构图。

图3为本发明提供的一种安卓应用按钮功能实现机制的分析方法所针对的安卓应用的窗口示意图。

其中,1-窗口,2-编辑框,3-按钮,4-内容显示框。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

一般来说,Android应用对于Android系统而言属于黑盒子,即,Android应用的内部实现对于Android系统来说是不可见的。现有Android应用的编辑框的按钮功能实现机制主要包括以下几种:一是通过调用Android系统的事件处理机制实现相应的按钮功能;二是通过自定义的按键组合操作实现按钮功能;三是基于位置信息发送模拟按键消息的方式实现按钮功能。

本发明提供的一种安卓应用按钮功能实现机制的分析方法及装置,其核心思想是:采用Android兼容环境xDroidUI运行待测安卓应用,遍历待测安卓应用中的所有编辑框,针对每个编辑框执行编辑框测试,根据测试结果判断待测安卓应用的编辑框所对应的按钮功能实现机制。本发明提供的方法及装置所针对的安卓应用分析对象,如图3所示,包括窗口1、编辑框2、按钮3及内容显示框4,窗口1为安卓系统的Window类,编辑框2为继承自TextView类的子类,在安卓系统的窗口1中部署编辑框2、按钮3和内容显示框4。

本发明提供的一种安卓应用按钮功能实现机制的分析方法,流程如图1所示,包括以下步骤:

步骤1、采用xDroidUI运行待测安卓应用,确定待测安卓应用中所包含的待测编辑框。

步骤2、使步骤1确定的待测编辑框获得输入焦点;首先判断待测编辑框是否调用了安卓系统的输入事件处理函数,如果是则说明当前的待测编辑框为使用输入事件处理函数处理机制,则执行步骤6,否则执行步骤3。

步骤3、预设待测编辑框中的测试文本,xDroidUI向安卓兼容环境发送由按键构成的组合按键消息使待测编辑框对应的按钮获取输入焦点。

步骤4、xDroidUI向安卓兼容环境发送预设按键的按键按下事件和按键抬起事件的消息,使Android系统触发待测编辑框对应的当前获得焦点的按钮。

判断待测编辑框是否为空,如果为空,则说明测试文本已被处理,当前待测编辑框为组合按键消息模拟机制,则执行步骤6;如果不为空,则说明测试文本未被处理,采用上述消息模拟安卓应用的按钮操作的过程错误,令组合按键循环次数自加1,当组合按键循环次数小于设定循环阈值时,由xDroidUI向安卓兼容环境发送组合按键消息使待测编辑框对应的下一个按钮获得输入焦点,执行步骤4;当组合按键循环次数不小于设定循环阈值时,执行步骤6。

步骤5、预设待测编辑框中的测试文本,获取待测编辑框的左上顶点及右下顶点的坐标分别记为(x

x=x

y=y

其中,r为位置测试循环次数,step为测试位置移动的步长。

此外,本发明还可采用如下公式计算测试位置坐标(x,y):

x=x

y=y

其中,a为测试位置所占按钮区域的比例,按钮区域是指编辑框的右边沿与窗口右边沿之间的区域。

采用测试位置坐标(x,y)构造类型为ACTION_DOWN及ACTION_UP的MotionEvent事件消息,调用安卓系统的injectInputEvent顺序发送该ACTION_DOWN消息和ACTION_UP消息。

判断待测编辑框是否为空,如果为空,则说明测试文本已被处理,待测编辑框为基于位置的触摸消息模拟机制,则执行步骤6。

如果不为空,则说明测试文本未被处理,采用上述消息模拟安卓应用的按钮操作的过程错误,此时若x<x

本发明中,可以通过编辑测试脚本实现对待测安卓应用中编辑框的遍历。

步骤6、记录待测安卓应用及编辑框的基本信息,生成配置文件。其中,基本信息包括待测安卓应用的包名、父窗口名称、编辑框类名及编辑框对应按钮功能实现机制,编辑框对应按钮功能实现机制包括使用输入事件处理函数、组合按键消息模拟及基于位置的触摸消息模拟。

使用输入事件处理函数为调用如下方法:

mEditor.mInputContentType.onEditorActionListener。

根据本发明提供的一种安卓应用按钮功能实现机制的分析方法,本发明设计了一种安卓应用按钮功能实现机制的分析装置,装置的结构如图2所示,包括基于xDroidUI的安卓应用运行模块、编辑框获取模块、实现机制判断模块及配置文件生成模块。

其中,基于xDroidUI的安卓应用运行模块,用于采用xDroidUI运行待测安卓应用。

编辑框获取模块,用于确定待测安卓应用中的所有待测编辑框。

实现机制判断模块,用于判断编辑框获取模块输出的待测编辑框对应的按钮功能的实现机制是否属于以下几种,即:使用输入事件处理函数处理机制、组合按键消息模拟机制及基于位置的触摸消息模拟机制。

配置文件生成模块,用于根据实现机制判断模块输出的判断结果,为当前待测安卓应用生成配置文件,配置文件包括待测安卓应用的包名、父窗口名称、编辑框类名及编辑框对应的按钮功能实现机制。

其中,在实现机制判断模块判断待测编辑框对应的按钮功能的实现机制为组合按键消息模拟机制时,可采用以下方式实现:预设待测编辑框内的测试文本,xDroidUI先向安卓兼容环境发送组合按键消息使待测编辑框对应的按钮获得焦点,再发送预设按键的按键按下事件和按键抬起事件的消息,使Android系统触发按钮;当待测编辑框内为空时,说明当前待测编辑框对应的按钮为组合按键消息模拟机制。

在实现机制判断模块判断待测编辑框对应的按钮功能的实现机制为基于位置的触摸消息模拟机制时,可采用以下方式实现:预设待测编辑框内的测试文本,获取待测编辑框的左上顶点及右下顶点的坐标,由此计算待测编辑框所对应的按钮位置,根据按钮位置分别构造类型为ACTION_DOWN、ACTION_UP的MotionEvent事件消息,调用安卓系统的injectInputEvent顺序发送ACTION_DOWN消息及ACTION_UP消息;若当前待测编辑框为空时,说明当前待测编辑框所对应的按钮功能的实现机制为基于位置的触摸消息模拟机制。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种安卓应用按钮功能实现机制的分析方法及装置
  • 一种安卓应用按钮功能实现机制的分析方法及装置
技术分类

06120113178364