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

一种应用程序的调试方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 11:35:49


一种应用程序的调试方法、装置、计算机设备和存储介质

技术领域

本发明实施例涉及应用开发的技术领域,尤其涉及一种应用程序的调试方法、装置、计算机设备和存储介质。

背景技术

随着触控技术的成熟与推广,各种触控设备的用户群体有了显著增加,在触控设备中,UI(User Interface,用户界面)是用户与应用程序交互的最直接的方式之一,应用程序通过UI呈现内容和价值,用户通过UI输入手势或虚拟键盘来控制应用程序。

对于应用程序的开发者来说,调试UI是一项重要的开发工作。

目前,应用程序的开发者多采用一些厂商提供的调试工具调试UI,这些调试工具的调试时效性均较差,例如,某个调试工具连接个人电脑辅助调试,该调试工具将UI上的信息进行远程更新到个人电脑上,会存在数秒的延迟,又例如,某个调试工具直接运行在触控设备中,但是该调试工具将UI上的信息记录在日志文件中,需要在结束调试后,导出日志文件再进行分析。

发明内容

本发明实施例提出了一种应用程序的调试方法、装置、计算机设备和存储介质,以解决调试UI的时效性差的问题。

第一方面,本发明实施例提供了一种应用程序的调试方法,包括:

调试工具在应用程序的用户界面上生成透明的遮罩;

当所述遮罩拦截到所述用户界面中的元素触发的触摸事件时,调试工具将所述触摸事件分发至所述用户界面中的元素,以触发所述触摸事件对应的触控操作;

调试工具调用为所述应用程序设置的接口、查询所述元素的属性信息;

调试工具在所述遮罩中显示所述属性信息。

第二方面,本发明实施例还提供了一种应用程序的调试装置,所述装置包括调试工具,所述调试工具包括:

遮罩生成模块,用于在应用程序的用户界面上生成透明的遮罩;

触摸事件分发模块,用于当所述遮罩拦截到所述用户界面中的元素触发的触摸事件时,将所述触摸事件分发至所述用户界面中的元素,以触发所述触摸事件对应的触控操作;

属性信息查询模块,用于调用为所述应用程序设置的接口、查询所述元素的属性信息;

属性信息显示模块,用于在所述遮罩中显示所述属性信息。

第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的应用程序的调试方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的应用程序的调试方法。

在本实施例中,调试工具在应用程序的用户界面上生成透明的遮罩,当遮罩拦截到用户界面中的元素触发的触摸事件时,调试工具将触摸事件分发至用户界面中的元素,以触发触摸事件对应的触控操作,调试工具调用为应用程序设置的接口、查询元素的属性信息,调试工具在遮罩中显示属性信息,调试工具与应用程序共同运行在同一计算机设备中,通过遮罩拦截触摸事件、分发触摸事件,一方面,应用程序可以正常接收到触摸事件,并不妨碍应用程序的正常运行,另一方面,分发的过程可以定位到调试人员调试的元素,从而查询该元素的属性信息,分析的元素为调试人员调试的元素、数据量少,查询属性信息的速度快,可实时显示在遮罩上,无需将属性信息远程传输到个人电脑上、也无需导出日志文件再分析属性信息,调试的时效性强。

附图说明

图1为本发明实施例一提供的一种应用程序的调试方法的流程图;

图2为本发明实施例一提供的一种调试元素的架构图;

图3为本发明实施例一提供的一种入口控件的示例图;

图4A与图4B为本发明实施例一提供的一种属性信息的示例图;

图5是本发明实施例二提供的一种应用程序的调试方法的流程图;

图6是本发明实施例二提供的一种配置接口的示意图;

图7是本发明实施例二提供的一种工作目录的示例图;

图8为本发明实施例三提供的一种应用程序的调试装置的结构示意图;

图9为本发明实施例四提供的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

应用程序的UI上具有不同的元素,例如,文本框、按钮,等等,在调试应用程序的UI的过程中,开发者可以在运行应用程序的触控设备中,可以对UI的元素进行如下检查:

1、检查UI的元素的位置、边距是否符合期望,元素的属性(如文本框有字体颜色、字体大小、文字长度限制等)是否符合设计师的要求。

2、当UI没有正常显示时,检查UI的元素是否有正确地添加到视图的树状结构中。

3、检查UI元素的层级是否合理(嵌套的多层布局是否可以改为单层布局),过深的层级会降低应用程序的渲染性能。

