搜索文件生成方法及装置与流程

文档序号:12462938阅读:259来源:国知局
搜索文件生成方法及装置与流程

本公开涉及软件开发技术领域,特别涉及一种搜索文件生成方法及装置。



背景技术:

设置功能是Android等移动操作系统中基础的功能之一,用户可以通过终端的系统提供的设置功能对终端进行设置。

很多操作系统的设置功能都提供了搜索入口,以便用户快捷查找某个设置项。目前,设置功能中的搜索功能所使用的搜索文件由操作系统的开发人员维护和更新,即开发人员整理操作系统的设置功能中的各个设置项对应的搜索资源,并将搜索资源添加入搜索文件。



技术实现要素:

本公开实施例提供了一种搜索文件生成方法及装置,技术方案如下:

第一方面,提供了一种搜索文件生成方法,所述方法包括:

搜索文件生成方法,其特征在于,所述方法包括:

获取操作系统中的设置功能的第一级页面的项目信息,所述项目信息包含对应页面中的各个设置项的搜索资源,所述搜索资源至少包括跳转信息和路径,所述跳转信息中包含对应的源文件的类名;

确定操作系统中的各个资源文件;

根据所述第一级页面中的各个设置项的跳转信息和路径,以及所述各个资源文件,逐级确定所述设置功能中各级页面的项目信息;

根据所述各级页面的项目信息生成所述设置功能的搜索文件。

可选的,所述根据所述第一级页面中的各个设置项的跳转信息和路径,以及所述各个资源文件,逐级确定所述设置功能中各级页面的项目信息,包括:

以所述第一级页面中的各个设置项的搜索资源为初始的已确定资源,循环遍历所述各个资源文件中的每一个资源文件,获取所述资源文件的跳转信息;

当所述已确定资源中包含所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源时,根据所述上一级设置项的路径生成所述资源文件中的各个设置项的路径;

根据所述资源文件中的各个设置项的路径以及所述资源文件的跳转信息,生成所述资源文件中的各个设置项的搜索资源;

将所述资源文件中的各个设置项的搜索资源添加入所述已确定资源。

可选的,所述获取所述资源文件的跳转信息,包括:

判断所述资源文件中是否包含所述资源文件的跳转信息;

若判断结果为所述资源文件中包含所述资源文件的跳转信息,则从所述资源文件中获取所述资源文件的跳转信息;

若判断结果为所述资源文件中不包含所述资源文件的跳转信息,则查询引用所述资源文件的目标源文件,根据所述目标源文件的继承关系,确定所述目标源文件的类名,根据所述目标源文件的类名确定所述资源文件的跳转信息。

可选的,所述根据所述上一级设置项的路径生成所述资源文件中的各个设置项的路径之前,还包括:

确定引用所述资源文件的目标源文件的类名;

当所述已确定资源中包含所述目标源文件的类名时,将所述已确定资源中包含所述目标源文件的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述方法还包括:

当所述已确定资源中不包含所述目标源文件的类名时,查询所述目标源文件的子类的类名;

当所述已确定资源中包含所述子类的类名时,将所述已确定资源中包含所述子类的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述方法还包括:

当所述已确定资源中不包含所述目标源文件的类名,且所述目标源文件的类名为Activity类的类名时,分析所述目标源文件的代码,确定所述目标源文件的新的类名,所述新的类名是所述Activity类下引用所述资源文件的Fragment类的类名;

当所述已确定资源中包含所述新的类名时,将所述已确定资源中包含所述新的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述方法还包括:

当所述已确定资源中不包含所述目标源文件的类名,且所述目标源文件的类名为intent类的类名时,查询所述intent类对应的源文件的类名;

当所述已确定资源中包含所述intent类对应的源文件的类名时,将所述已确定资源中包含所述intent类对应的源文件的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述方法还包括:

获取所述设置功能的各级页面中的每个设置项对应的配置信息,所述配置信息用于指示对应的设置项在指定机型和/或指定场景中是否显示;

根据所述配置信息,在所述设置项的搜索资源中设置对应的配置参数。

第二方面,提供了一种搜索文件生成装置,所述装置包括:

信息获取模块,用于获取操作系统中的设置功能的第一级页面的项目信息,所述项目信息包含对应页面中的各个设置项的搜索资源,所述搜索资源至少包括跳转信息和路径,所述跳转信息中包含对应的源文件的类名;

文件确定模块,用于确定操作系统中的各个资源文件;

信息生成模块,用于根据所述第一级页面中的各个设置项的跳转信息和路径,以及所述各个资源文件,逐级确定所述设置功能中各级页面的项目信息;

文件生成模块,用于根据所述各级页面的项目信息生成所述设置功能的搜索文件。

可选的,所述信息生成模块,包括:

信息获取子模块,用于以所述第一级页面中的各个设置项的搜索资源为初始的已确定资源,循环遍历所述各个资源文件中的每一个资源文件,获取所述资源文件的跳转信息;

路径生成子模块,用于当所述已确定资源中包含所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源时,根据所述上一级设置项的路径生成所述资源文件中的各个设置项的路径;

资源生成子模块,用于根据所述资源文件中的各个设置项的路径以及所述资源文件的跳转信息,生成所述资源文件中的各个设置项的搜索资源;

添加子模块,用于将所述资源文件中的各个设置项的搜索资源添加入所述已确定资源。

可选的,所述信息获取子模块,包括:

判断子模块,用于判断所述资源文件中是否包含所述资源文件的跳转信息;

第一获取子模块,用于若判断结果为所述资源文件中包含所述资源文件的跳转信息,则从所述资源文件中获取所述资源文件的跳转信息;

第二获取子模块,用于若判断结果为所述资源文件中不包含所述资源文件的跳转信息,则查询引用所述资源文件的目标源文件,根据所述目标源文件的继承关系,确定所述目标源文件的类名,根据所述目标源文件的类名确定所述资源文件的跳转信息。

可选的,所述信息生成模块,还包括:

第一类名确定子模块,用于在所述路径生成子模块根据所述上一级设置项的路径生成所述资源文件中的各个设置项的路径之前,确定引用所述资源文件的目标源文件的类名;

第一资源确定子模块,用于当所述已确定资源中包含所述目标源文件的类名时,将所述已确定资源中包含所述目标源文件的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述信息生成模块还包括:

第一类名查询子模块,用于当所述已确定资源中不包含所述目标源文件的类名时,查询所述目标源文件的子类的类名;

第二资源确定子模块,用于当所述已确定资源中包含所述子类的类名时,将所述已确定资源中包含所述子类的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述信息生成模块还包括:

第二类名确定子模块,用于当所述已确定资源中不包含所述目标源文件的类名,且所述目标源文件的类名为Activity类的类名时,分析所述目标源文件的代码,确定所述目标源文件的新的类名,所述新的类名是所述Activity类下引用所述资源文件的Fragment类的类名;

第三资源确定子模块,用于当所述已确定资源中包含所述新的类名时,将所述已确定资源中包含所述新的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述信息生成模块还包括:

第二类名查询子模块,用于当所述已确定资源中不包含所述目标源文件的类名,且所述目标源文件的类名为intent类的类名时,查询所述intent类对应的源文件的类名;

第四资源确定子模块,用于当所述已确定资源中包含所述intent类对应的源文件的类名时,将所述已确定资源中包含所述intent类对应的源文件的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述装置还包括:

配置获取模块,用于获取所述设置功能的各级页面中的每个设置项对应的配置信息,所述配置信息用于指示对应的设置项在指定机型和/或指定场景中是否显示;

参数设置模块,用于根据所述配置信息,在所述设置项的搜索资源中设置对应的配置参数。

第三方面,提供一种搜索文件生成装置,所述装置包括:

处理器;

用于存储所述处理器的可执行指令的存储器;

其中,所述处理器被配置为:

获取操作系统中的设置功能的第一级页面的项目信息,所述项目信息包含对应页面中的各个设置项的搜索资源,所述搜索资源至少包括跳转信息和路径,所述跳转信息中包含对应的源文件的类名;

确定操作系统中的各个资源文件;

根据所述第一级页面中的各个设置项的跳转信息和路径,以及所述各个资源文件,逐级确定所述设置功能中各级页面的项目信息;

根据所述各级页面的项目信息生成所述设置功能的搜索文件。

本公开实施例提供的技术方案可以包括以下有益效果:

获取操作系统中的设置功能的第一级页面的项目信息,该项目信息包含对应页面中的各个设置项的搜索资源,该搜索资源至少包括跳转信息和路径,确定操作系统中的各个资源文件,根据该第一级页面中的各个设置项的跳转信息和路径,以及该各个资源文件,逐级确定该设置功能中各级页面的项目信息,根据该各级页面的项目信息生成该设置功能的搜索文件,基本公开所示的方案,能够通过设置功能中的第一级页面的搜索资源,结合操作系统的各个资源文件自动生成设置功能中的各级页面中的各个设置项的搜索资源,不需要开发人员人工整理所有的设置项的搜索资源,达到简化人工操作步骤,减少人工开发时间,提高了软件开发效率的效果。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是根据一示例性实施例示出的一种搜索文件生成方法的流程图;

图2是根据一示例性实施例示出的一种搜索文件生成方法的流程图;

图3是图2所示实施例涉及的一种项目信息生成方法的流程图;

图4是根据一示例性实施例示出的一种搜索文件生成装置的框图;