4、检查触控设备的兼容性,对于多样化的屏幕(大屏幕、全面屏、曲面屏、异构屏、折叠屏),UI是否都能正常布局。

目前,调试应用程序的UI的调试工具主要有LayoutInspector和UETool。

对于LayoutInspector,使用个人电脑辅助调试,有如下缺点:

1、调试成本高

除了触控设备外,还需要使用个人电脑搭建调试的环境,即,在个人电脑中安装AndroidStudio(一款开发工具),AndroidStudio用于查看UI的信息,使用数据线连接个人电脑与触控设备,在触控设备中启动开发者模式。

搭建调试的环境较为复杂,技术门槛较高,对于美术设计师和测试人员等开发者来说,搭建调试的环境难度较高,且容易出错。

2、调试的速度慢

由于LayoutInspector先在触控设备上获取整个UI的信息,再整体传输到个人电脑上。越是大型的应用程序,UI上的元素越多,层级越复杂,这个过程就越慢,对于一些提供直播服务的应用程序,首页多为复杂的结构,这个传输UI的信息的过程达数十秒。

此外,开发者往往是关注UI上的一小部分元素,LayoutInspector提供的UI的信息对于调试而言,大部分均为无效的信息。

3、调试连接不稳定

个人电脑和触控设备之间属于跨进程远程通讯,跨进程远程通讯的过程是不稳定的,个人电脑经常会无法检测到触控设备上的应用程序的进程,从而无法调试。

4、属性无法实时更新

由于LayoutInspector先在触控设备上获取整个UI的信息,再整体传输到个人电脑上,这个过程耗费的时间较长,UI的元素发生变化时,变化的信息更新到LayoutInspector上会有数秒的延迟,这会导致诸如细腻的动画等元素难以被调试。

5、无法调试自定义的元素

LayoutInspector是既定厂商提供的、通用化的调试工具,已经固化代码,可以测试一些主流的元素,但是,针对不用的业务需求,如直播、短视频、即时通讯、电子邮件等,UI的设计均有所不同,开发者可能会设计一些较为独特的元素,LayoutInspector并不支持这些元素的调试。

对于UETool,可直接运行在触控设备上,有如下缺点:

1、有集成成本

把UETool集成到应用程序时,开发人员额外编写代码来适配,触发调试工具的开启和关闭,而且,要求为应用额外申请悬浮窗的权限,如果用户拒绝权限会出现异常。

2、影响应用程序的使用

当开启调试之后,UETool会拦截UI上的所有触摸事件、键盘输入,也就是说,在调试期间,除了可以操作要调试的元素以外,其他应用程序原本的功能都无法正常使用。

3、支持调试的属性少

UETool支持调试UI元素本身的属性,并不支持UI元素布局的属性,例如,UI的元素有外边距(Margin)和内边距(padding),元素本身的属性有内边距(比如按钮中文字到按钮边框的距离),缺少了布局的属性——外边距(比如按钮到另一个按钮的距离),等等。

4、属性无法实时更新

UETool将UI上的信息记录在日志文件中,需要在结束调试后,导出日志文件再进行分析,导致UI的元素调试难度大。

5、无法调试自定义的元素

UETool是既定厂商提供的、通用化的调试工具,已经固化代码,可以测试一些主流的元素,但是,针对不用的业务需求,如直播、短视频、即时通讯、电子邮件等,UI的设计均有所不同,开发者可能会设计一些较为独特的元素,UETool并不支持这些元素的调试。

实施例一

图1为本发明实施例一提供的一种应用程序的调试方法的流程图,本实施例可适用于使用透明的遮罩定位用户调试的元素,从而将该元素的属性显示在遮罩的情况,该方法可以由应用程序的调试装置来执行,该应用程序的调试装置可以由软件和/或硬件实现,可配置在计算机设备中,该计算机设备通常为支持触控操作的设备,例如,移动终端(如手机、平板电脑、个人数字助理等)、智能穿戴设备(如智能手表等)、交互平板(如用于教育的交互平板、用于办公的会议平板),等等,具体包括如下步骤:

步骤101、调试工具在应用程序的用户界面上生成透明的遮罩。

一般情况下,计算机设备的操作系统可以包括Android(安卓)、iOS、HarmonyOS(鸿蒙)等等,在这些操作系统中,可以支持应用程序与调试工具同时运行。

其中,应用程序与调试工具是相互独立的计算机程序,可同时运行在计算机设备中,并不需要使用个人电脑搭建调试的环境,技术门槛较低,便于美术设计师和测试人员等调试人员调试,并且,计算机设备不需要跟个人电脑连接,避免跨进程通讯,可以保证调试的稳定性。

一方面,应用程序可以指为了独立完成一项或多项业务功能而被开发运行于操作系统之上的计算机程序,例如,用于即时进行通讯的即时通讯工具、用于收发电子邮件的电子邮箱客户端、用于浏览网页的浏览器、用于播放和/或生产多媒体数据(如直播、短视频等)的多媒体应用,等等。

另一方面,该调试工具可以指为了独立调试指定应用程序的用户界面上的元素而被开发运行于操作系统之上的计算机程序。

应用本实施例,可以提供调试工具的框架,调试工具的框架由开发人员开发,实现一些通用的调试功能,包括但不限于生成遮罩(即步骤101)、拦截并分发触摸事件(即步骤102)、提供接口的规范、显示元素的属性信息(即步骤104),调试人员在该调试工具的框架下,针对不同应用程序的调试需求扩充调试该应用程序的用户界面上的元素的功能,例如,按照接口的规范添加查询实现调试功能的组件,等等,可以得到与应用程序适配的调试工具。

如图2所示,在应用程序运行的过程中,可加载用户界面210,在用户界面210中可加载相应的元素,如扳手211,此时,调试工具可在该用户界面上生成透明的遮罩220,该遮罩220可以覆盖整个用户界面210的各个元素,并且,遮罩透明,调试人员不可视,而遮罩之下的用户界面的各个元素依然是调试人员可视的,因此,在视觉效果上,在应用程序的用户界面之上加载透明的遮罩并不会影响调试人员在调试时针对应用程序的用户界面而触发的触控操作。

在本发明的一个实施例中,如图3所示,调试人员可通过下拉或上推等方式调出提供快捷方式的页面,在该页面中可显示通知栏,调试工具可在通知栏中显示入口控件(如通知栏右侧以圆圈包围三角形的控件),在调试期间,调试人员可以按照调试的需求针对该入口控件触发启动操作,如单击操作,而调试工具接收作用于该入口控件的启动操作,响应于该启动操作,可在应用程序的用户界面上添加透明的遮罩。

当然,如图3所示,在调试期间,调试人员可通过下拉或上推等方式调出提供快捷方式的页面,在该页面中可显示通知栏,调试人员还可以按照调试的需求针对该入口控件触发结束操作,如单击操作,而调试工具还可以接收作用于入口控件的结束操作,响应于结束操作,取消遮罩,使得其他调试的操作正常执行。

通过在通知栏显示入口控件控制调试工具的开启与关闭,无需调试人员额外编写代码来适配,提高了调试的可控性及简便性,降低了调试的成本。

此外,根据计算机设备不同操作的情况,透明的遮罩可使用不同的方案实现。

在一个示例中,对于Android系统,若满足版本大于6.0且具有悬浮窗的权限的条件,则可以在操作系统的窗口管理器WindowManager中添加透明的遮罩,该遮罩一般具有最高的层级,使得该遮罩所处的层级高于应用程序的用户界面所处的层级。

在另一个示例中,若不满足前述示例的条件,则可以检测当前用户界面的类别是否属于碎片活动FragmentActivitiy(一种Android系统的页面类型,特点是可以放置碎片Fragment到用户界面中,碎片Fragment是一种界面图形的合集,如对话框),若应用程序的界面属于碎片活动FragmentActivitiy,则添加类型为碎片型Fragment的、透明的对话框、作为遮罩,由于不满足悬浮窗的情况,自然可得该对话框,该对话框可用于遮挡应用程序的用户界面,使得遮罩位于应用程序的用户界面之上。

在又一个示例中,若不满足前述示例的条件,则可以添加透明的对话框、作为遮罩,该对话框属于普通的对话框,并非类型为碎片型Fragment的对话框,该对话框与碎片型Fragment的对话框的区别在于,不受应用生命周期的统一管理,功能较弱,但是,对话框仍可用于遮挡应用程序的用户界面。

当然,上述生成透明遮罩的方式只是作为示例,在实施本发明实施例时,可以根据实际情况设置其它生成透明遮罩的方式,本发明实施例对此不加以限制。另外,除了上述生成透明遮罩的方式外,本领域技术人员还可以根据实际需要采用其它生成透明遮罩的方式,本发明实施例对此也不加以限制。