图5是根据一示例性实施例示出的一种搜索文件生成装置的框图;

图6是根据一示例性实施例提供的电子设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例所示的方案可以应用于各类软件开发平台设备中。比如,本方案可以应用于基于个人电脑或者工作站等运行有软件开发工具的电子设备中。

操作系统中的设置功能通常由若干级页面组成,每一级页面中包含一个或多个设置项,上级页面的某一个设置项可以作为下级页面的入口。在本公开实施例所示的方案中,软件开发工具只需要获取到设置功能的第一级页面中的各个设置项的搜索资源,即可以结合操作系统中的各个资源文件自动查找设置功能中的其它各级页面中的设置项的跳转信息,生成各个设置项在设置功能中的路径,以自动获得设置功能的完整的搜索文件。具体的,本公开所示的方案的实现过程可以参考下面的实施例。

图1是根据一示例性实施例示出的一种搜索文件生成方法的流程图,该方法可以用于运行有软件开发工具的电子设备中。如图1所示,该搜索文件生成方法可以包括如下几个步骤:

步骤101,获取操作系统中的设置功能的第一级页面的项目信息,该项目信息包含对应页面中的各个设置项的搜索资源,该搜索资源至少包括跳转信息和路径,该跳转信息中包含对应的源文件的类名。

步骤102,确定操作系统中的各个资源文件。

步骤103,根据该第一级页面中的各个设置项的跳转信息和路径,以及该各个资源文件,逐级确定该设置功能中各级页面的项目信息。

步骤104,根据该各级页面的项目信息生成该设置功能的搜索文件。

综上所述,本公开实施例所示的方法,获取操作系统中的设置功能的第一级页面的项目信息,该项目信息包含对应页面中的各个设置项的搜索资源,该搜索资源至少包括跳转信息和路径,确定操作系统中的各个资源文件,根据该第一级页面中的各个设置项的跳转信息和路径,以及该各个资源文件,逐级确定该设置功能中各级页面的项目信息,根据该各级页面的项目信息生成该设置功能的搜索文件,基本公开所示的方案,能够通过设置功能中的第一级页面的搜索资源,结合操作系统的各个资源文件自动生成设置功能中的各级页面中的各个设置项的搜索资源,不需要开发人员人工整理所有的设置项的搜索资源,达到简化人工操作步骤,减少人工开发时间,提高了软件开发效率的效果。

图2是根据一示例性实施例示出的一种搜索文件生成方法的流程图,该方法可以用于运行有软件开发工具的电子设备中。如图2所示,该搜索文件生成方法可以包括如下几个步骤:

步骤201,获取操作系统中的设置功能的第一级页面的项目信息。

其中,该项目信息包含对应页面中的各个设置项的搜索资源,该搜索资源至少包括跳转信息和路径,该跳转信息中包含对应的源文件的类名。

比如,以安卓系统中搜索资源为例,设置功能中的每个设置项的搜索资源可以包括显示信息、用户输入数据的匹配信息以及跳转信息,其中,显示信息用于对搜索结果进行显示,比如,显示信息中可以包括资源名称(resource_name)以及路径(path)信息,用户输入数据的匹配信息可以是关键字(keywords),跳转信息中可以包括设置项对应的源文件的类名,比如,该跳转信息可以是引用该设置项的资源文件的类的类名。在安卓系统中,源文件可以是Java文件,跳转信息中可以设置四种标签,分别为intent标签、class标签、package标签以及fragment标签,其中,intent标签中的内容可以是设置项对应的intent类的类名,class标签中的内容可以是设置项对应的Activity类的类名,package标签中的内容可以是设置项对应的package类的类名,fragment标签中的内容可以是设置项对应的fragment类的类名。

本公开实施例中,软件开发工具需要先获取设置功能的第一级页面(即设置主页面)中的各个设置项的搜索资源。比如,某操作系统中的设置功能的第一级页面包含“连接”、“设备”、“控制”以及“一般”这四个设置项,且这四个设置项中每个设置项下面都包含至少一级设界面,比如,通过点击“练级”设置项,可以进入对应的连接界面,该连接界面中又包含若干个设置项,比如“WLAN”、“蓝牙”以及“网络共享和移动热点”等等,其中,该连接界面中的各个设置项下面也可能包含再下一级页面,以此类推。本步骤中,软件开发工具只需要获取第一级页面中的“连接”、“设备”、“控制”以及“一般”这四个设置项的搜索资源即可。

步骤202,确定操作系统中的各个资源文件。

在本公开所示的方案中,软件开发工具可以遍历操作系统的所有资源文件(比如,安卓系统中的资源文件可以是.xml文件)。

或者,也可以由开发人员通过加标签(TAG)的方式从操作系统中的各个资源文件中指定出设置项相关的资源文件。