步骤102、当遮罩拦截到用户界面中的元素触发的触摸事件时,调试工具将触摸事件分发至用户界面中的元素,以触发触摸事件对应的触控操作。

调试人员透过透明的遮罩,可以正常浏览到在遮罩之下的、用户界面的元素,调试人员可根据调试的需求对相应的元素进行触控操作,也就是说,在调试期间,调试人员可直接通过触控操作选取要调试的元素,后续即可看到对应的属性信息,使用方便,而且,不影响应用程序本身功能的正常使用。

这些触控操作在操作系统中会被处理为一系列的触摸事件,这些触摸事件包括按下事件DOWN(触摸物按下到屏幕)、移动事件MOVE(触摸物在屏幕上移动)、抬起事件UP(触摸物抬起离开屏幕)、取消事件CANCEL(外因导致触控操作中断/取消),等等。

调试人员针对用户界面中待调试的元素触发触控操作,但是,由于透明的遮罩位于用户界面的元素之上,因此,透明的遮罩可以将调试人员针对用户界面的元素触发触控操作时而生成的触摸事件拦截下来,为了保证应用程序的功能正常执行,可将拦截的触摸事件分发至应用程序,应用程序接收到该触摸事件,正常进行响应。

例如,如图2所示,调试人员欲调试用户界面210上的元素211,元素211处于在用户界面210上位置B,调试人员使用触摸物200(如手指)点击元素211,由于调试工具的遮罩220位于应用程序的用户界面210之上,在遮罩220的位置A可拦截到触摸物200触发的触摸事件,位置A与位置B在屏幕中的相对位置相同,此时,则可以将该触摸事件分发至用户界面210,使得触发元素211、执行相应的触控操作。

当遮罩拦截到的是按下事件DOWN、移动事件MOVE等触摸事件时,遮罩直接将按下事件DOWN、移动事件MOVE等触摸事件分发至用户界面中相应的元素,不做多余处理。

当遮罩拦截到的是抬起事件UP时,可基于该抬起事件、通过触摸事件的坐标以及触摸事件的持续时间进行判断,从而确定调试人员触发的触控手势,例如,如果触摸物按下(按下事件DOWN)和离开(抬起事件UP)的坐标只有极小偏差,而且按下(按下事件DOWN)的持续时间小于阈值(如500ms),那么,可以认为调试人员触发单击行为,该触控手势可用于触发应用程序执行触控操作,例如,暂停播放短视频、发送即时通讯消息、选定表情,等等。

若确定触控手势,则遮罩不再分发抬起事件UP,而改为分发取消事件CANCEL事件,中断应用程序对触控手势的处理、从而中断触控操作。

此外,为了确定调试人员欲调试的元素,可将触摸事件分发至应用程序,为了提高响应速度,可在分发按下事件DOWN至应用程序之后进行元素的定位。

当分发触摸事件(如按下事件DOWN)完成时,操作系统会使用户界面上的元素持有一个叫触摸目标TouchTarget的另一个UI元素,从而记录触摸链,其中,触摸链按照顺序排列有用户界面中的多个元素,下一界面元素作为上一界面元素的触摸目标TouchTarget,例如,调试人员点击对话框中背景图里的一行文字,那么对话框(用户界面的元素)的TouchTarget是背景图(用户界面的元素),背景图(用户界面的元素)的TouchTarget是文本框(用户界面的元素),如此一个元素接一个元素形成一条链状结构,称之为触摸链,该触摸链可用于追踪整个触摸行为影响的视图。

通过获取触摸链,调试工具可查询触摸链中位于末位的元素,也就是调试人员欲调试的元素。

此后,若调试工具分发了取消事件CANCEL,触控操作被中断,所有触摸链上的元素取消持有下一个元素,触摸链被打断,用户界面恢复到没有触摸事件的状态。

步骤103、调试工具调用为应用程序设置的接口、查询元素的属性信息。

调试人员预先在调试工具的框架下扩充调试应用程序的用户界面上的元素的功能,使之成为与应用程序匹配的接口,扩展性强。

如图2所示,调用调试工具提供的接口230,可查询相应元素的属性信息,实现第三方元素的属性信息的解析。

示例性地,接口以元素作为输入,输出元素的属性信息,该属性信息可以包括以键值对表(多个key:value的列表)的形式记录,其中,key是属性的名称,value是属性的数值。

例如,为实现一个名称为Lottie的元素的调试,如果输入到接口的元素是Lottie,那么对Lottie输出的属性信息的键值对表分别为(动画时长:3s)、(动画文件:assets/anim/file.json),等等。

在本发明的一个实施例中,步骤103包括如下步骤:

步骤1031、读取为应用程序设置的接口的配置文件。

在本实施例中,可以预先为接口设置配置文件,该配置文件可为TXT文本格式,具有一个或多个组件的名称,该组件由调试人员针对应用程序开发的一个代码文件,可用于调试应用程序中的元素,该组件的代码文件本身以及配置文件已包含在调试工具的安装目录下,并且,该组件可依赖调试工具的接口,即执行组件之前先执行调试工具的接口,使得调用调试工具的接口之后、可调用该组件。

在调试工具调试元素时,可从安装目录中读取相应的配置文件,待创建组件。

步骤1032、依据名称创建组件。

如图2所示,在创建组件(如组件A、组件B、组件C)时,遵循Java反射机制(reflection),通过组件的名称,使用组件的代码文件本身创建对应的实现类。

其中,Java的反射机制是指在计算机程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。

步骤1033、若调试工具与应用程序处于同一进程中,则从进程的内存中查找实现元素的对象。

调试工具在运行的时候,侵入到应用程序中,使得调试工具与应用程序处于同一进程(process)中,处于同一进程中的不同计算机程序共享同一块内存,因此,调试工具可在进程的内存中查找实现待调试的元素的对象。

由于调试工具与应用程序处于同一进程,因此,可解析元素自身的属性信息,也可以解析元素在布局上的属性信息,此外还可以解析第三方元素的属性信息,可视化的属性信息齐全,具体而言,这些属性信息包括但不限于元素的class(实现类)、ID(编号)、rect(渲染用的矩形)、background(背景)、elevation(视图View的深度(高度),也就是z方向的值)、pivotX(缩放/旋转起点X轴坐标)、pivotY(缩放/旋转起点Y轴坐标)、text(文本)、textSize(文本大小)、textColor(文本颜色)、isBold(是否粗体)、ellipsize(当文字长度超过textview宽度时的显示方式)、maxLines(最多显示的行数),等等。

步骤1034、调用接口中的组件解析对象、以查询元素的属性信息。

如图2所示,将实现元素的对象输入接口230中,调用依赖该接口230的组件231、按照自身的逻辑解析该对象,从而得到元素的属性信息。

在一种解析方式中,若调试工具提供统一的接口,而存在多个为不同元素开发的组件时,可将多个组件设置顺序,以轮询的方式调用组件解析元素的属性信息。

具体而言,将对象输入接口中,判断是否已调用完接口的组件;若否,则按照该顺序调用当前剩余的组件解析对象、以查询元素的属性信息。

判断组件是否输出元素的属性信息;若是,表示当前的组件与元素适配,正确解析元素的属性信息,则可以调用接口输出元素的属性信息;若否,表示当前的组件与元素不适配,未能正确解析元素的属性信息,输出错误的信息,则可以返回执行判断是否已调用完接口的组件,调用下一个组件尝试解析元素的属性信息。

一般情况下,元素的名称、ID等标识信息在开发过程中的可信度较低,容易出现重名、变动名称等情况,因此,以标识信息区分调用不同的组件容易出错,本解析方式中,通过轮询的方式调用组件解析元素的属性信息,可保证正确输出元素的属性信息,并且,针对同一个用户界面中的元素,可调用的组件的数量较少,而各组件解析元素的属性信息的速度是比较快的,通过轮询的方式调用组件解析元素的属性信息,可以保证较快的响应速度。

当然,上述解析元素的方式只是作为示例,在实施本发明实施例时,可以根据实际情况设置其它解析元素的方式,例如,在元素的名称、ID等标识信息在开发过程中的可信度较高的情况下,可以以标识信息关联相应的组件,按照该标识信息调用相应的组件解析元素的属性信息,等等,本发明实施例对此不加以限制。

步骤104、调试工具在遮罩中显示属性信息。

如图2所示,可以将元素的属性信息221以文本的形式排列绘制在透明的遮罩220中,由于调试工具的遮罩220处于应用程序的用户界面210之上,遮罩220上的属性信息221可以显示在应用程序的用户界面210之上。