步骤203,根据该第一级页面中的各个设置项的跳转信息和路径,以及该各个资源文件,逐级确定该设置功能中各级页面的项目信息。

本公开所示的方案中,跳转信息中包含的源文件的类名,可以是引用对应的设置项的资源文件的类的类名,在已经能够确定设置功能的第一级页面的各个设置项的跳转信息的情况下,如果引用某个资源文件的类与第一级页面中的各个设置项中某个指定设置项的跳转信息中的类匹配,则说明该资源文件中包含的各个设置项就是该指定设置项的下一级设置项,据此可以获得该资源文件中包含的各个设置项的搜索资源,类似的,根据该资源文件中包含的各个设置项的搜索资源,结合其它资源文件,又可以获取该资源文件中包含的各个设置项的下一级页面的设置项的搜索资源,以此类推,直至获取到设置功能中所有各级页面中的设置项的搜索资源。

请参考图3,其示出了本公开实施例涉及的一种项目信息生成方法的流程图。如图3所示,该方法可以包括如下步骤:

步骤31,以该第一级页面中的各个设置项的搜索资源为初始的已确定资源,循环遍历该各个资源文件中的每一个资源文件,获取该资源文件的跳转信息。

其中,在获取资源文件的条件信息时,可以判断该资源文件中是否包含该资源文件的跳转信息;若判断结果为该资源文件中包含该资源文件的跳转信息,则从该资源文件中获取该资源文件的跳转信息;若判断结果为该资源文件中不包含该资源文件的跳转信息,则查询引用该资源文件的目标源文件,根据该目标源文件的继承关系,确定该目标源文件的类名,根据该目标源文件的类名确定该资源文件的跳转信息。

操作系统中部分资源文件可能本身已经包含了可以作为跳转信息的相关信息,比如,以安卓系统为例,部分资源文件中可能已经包含了intent标签、class标签、package标签以及fragment标签中的一种或多种,且这些标签中至少一个标签不为空,此时,可以直接将该资源文件中的intent标签、class标签、package标签以及fragment标签获取为资源文件的跳转信息。

在另一些资源文件中,可能并不存在跳转信息,此时,软件开发工具可以查询引用该资源信息的源文件,根据源文件的继承关系(即查询源文件中的基类和各个子类),确定该源文件的类名,即通过源文件的基类和各个子类确定源文件对应的类是Activity类还是Fragment类,并记录对应的类名和类型,比如,若源文件对应的类是Activity类,则为该资源文件生成class标签,并在class标签中添加Activity类的类名,如果该资源文件是Fragment类,则为该资源文件生成Fragment标签,并在Fragment标签中添加Fragment类的类名。

步骤32,当该已确定资源中包含该资源文件中的各个设置项对应在该设置功能中的上一级设置项的搜索资源时,根据该上一级设置项的路径生成该资源文件中的各个设置项的路径。

当已确定资源中包含该资源文件中的各个设置项对应在该设置功能中的上一级设置项的搜索资源时,软件开发工具可以将该资源文件中的各个设置项的名称与上一级设置项的路径进行组合,即可以生成各个设置项的路径。

比如,以上一级设置项为“连接”为例,该上一级设置项的路径为“设置/连接”,若资源文件中的各个设置项为“WLAN”、“蓝牙”以及“网络共享和移动热点”,则对应设置项“WLAN”的路径为“设置/连接/WLAN”,相应的,对应“蓝牙”的路径为“设置/连接/蓝牙”,以此类推。

可选的,在根据该上一级设置项的路径生成该资源文件中的各个设置项的路径之前,软件开发工具可以通过如下方法,来从已确定资源中找出资源文件中的各个设置项对应的上一级设置项的搜索资源:

1)软件开发工具确定引用该资源文件的目标源文件的类名;当该已确定资源中包含该目标源文件的类名时,将该已确定资源中包含该目标源文件的类名的搜索资源,确定为该资源文件中的各个设置项对应在该设置功能中的上一级设置项的搜索资源。

软件开发工具可以先确定引用该资源文件的源文件(Java文件)的类名,并从已确定资源中查找该源文件的类名,如果查找到该源文件的类名,则将已确定资源中的该源文件的类名对应的设置项确定为上一级设置项。

2)当该已确定资源中不包含该目标源文件的类名时,软件开发工具查询该目标源文件的子类的类名;当该已确定资源中包含该子类的类名时,将该已确定资源中包含该子类的类名的搜索资源,确定为该资源文件中的各个设置项对应在该设置功能中的上一级设置项的搜索资源。

以安卓系统为例,如果步骤(1)查找不到引用该资源文件的源文件的类名,则有可能是在步骤(1)中找到的Java文件是基类,而已确定资源中写入的是其子类,因此需将步骤(1)中找到的Java文件的子类的类名都找出,并在已确定资源中搜索,如果找到该子类的类名,则将该子类的类名对应的设置项确定为上一级设置项。