由于调试工具是对调试人员选定的元素进行解析,并不需要解析整个用户界面所有元素的属性信息,解析量少,速度快,通过直接给元素添加绘制监听器,可以在该元素后续重新绘制时重新获取元素的属性信息,达到实时更新属性信息的效果。

如图4A所示,若调试人员选定用户界面右下角的元素(以圆形包含电子邮件的形式表示),该元素为一个实现动画的元素,可在用户界面上移动,此时,调试工具可以在用户界面之上的遮罩不断更新该元素的属性信息,其中,表示坐标的属性信息会随着元素的移动而不断变化,如图4B所示,若用户拉动用户界面,点击另一个元素(文本为“5:ShowSnackBar”),此时,调试工具可以在用户界面之上的遮罩显示该元素的属性信息。

在本实施例中,调试工具在应用程序的用户界面上生成透明的遮罩,当遮罩拦截到用户界面中的元素触发的触摸事件时,调试工具将触摸事件分发至用户界面中的元素,以触发触摸事件对应的触控操作,调试工具调用为应用程序设置的接口、查询元素的属性信息,调试工具在遮罩中显示属性信息,调试工具与应用程序共同运行在同一计算机设备中,通过遮罩拦截触摸事件、分发触摸事件,一方面,应用程序可以正常接收到触摸事件,并不妨碍应用程序的正常运行,另一方面,分发的过程可以定位到调试人员调试的元素,从而查询该元素的属性信息,分析的元素为调试人员调试的元素、数据量少,查询属性信息的速度快,可实时显示在遮罩上,无需将属性信息远程传输到个人电脑上、也无需导出日志文件再分析属性信息,调试的时效性强。

实施例二

图5为本发明实施例二提供的一种应用程序的调试方法的流程图,本实施例以前述实施例为基础,进一步增加编译应用程序与调试工具、启动调试工具的操作,该方法具体包括如下步骤:

步骤501、将调试工具打包为程序包。

在本实施例中,开发人员在开发调试工具的框架时,定义调试元素的接口,通过打包工具将调试工具的框架打包为程序包(Java Archive,Jar),其中,该程序包包含了调试元素的接口,使得其他调试应用程序的元素的调试人员可以直接使用程序包中的类、属性和方法,尤其可以使用程序包中的接口。

步骤502、针对应用程序中的元素,在程序包中配置用于调试元素的接口。

在既定程序包的接口的情况下,调试人员可以针对应用程序中的元素在程序包中扩展调试该元素的功能,从而完成配置可调试元素的接口。

在一种配置方式中,可确定调试工具定义的接口,将一个或多个组件依赖接口,其中,组件为调试人员针对应用程序中的元素开发的代码文件,可用于调试应用程序中的元素,以及,对接口生成配置文件。

针对调试人员在调试工具的接口之下扩展调试元素的功能,可生成配置文件,该配置文件可用于记录调试元素的方式。

在一种生成配置文件的方式中,可查询组件的名称,将组件的名称写入为接口设置的配置文件中,将配置文件命名为统一的名称。

在本方式中,考虑到同一版本的应用程序由不同的团队独立进行开发不同的功能,针对不同元素可能由不同的团队独立开发用于调试的组件,使得同一版本的应用程序下可能具有多个配置文件,将多个配置文件命名为统一的名称,方便在编译时合并,保持配置文件的单一性。

当然,除了名称之外,还可以在配置文件中记录组件的名称与元素的标识信息之间的映射关系,以基于该映射关系将元素输入至相应的组件解析属性信息,本实施例对此不加以限制。

如图6所示,开发人员提供接口的规范,输入为元素、输出为元素的属性信息,调试人员可以遵循该规范扩展各个组件,并依赖该接口,例如,假设应用程序的用户界面上具有元素A、元素B、元素C,调试人员可以针对元素A开发组件A,该组件A遵循该接口的规范,输入为元素A、输出为元素A的属性信息,并将组件A依赖该接口,针对元素B开发组件B,该组件B遵循该接口的规范,输入为元素B、输出为元素B的属性信息,并将组件B依赖该接口,针对元素C开发组件C,该组件C遵循该接口的规范,输入为元素C、输出为元素C的属性信息,并将组件C依赖该接口。

步骤503、将工作目录编译为应用程序安装包。