3)当该已确定资源中不包含该目标源文件的类名,且该目标源文件的类名为Activity类的类名时,分析该目标源文件的代码,确定该目标源文件的新的类名,该新的类名是该Activity类下引用该资源文件的Fragment类的类名;当该已确定资源中包含该新的类名时,将该已确定资源中包含该新的类名的搜索资源,确定为该资源文件中的各个设置项对应在该设置功能中的上一级设置项的搜索资源。

以安卓系统为例,如果步骤(1)查找不到引用该资源文件的源文件的类名,则可能是上述资源文件中声明的跳转信息是Activity类的类名,而在步骤(1)时找到的源文件的类是Fragment类,而这两个文件无法建立联系的,此时可根据Activity类中的代码,搜索引用该资源文件的Java文件,确定Fragment类的类名,在已确定资源中查找Fragment类的类名,若查找到该Fragment类的类名,则将该Fragment类的类名对应的设置项确定为上一级设置项。

4)当该已确定资源中不包含该目标源文件的类名,且该目标源文件的类名为intent类的类名时,查询该intent类对应的源文件的类名;当该已确定资源中包含该intent类对应的源文件的类名时,将该已确定资源中包含该intent类对应的源文件的类名的搜索资源,确定为该资源文件中的各个设置项对应在该设置功能中的上一级设置项的搜索资源。

以安卓系统为例,如果步骤(1)查找不到引用该资源文件的源文件的类名,则可能是上述资源文件中声明的跳转信息是Intent,而在步骤(1)中找到的是Java文件,此时需根据AndroidManifest文件(Activity声明文件)来确定关系,即通过扫描每一个activity标签的信息,来建立Intent和Java文件的对应关系,并获取对应的Java文件的类名,在已确定资源中查找该Java文件的类名,若查找到该Java文件的类名,则将该Java文件的类名对应的设置项确定为上一级设置项。

步骤33,根据该资源文件中的各个设置项的路径以及该资源文件的跳转信息,生成该资源文件中的各个设置项的搜索资源。

步骤34,将该资源文件中的各个设置项的搜索资源添加入该已确定资源。

软件开发工具确定出资源文件中的设置项的路径后,获取该设置项的关键词,并将该设置项的路径、关键词以及资源文件的跳转信息组合生成该设置项的搜索资源,并将新生成的搜索资源添加入已确定资源,以便后续继续寻找该设置项的下一级设置项。

相应的,如果通过上述步骤(1)至步骤(4)都没能确定出资源文件中的各个设置项对应在该设置功能中的上一级设置项,则可能是该上一级设置项尚未建立,此时,等待所有的资源文件都遍历一遍并生成和添加设置项的搜索资源后,再重新按照上述步骤,从已确定资源中查找该资源文件中的各个设置项的上一级设置项。

步骤204,根据该各级页面的项目信息生成该设置功能的搜索文件。

软件开发工具生成各个设置项的搜索资源并添加入已确定资源后,将已确定资源都写入一个搜索文件(比如,命名为functionindex.xml)。

步骤205,获取该设置功能的各级页面中的每个设置项对应的配置信息,该配置信息用于指示对应的设置项在指定机型和/或指定场景中是否显示。

步骤206,根据该配置信息,在该设置项的搜索资源中设置对应的配置参数。

在实际应用中,一个操作系统可能匹配多个不同的机型,而不同的机型中,设置功能的设置项的显示也可能不同,比如,在某些机型中的设置功能中显示某个设置项,而在另一些机型中可能不显示该设置项;或者,在某些场景(比如老人模式或第二空间等)下,设置功能的某些设置项可能会不显示。对此,在本方案中,可以预先设置每个设置项对应的配置信息,该配置信息用于指示对应的设置项在指定机型和/或指定场景中是否显示,并按照配置信息设置响应的设置项的配置参数,比如,可以设置is_searchable和is_secondspace等字段来描述设置项在指定机型和/或指定场景中是否显示,其中,is_searchable可以用来存储机型对应的控制条件,is_secondspace可以用来描述在第二空间中是否显示。

具体的,以安卓系统为例,本公开实施例的完整流程可以如下:

<1>将设置功能的设置树的一级目录写入文件搜索。

初始化设置树数据结构,并将头节点写入(头结点可以为“设置”)。设置树的节点,主要包含data和children,data存储设置项对应搜索资源(主要包含path,resource_name,fragment,class,package,is_searchable,is_secondspace),children存储设置项下的子页面。设置树一级节点在系统中可以对应settings_headers.xml文件,作为整个设置树的主干,同时为后面的搜索资源的路径生成做准备。