在编译计算机程序时,可设置工作目录,该工作目录是指参与编译的文件目录,在本实施例中,该工作目录包括应用程序的代码本身、程序包、接口,那么,在编译时,可将应用程序的代码本身(如java代码文件)、程序包、接口编译到同一个应用程序安装包,如Android应用程序包(Android application package,APK)。

其中,对于接口,可以理解为实现接口的代码文件,例如,若调试工具已定义接口,调试人员在接口的规范下扩展组件、将组件依赖该接口,并对接口生成配置文件,则可以将组件、配置文件放入工作目录中进行编译。

进一步地,若在先具有多个名称相同的配置文件,则在编译时,可将名称相同的配置文件合并为一个配置文件。

如图7所示,若调试人员针对应用程序分布扩展了class格式的组件A、组件B、组件C,组件A关联有一个TXT文本格式的配置文件(名称为“configuration”),在该配置文件中记录组件A的名称,组件B关联有一个TXT文本格式的配置文件(名称为“configuration”),在该配置文件中记录组件B的名称,组件C关联有一个TXT文本格式的配置文件(名称为“configuration”),在该配置文件中记录组件C的名称,则在工作目录中,可放置应用程序、调试工具(程序包Jar)、组件A及其配置文件、组件B及其配置文件、组件C及其配置文件,在编译之后,组件A的配置文件、组件B的配置文件、组件C的配置文件会合并为一个名称为“configuration”的配置文件,该配置文件记录组件A的名称、组件B的名称、组件C的名称。

步骤504、安装应用程序安装包。

将应用程序安装包安装至计算机设备中,等待调试人员对应用程序进行调试,其中,应用程序与调试工具可以位于同一个安装目录中,也可以位于不同的安装目录中,本实施例对此不加以限制。

在调试工具所在的安装目录中,存储有实现接口的代码文件(如组件)、接口的配置文件。

步骤505、将调试工具设置为应用程序的内容提供者。

步骤506、当应用程序启动时,依据内容提供者启动调试工具。

在本实施例中,可以通过内容提供者ContentProvider将调试工具侵入到被调试的应用程序中,其中,内容提供者ContentProvider是一种用于某个计算机程序为其他计算机程序提供内容服务的手段,例如,相册(计算机程序)作为其他计算机程序的内容提供者ContentProvider,其他计算机程序可通过相册提供的照片内容来获取图片。

那么,在调试工具中使用内容提供者ContentProvider、作为应用程序的内容提供者ContentProvider,可以使调试工具跟随被调试应用一同启动,但是,调试工具实质并不向待调试的应用程序提供内容服务,保持低侵入性,即接入调试工具的成本低,接入调试工具后并不影响应用程序原功能的正常使用。

步骤507、调试工具在应用程序的用户界面上生成透明的遮罩。

步骤508、当遮罩拦截到用户界面中的元素触发的触摸事件时,调试工具将触摸事件分发至用户界面中的元素,以触发触摸事件对应的触控操作。

步骤509、调试工具调用为应用程序设置的接口、查询元素的属性信息。

步骤510、调试工具在遮罩中显示属性信息。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

实施例三

图8为本发明实施例三提供的一种应用程序的调试装置的结构框图,该装置包括调试工具800,所述调试工具800具体可以包括如下模块:

遮罩生成模块801,用于在应用程序的用户界面上生成透明的遮罩;

触摸事件分发模块802,用于当所述遮罩拦截到所述用户界面中的元素触发的触摸事件时,将所述触摸事件分发至所述用户界面中的元素,以触发所述触摸事件对应的触控操作;

属性信息查询模块803,用于调用为所述应用程序设置的接口、查询所述元素的属性信息;

属性信息显示模块804,用于在所述遮罩中显示所述属性信息。

在本发明的一个实施例中,所述遮罩生成模块801包括:

入口控件显示模块,用于在通知栏中显示入口控件;

启动操作接收模块,用于接收作用于所述入口控件的启动操作;

遮罩添加模块,用于响应于所述启动操作,在应用程序的用户界面上添加透明的遮罩。

进一步地,所述遮罩生成模块801还包括:

接收操作接收模块,用于接收作用于所述入口控件的结束操作;

遮罩取消模块,用于响应于所述结束操作,取消所述遮罩。

在本发明的另一个实施例中,所述遮罩生成模块801包括:

第一遮罩处理模块,用于在窗口管理器中添加透明的遮罩,所述遮罩所处的层级高于应用程序的用户界面所处的层级;

或者,

第二遮罩处理模块,用于若应用程序的用户界面属于碎片活动,则添加类型为碎片型Fragment的、透明的对话框、作为遮罩,所述对话框用于遮挡应用程序的用户界面;

或者,

第三遮罩处理模块,用于添加透明的对话框、作为遮罩,所述对话框用于遮挡应用程序的用户界面。

在本发明的一个实施例中,所述触摸事件包括按下事件、移动事件、抬起事件、取消事件;

所述触摸事件分发模块802包括:

第一子事件分发模块,用于将所述按下事件、所述移动事件分发至所述用户界面中的元素;

触控手势确定模块,用于基于所述抬起事件确定触控手势,所述触控手势用于触发所述应用程序执行触发触控操作;

第二子事件分发模块,用于将所述取消事件分发至所述用户界面中的元素,以中断所述触控操作。

在本发明的另一个实施例中,所述触摸事件分发模块802包括:

应用程序分发模块,用于将所述触摸事件分发至所述应用程序;

触摸链记录模块,用于当分发完成时,记录触摸链,所述触摸链按照顺序排列有所述用户界面中的多个元素,下一界面元素作为上一界面元素的触摸目标;

元素查询模块,用于查询所述触摸链中位于末位的元素。

在本发明的一个实施例中,所述属性信息查询模块803包括:

配置文件读取模块,用于读取为所述应用程序设置的接口的配置文件,所述配置文件中具有一个或多个组件的名称;

组件创建模块,用于依据所述名称创建所述组件;

对象获取模块,用于若所述调试工具与所述应用程序处于同一进程中,则从所述进程的内存中查找实现所述元素的对象;

对象解析模块,用于调用所述接口中的所述组件解析所述对象、以查询所述元素的属性信息。

在本发明的一个实施例中,所述对象解析模块包括:

对象输入模块,用于将所述对象输入所述接口中;

组件调用判断模块,用于判断是否已调用完所述接口的所述组件;若否,则调用组件查询模块;

组件查询模块,用于调用当前剩余的所述组件解析所述对象、以查询所述元素的属性信息;

属性信息判断模块,用于判断所述组件是否输出所述元素的属性信息;若是,则调用属性信息输出模块,若否,则返回调用组件调用判断模块;

属性信息输出模块,用于调用所述接口输出所述元素的属性信息。

在本发明的一个实施例中,还包括:

调试工具打包模块,用于将调试工具打包为程序包;

接口配置模块,用于针对应用程序中的元素,在所述程序包中配置用于调试所述元素的接口;

工作目录编译模块,用于将工作目录编译为应用程序安装包,所述工作目录包括所述应用程序、所述程序包、所述接口;

应用程序安装包安装模块,用于安装所述应用程序安装包。

在本发明的一个实施例中,所述接口配置模块包括:

接口确定模块,用于确定所述调试工具定义的接口;

接口依赖模块,用于将一个或多个组件依赖所述接口,所述组件用于调试应用程序中的元素;

配置文件生成模块,用于对所述接口生成配置文件。

在本发明的一个实施例中,所述配置文件生成模块包括:

名称查询模块,用于查询所述组件的名称;

名称写入模块,用于将所述组件的名称写入为所述接口设置的配置文件中;

文件命名模块,用于将所述配置文件命名为统一的名称;

所述工作目录编译模块包括:

配合文件合并模块,用于将名称相同的配置文件合并为一个配置文件。

在本发明的一个实施例中,还包括:

内容提供者设置模块,用于将调试工具设置为应用程序的内容提供者;

调试工具启动模块,用于当所述应用程序启动时,依据所述内容提供者启动所述调试工具。

本发明实施例所提供的应用程序的调试装置可执行本发明任意实施例所提供的应用程序的调试方法,具备执行方法相应的功能模块和有益效果。

实施例四

图9为本发明实施例四提供的一种计算机设备的结构示意图。图9示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图9显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图9所示,计算机设备12以通用计算设备的形式表现。计算机设备12的元素可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统元素(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围元素互连(PCI)总线。

计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图9未显示,通常称为“硬盘驱动器”)。尽管图9中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的应用程序的调试方法。

实施例五

本发明实施例五还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述应用程序的调试方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

其中,计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 一种应用程序的调试方法、装置、计算机设备和存储介质
  • 应用程序调试方法、系统、电子设备及计算机可读存储介质
技术分类

06120112986456