<2>将其他相关资源依次写入搜索文件。

1>确定系统中各个资源文件,将这些资源文件依次加载至内存;

2>以A来代替其中一个资源文件,如果资源文件中已包含足够的可供生成搜索资源的信息(即跳转信息),则将这些跳转信息直接写入文件,并;

3>如果在资源文件中没有相关的跳转信息(即intent,class,package,fragment都为空),则可通过扫描java文件,可以得到哪些java文件中引用了A资源文件(一般只有一个java文件),然后通过此java文件的基类和子类来确定此Java文件是Fragment类还是Activity类,最终将类型和类名写入文件中,作为资源文件的搜索资源;

4>搜索资源分组(即搜索上一级设置项)并生成当前设置项的路径;

具体实现方式:

(1)通过扫描java文件,确认A资源文件被引用的Java文件,用J来描述;

(2)在搜索文件中已写入的搜索资源中搜索J,如果找到,则可以确认分组,将A资源文件中每一个设置项对应的资源文件名称与分组的path(即上一级设置项的路径)拼接起来,成为此设置项对应的搜索资源的path;

(3)如果步骤(2)找不到,则很有可能是在步骤(1)中找到的Java文件是基类,而已写入的搜索资源中写入的是其子类,因此需将此Java文件的子类都找到,并在已写入的搜索资源中搜索,如果找到,则确立分组,写入设置项的搜索资源的path;

(4)如果步骤(3)找不到,则有可能是A资源文件中声明的跳转信息是Activity,而在步骤(1)时找到的Java文件是Fragment,而这两个文件无法建立联系,此时可根据Activity中的代码,搜索引用A资源文件的Java文件来建立关系,进而确立分组,写入设置项的搜索资源的path;

(5)如果步骤(4)找不到,很有可能A资源文件中声明的跳转信息是Intent,而在步骤(1)中找到的是Java文件,此时需根据AndroidManifest文件来确认关系,通过扫描每一个activity标签的信息,来建立Intent和Java文件的对应关系,进而确认分组,写入设置项的搜索资源的path;

(6)如果步骤(5)找不到,则很有可能资源文件的上一级设置项还没有写入,无法建立分组,此时将A资源文件的标识写入数组Array中;

(7)以数组Array中的资源为输入,重复步骤(1)至步骤(5)。

5>设置机型差异项(比如is_searchable)以及特殊场景差异项(比如is_secondspace)的搜索资源。

本公开带来的有益效果主要体现在搜索的灵活性,当某工程师开发某一新功能时,不再需要搜索工程师配合来完成此功能的搜索相关的开发,老版本的搜索需要人工维护搜索资源,设置项数量较大且较为繁琐,而且难免会出现遗漏现象,导致用户搜索不到,而本方案后期维护成本非常低,提高了工程师了工作效率的同时,较低工程师后期维护的成本,而且会大大改善用户使用搜索功能的体验。

由于上述自动化处理过程是在编译时完成,属于静态处理,无法处理运行时情况,为了保证搜索正常运行且准确,需要设置Java上层代码根据系统的动态运行的情况更新数据库的内容,比如,设置项中有“锁屏和密码”,而在部分手机中是“锁屏密码和指纹”,系统在运行时会根据手机是否支持指纹识别,来判断是显示“锁屏和密码”还是“锁屏密码和指纹”,而资源文件里的资源只是“锁屏和密码”,系统无法获取动态运行值,因此写到搜索资源中的只会是“锁屏和密码”,对此,可以在Java上层设置代码,在系统安装运行时判断手机是否支持指纹识别,若是,则将“锁屏和密码”更新为“锁屏密码和指纹”。

综上所述,本公开实施例所示的方案,获取操作系统中的设置功能的第一级页面的项目信息,该项目信息包含对应页面中的各个设置项的搜索资源,该搜索资源至少包括跳转信息和路径,确定操作系统中的各个资源文件,根据该第一级页面中的各个设置项的跳转信息和路径,以及该各个资源文件,逐级确定该设置功能中各级页面的项目信息,根据该各级页面的项目信息生成该设置功能的搜索文件,基本公开所示的方案,能够通过设置功能中的第一级页面的搜索资源,结合操作系统的各个资源文件自动生成设置功能中的各级页面中的各个设置项的搜索资源,不需要开发人员人工整理所有的设置项的搜索资源,达到简化人工操作步骤,减少人工开发时间,提高了软件开发效率的效果。

下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。

请参考图4,其示出了一示例性实施例示出的一种搜索文件生成装置的框图。该搜索文件生成装置可以通过硬件或者软硬结合的方式实现为电子设备的全部或者部分。该搜索文件生成装置可以包括:

信息获取模块401,用于获取操作系统中的设置功能的第一级页面的项目信息,所述项目信息包含对应页面中的各个设置项的搜索资源,所述搜索资源至少包括跳转信息和路径,所述跳转信息中包含对应的源文件的类名;

文件确定模块402,用于确定操作系统中的各个资源文件;

信息生成模块403,用于根据所述第一级页面中的各个设置项的跳转信息和路径,以及所述各个资源文件,逐级确定所述设置功能中各级页面的项目信息;

文件生成模块404,用于根据所述各级页面的项目信息生成所述设置功能的搜索文件。

基于图4所示的装置,请参考图5,其示出了本公开一示例性实施例示出的一种搜索文件生成装置的框图。如图5所示,所述信息生成模块403,包括:

信息获取子模块403a,用于以所述第一级页面中的各个设置项的搜索资源为初始的已确定资源,循环遍历所述各个资源文件中的每一个资源文件,获取所述资源文件的跳转信息;

路径生成子模块403b,用于当所述已确定资源中包含所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源时,根据所述上一级设置项的路径生成所述资源文件中的各个设置项的路径;

资源生成子模块403c,用于根据所述资源文件中的各个设置项的路径以及所述资源文件的跳转信息,生成所述资源文件中的各个设置项的搜索资源;

添加子模块403d,用于将所述资源文件中的各个设置项的搜索资源添加入所述已确定资源。

可选的,所述信息获取子模块403a,包括:

判断子模块403a1,用于判断所述资源文件中是否包含所述资源文件的跳转信息;

第一获取子模块403a2,用于若判断结果为所述资源文件中包含所述资源文件的跳转信息,则从所述资源文件中获取所述资源文件的跳转信息;

第二获取子模块403a3,用于若判断结果为所述资源文件中不包含所述资源文件的跳转信息,则查询引用所述资源文件的目标源文件,根据所述目标源文件的继承关系,确定所述目标源文件的类名,根据所述目标源文件的类名确定所述资源文件的跳转信息。

可选的,所述信息生成模块403,还包括:

第一类名确定子模块403e,用于在所述路径生成子模块根据所述上一级设置项的路径生成所述资源文件中的各个设置项的路径之前,确定引用所述资源文件的目标源文件的类名;

第一资源确定子模块403f,用于当所述已确定资源中包含所述目标源文件的类名时,将所述已确定资源中包含所述目标源文件的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述信息生成模块403还包括:

第一类名查询子模块403g,用于当所述已确定资源中不包含所述目标源文件的类名时,查询所述目标源文件的子类的类名;

第二资源确定子模块403h,用于当所述已确定资源中包含所述子类的类名时,将所述已确定资源中包含所述子类的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述信息生成模块403还包括:

第二类名确定子模块403i,用于当所述已确定资源中不包含所述目标源文件的类名,且所述目标源文件的类名为Activity类的类名时,分析所述目标源文件的代码,确定所述目标源文件的新的类名,所述新的类名是所述Activity类下引用所述资源文件的Fragment类的类名;

第三资源确定子模块403j,用于当所述已确定资源中包含所述新的类名时,将所述已确定资源中包含所述新的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述信息生成模块403还包括:

第二类名查询子模块403k,用于当所述已确定资源中不包含所述目标源文件的类名,且所述目标源文件的类名为intent类的类名时,查询所述intent类对应的源文件的类名;

第四资源确定子模块403m,用于当所述已确定资源中包含所述intent类对应的源文件的类名时,将所述已确定资源中包含所述intent类对应的源文件的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述装置还包括:

配置获取模块405,用于获取所述设置功能的各级页面中的每个设置项对应的配置信息,所述配置信息用于指示对应的设置项在指定机型和/或指定场景中是否显示;

参数设置模块406,用于根据所述配置信息,在所述设置项的搜索资源中设置对应的配置参数。

综上所述,本公开实施例所示的装置,获取操作系统中的设置功能的第一级页面的项目信息,该项目信息包含对应页面中的各个设置项的搜索资源,该搜索资源至少包括跳转信息和路径,确定操作系统中的各个资源文件,根据该第一级页面中的各个设置项的跳转信息和路径,以及该各个资源文件,逐级确定该设置功能中各级页面的项目信息,根据该各级页面的项目信息生成该设置功能的搜索文件,基本公开所示的方案,能够通过设置功能中的第一级页面的搜索资源,结合操作系统的各个资源文件自动生成设置功能中的各级页面中的各个设置项的搜索资源,不需要开发人员人工整理所有的设置项的搜索资源,达到简化人工操作步骤,减少人工开发时间,提高了软件开发效率的效果。

本公开实施例还提供一种搜索文件生成装置,所述装置包括:处理器;用于存储所述处理器的可执行指令的存储器;其中,所述处理器用于执行存储器中存储的可执行指令,以实现上述图1或图2任一所示的方法的全部或者部分步骤,即所述处理器被配置为:

获取操作系统中的设置功能的第一级页面的项目信息,所述项目信息包含对应页面中的各个设置项的搜索资源,所述搜索资源至少包括跳转信息和路径,所述跳转信息中包含对应的源文件的类名;

确定操作系统中的各个资源文件;

根据所述第一级页面中的各个设置项的跳转信息和路径,以及所述各个资源文件,逐级确定所述设置功能中各级页面的项目信息;

根据所述各级页面的项目信息生成所述设置功能的搜索文件。

可选的,所述根据所述第一级页面中的各个设置项的跳转信息和路径,以及所述各个资源文件,逐级确定所述设置功能中各级页面的项目信息,包括:

以所述第一级页面中的各个设置项的搜索资源为初始的已确定资源,循环遍历所述各个资源文件中的每一个资源文件,获取所述资源文件的跳转信息;

当所述已确定资源中包含所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源时,根据所述上一级设置项的路径生成所述资源文件中的各个设置项的路径;

根据所述资源文件中的各个设置项的路径以及所述资源文件的跳转信息,生成所述资源文件中的各个设置项的搜索资源;

将所述资源文件中的各个设置项的搜索资源添加入所述已确定资源。

可选的,所述获取所述资源文件的跳转信息,包括:

判断所述资源文件中是否包含所述资源文件的跳转信息;

若判断结果为所述资源文件中包含所述资源文件的跳转信息,则从所述资源文件中获取所述资源文件的跳转信息;

若判断结果为所述资源文件中不包含所述资源文件的跳转信息,则查询引用所述资源文件的目标源文件,根据所述目标源文件的继承关系,确定所述目标源文件的类名,根据所述目标源文件的类名确定所述资源文件的跳转信息。

可选的,所述根据所述上一级设置项的路径生成所述资源文件中的各个设置项的路径之前,还包括:

确定引用所述资源文件的目标源文件的类名;

当所述已确定资源中包含所述目标源文件的类名时,将所述已确定资源中包含所述目标源文件的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述处理器还被配置为:

当所述已确定资源中不包含所述目标源文件的类名时,查询所述目标源文件的子类的类名;

当所述已确定资源中包含所述子类的类名时,将所述已确定资源中包含所述子类的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述处理器还被配置为:

当所述已确定资源中不包含所述目标源文件的类名,且所述目标源文件的类名为Activity类的类名时,分析所述目标源文件的代码,确定所述目标源文件的新的类名,所述新的类名是所述Activity类下引用所述资源文件的Fragment类的类名;

当所述已确定资源中包含所述新的类名时,将所述已确定资源中包含所述新的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

可选的,所述处理器还被配置为:

当所述已确定资源中不包含所述目标源文件的类名,且所述目标源文件的类名为intent类的类名时,查询所述intent类对应的源文件的类名;

当所述已确定资源中包含所述intent类对应的源文件的类名时,将所述已确定资源中包含所述intent类对应的源文件的类名的搜索资源,确定为所述资源文件中的各个设置项对应在所述设置功能中的上一级设置项的搜索资源。

本公开实施例还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由数据库管理设备的处理器执行以完成本公开各个实施例所示的搜索文件生成方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

图6是根据一示例性实施例示出的一种电子设备的结构示意图。该电子设备可以实现为本公开上述方案中运行有软件开发工具的设备。所述电子设备600包括中央处理单元(CPU)601、包括随机存取存储器(RAM)602和只读存储器(ROM)603的系统存储器604,以及连接系统存储器604和中央处理单元601的系统总线605。所述电子设备600还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)606,和用于存储操作系统613、应用程序614和其他程序模块615的大容量存储设备607。

所述基本输入/输出系统606包括有用于显示信息的显示器608和用于用户输入信息的诸如鼠标、键盘之类的输入设备609。其中所述显示器608和输入设备609都通过连接到系统总线605的输入输出控制器610连接到中央处理单元601。所述基本输入/输出系统606还可以包括输入输出控制器610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器610还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备607通过连接到系统总线605的大容量存储控制器(未示出)连接到中央处理单元601。所述大容量存储设备607及其相关联的计算机可读介质为电子设备600提供非易失性存储。也就是说,所述大容量存储设备607可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。

不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器604和大容量存储设备607可以统称为存储器。

根据本公开的各种实施例,所述电子设备600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即电子设备600可以通过连接在所述系统总线605上的网络接口单元611连接到网络612,或者说,也可以使用网络接口单元611来连接到其他类型的网络或远程计算机系统(未示出)。

所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器601通过执行该一个或一个以上程序来实现图1或图2所示的搜索文件生成方法。

本领域技术人员在考虑说明书及实践这里公开的方案后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1