小程序转换的评估方法、装置、设备及存储介质与流程

专利2023-04-07  17



1.本说明书涉及计算机技术领域,尤其涉及小程序转换的评估方法、装置、设备及存储介质。


背景技术:

2.随着小程序技术的快速发展,越来越多平台都推出了自己的小程序框架规范。因此,相同的服务想要在不同平台中供用户使用,开发者需要针对不同平台各自开发一套小程序的源码。基于此,一些小程序的转换工具应运而生,能够基于一个平台的小程序源码转换为另一个平台的小程序源码。
3.不同平台的小程序框架规范不同,转换工具转换后的小程序源码仍然需要开发者进行修改调整。基于此,提供小程序的评估结果以提升开发者的开发效率,是亟待解决的技术问题。


技术实现要素:

4.为克服相关技术中存在的问题,本说明书提供了小程序转换的评估方法、装置、设备及计算机可读存储介质。
5.根据本说明书实施例的第一方面,提供一种小程序转换的评估方法,包括:
6.接收对第一小程序转换为第二小程序的转换评估请求;
7.获取所述第一小程序的第一源码文件以及所述第一源码文件的第一关键信息,根据所述第一关键信息和第一预设平台能力数据确定第一评估结果;其中,所述第一源码文件包括所述第一小程序使用第一小程序平台提供的能力信息,所述第一预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第一能力差异信息;和/或,
8.获取所述第二小程序运行时的第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果;所述第二预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第二能力差异信息。
9.根据本说明书实施例的第二方面,提供一种小程序转换的评估方法,所述方法包括:
10.获取由第一小程序的第一源码文件转换得到的第二源码文件;所述第一源码文件包括:所述第一小程序使用第一小程序平台提供的能力信息;
11.基于所述第二源码文件运行第二小程序,由所述第二小程序在运行时获取关键信息后,根据所述关键信息和预设平台能力数据确定评估结果,所述预设平台能力数据包括:所述第一小程序平台与第二小程序平台之间的能力差异信息。
12.根据本说明书实施例的第三方面,提供一种小程序转换的评估装置,所述装置包括:
13.请求模块,用于:接收对第一小程序转换为第二小程序的转换评估请求;
14.第一评估模块,用于:获取所述第一小程序的第一源码文件以及所述第一源码文
件的第一关键信息,根据所述第一关键信息和第一预设平台能力数据确定第一评估结果;其中,所述第一源码文件包括所述第一小程序使用第一小程序平台提供的能力信息,所述第一预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第一能力差异信息;和/或,
15.第二评估模块,用于:获取所述第二小程序运行时的第二关键信息,根据所述第二关键信息和所述预设平台能力数据确定第二评估结果;所述第二预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第二能力差异信息。
16.根据本说明书实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述第一方面所述方法实施例的步骤。
17.根据本说明书实施例的第五方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现前述第一方面所述方法实施例的步骤。
18.本说明书的实施例提供的技术方案可以包括以下有益效果:
19.本说明书实施例中,当接收到转换评估请求,可以获取第一小程序的第一源码文件,由于第一源码文件包括有第一小程序使用第一小程序平台提供的能力信息,并且第一预设平台能力数据包括有第一小程序平台与第二小程序平台之间的第一能力差异信息;因此,基于所述第一源码文件获取第一关键信息后可以与第一预设平台能力数据进行比对,从而从源码的角度确定转换的评估结果。本实施例中还可以在第二小程序在运行时获取第二关键信息,并且第二预设平台能力数据包括第一小程序平台与第二小程序平台之间的第二能力差异信息,因此可以利用所述第二预设平台能力数据确定第二评估结果并展示,因此能够在小程序的运行过程中确定转换情况。
20.通过上述任一方式,将小程序转换的评估结果并提供给用户,从而便于用户了解小程序的转换情况,了解转换程度,确定是否转换,也可以便于在转换后执行后续的修改调整,提升用户的开发效率。
21.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
22.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
23.图1a是本说明书根据一示例性实施例示出的一种小程序转换的评估方法的流程图。
24.图1b和图1c分别是本说明书根据一示例性实施例示出的一种评估结果的示意图。
25.图2是本说明书根据一示例性实施例示出的另一种小程序转换的评估方法的流程图。
26.图3是本说明书根据一示例性实施例示出的一种小程序转换的评估装置所在设备的框图。
27.图4是本说明书根据一示例性实施例示出的一种小程序转换的评估装置的框图。
具体实施方式
28.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
29.在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
30.应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
31.小程序是一种不需要下载安装即可使用的应用,其依附在宿主应用程序中。例如,基于第一平台开发的第一小程序,第一平台的第一应用程序中提供有该第一小程序的入口,使得用户可以基于第一应用程序使用第一小程序提供的服务。
32.目前,一些小程序的转换工具能够基于一个平台的小程序源码转换为另一个平台的小程序源码。作为例子,第一平台的第一小程序想要转换为第二平台的第二小程序,转换工具转换的过程,通常是解析第一小程序的第一源码,基于预设转换规则,转换为第二平台能支持的第二小程序的第二源码。其中,预设转换规则需要基于第一平台的小程序框架规范和第二平台的小程序框架规范设计。
33.不同平台的小程序的开发规范不同,例如第一平台提供有某个能力,但第二平台并未提供,因此,转换工具转换后的小程序源码仍然需要开发者进行修改调整。基于此,本说明书实施例提供了一种小程序转换的评估方案,能够评估小程序的转换结果以提供给用户,从而便于用户了解转换情况以及便于后续的修改调整,提升用户的开发效率。
34.接下来对本说明书实施例进行详细说明。
35.如图1a所示,图1a是本说明书根据一示例性实施例示出的一种小程序转换的评估方法的流程图,包括以下步骤:
36.在步骤102、接收对第一小程序转换为第二小程序的转换评估请求。
37.在步骤104、获取所述第一小程序的第一源码文件以及所述第一源码文件的第一关键信息,根据所述第一关键信息和第一预设平台能力数据确定第一评估结果。
38.其中,所述第一源码文件包括所述第一小程序使用第一小程序平台提供的能力信息,所述第一预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第一能力差异信息。
39.在步骤106、获取所述第二小程序运行时的第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果。
40.其中,所述第二预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第二能力差异信息。
41.本说明书实施例中,可以获取第一小程序的第一源码文件,由于第一源码文件包括有第一小程序使用第一小程序平台提供的能力信息,并且第一预设平台能力数据包括有第一小程序平台与第二小程序平台之间的第一能力差异信息;因此,基于所述第一源码文件获取第一关键信息后可以与第一预设平台能力数据进行比对,从而从源码的角度确定转换的评估结果。本实施例中还可以在第二小程序在运行时获取第二关键信息,并且第二预设平台能力数据包括第一小程序平台与第二小程序平台之间的第二能力差异信息,因此可以利用所述第二预设平台能力数据确定第二评估结果,因此能够在小程序的运行过程中确定转换情况。
42.通过上述任一方式,将小程序的转换结果提供给用户,从而便于用户了解小程序的转换情况,了解转换程度,确定是否转换,也可以便于在转换后执行后续的修改调整,提升用户的开发效率。
43.实际应用中,上述步骤104和106可以分别单独执行,也可以两者都执行,并且执行顺序可以任意调整,本实施例对此不进行限定。
44.作为例子,可以采用任意应用程序实现本实施例的评估方案;也可以是服务端。示例性的,本实施例方案可以由小程序平台提供的可运行小程序的客户端执行,或者,还可以由小程序的转换程序执行,即本实施例方案可以是在已有的转换程序的基础上实现本实施例的评估功能。该转换程序可以实现跨平台的小程序转换,即至少两个平台之间的小程序转换。例如,将a平台的小程序转换为b或c等一个或多个其他平台的小程序。作为一个示例,转换程序的转换原理可以是:
45.转换前,对小程序做预处理,包括判断小程序的平台、使用者配置的开发环境、判断转换的完整小程序还是组件维度等。
46.转换中,可以对模版,样式,json(javascript object notation,js对象简谱),js(javascript文件的扩展名)等文件进行处理,以达到跨平台开发的目的。
47.转换后,在转换后的文件中生成目标文件,该文件中包含对api、组件、生命周期的差异支持和抹平。
48.本实施例方案中,步骤104是针对第一小程序的源码进行转换评估,可以理解为静态评估。步骤106可以理解为动态的运行期评估。静态评估是通过分析小程序的源码,动态评估是在转换后的小程序的运行期进行动态检测。两种评估方式都需要将收集到的信息和预设的平台能力数据进行比对。
49.小程序平台通常提供有开发框架、组件及api(application programming interface,应用程序编程接口),帮助开发者开发小程序。不同的小程序平台所提供的能力不同。
50.其中,第一预设平台能力数据包括:第一小程序平台与第二小程序平台之间的第一能力差异信息。作为例子,该数据可以是文档等格式,本实施例对此不进行限定。
51.示例性的,该第一预设平台能力数据可以包括如下任一能力差异信息:框架能力差异信息、组件信息或接口差异信息。由上述实施例可见,通过对小程序平台能力的分析,本实施例中设计了第一预设平台能力数据包括上述任一能力差异信息,从而可以确定出详细准确的评估结果便于用户了解小程序的转换情况。其中,
52.(1)框架能力,可以包括小程序配置和框架接口;
53.其中,小程序配置包括全局配置信息和页面配置信息;
54.框架接口包括小程序app、页面和自定义组件。
55.基于此,所述框架能力差异信息可以包括:小程序配置能力差异信息和/或框架接口差异信息,第一关键信息可以包括从第一源码文件中提取出框架能力的关键信息。
56.(2)组件,可以包括平台的所有基础组件,例如视图容器、基础内容、表单组件、导航、媒体组件、地图、画布、组件开发能力或交互等组件;基于此,所述组件差异信息包括上述任一类别的组件的差异信息,第一关键信息可以包括从第一源码文件中提取出组件的关键信息。
57.(3)api,可以包括平台的所有api信息,api的类别可以包括:基础、画布、设备相关、第三方平台、文件系统、位置、媒体、网络、接口开发能力、路由、转发、数据缓存、模板、界面或广告等类别。基于此,所述接口差异信息包括上述任一类别的接口的差异信息,第一关键信息可以包括从第一源码文件中提取出接口的关键信息。
58.由上述实施例可见,通过对小程序平台能力的分析,本实施例中分别对框架能力差异信息、组件差异信息和接口差异信息进行了设计,从而可以确定出详细准确的评估结果便于用户了解小程序的转换情况。
59.示例性的,各个小程序平台的能力可能会有变动,本实施例可以根据小程序平台的访问地址,监测小程序平台是否发布能力变更信息,在小程序平台的能力发生变更后,更新该小程序平台的能力数据和/或转换程序中转换处理的方式。
60.对于步骤102,以本实施例由转换程序实现为例,转换程序可以提供一请求入口,用户在使用转换程序时,可以通过该入口发起转换评估请求,例如发起对静态评估请求,转换程序可以获取用户提供的第一小程序的第一源码文件,即基于第一小程序平台的规范开发的小程序。以小程序使用java(一种面向对象的编程语言)语言开发为例,小程序的源码文件即jar包;其中,源码文件中包括多个文件,并按照一定的结构存储。本实施例可以从源码文件中读取每个文件的文件名和文件类型后缀,以获取到所需的各个文件。
61.示例性的,第一源码文件可以包括如下至少一种:
62.描述页面样式的代码文件,例如代码类似css(cascading style sheets,层叠样式表)语言的wxss文件等;
63.描述页面的脚本逻辑的代码文件,也称脚本文件,用于处理页面和用户的交互,例如js文件;
64.描述页面配置的代码文件,也称配置文件,例如json文件,文件内均为json格式的对象;其包括了小程序所使用到的平台配置能力的代码;
65.描述超级文本标记内容的代码文件,也称模板文件,例如代码类似html(hypertext markup language,超文本标记语言)语言的wxml文件,其包括了小程序所使用到的平台组件能力的代码。
66.示例性的,第一源码文件是基于第一小程序的开发语言开发的,为了便于从第一源码文件中提取关键信息,从所述第一源码文件中提取第一关键信息的过程,可以采用抽象语法树(abstract syntax tree,ast)进行代码解析。抽象语法树是源代码语法结构的一种抽象表示,其以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构,通过分析语法树上的每个节点的信息后提取第一关键信息。例如,转换工具对
第一源码文件进行编译,获取到静态编译信息作为所述第一关键信息。
67.其中,第一源码文件包括所述第一小程序使用第一小程序平台提供的能力信息,所提取的第一关键信息可以包括表征第一源码文件中所使用的所述能力信息中的关键信息,例如可以包括如下任一:框架能力信息、组件信息或接口信息等等,例如,所调用的方法名称、组件名称以及组件的属性信息或接口名称等等。
68.示例性的,如前所述,第一源码文件中包括多种类型的文件,实际应用中,可以是对每一份文件依次提取第一关键信息,也可以是将同一类文件合并后,分别对相同类别的文件提取第一关键信息等多种方式。还可以结合第一平台的语法规范进行提取,以一小程序平台为例,提取的第一关键信息可以包括平台提供的api信息,即文件中以wx.开头的部分;提取的第一关键信息还可以包括平台提供的组件信息,即.wxml文件中的所有表示组件的标签和属性等;提取的第一关键信息还可以包括平台提供的框架能力信息,即.json文件中的配置信息等。
69.示例性的,所述第一评估结果,可以包括如下任一:所述第一源码文件中被转换的文件数量、完全转换的文件信息、部分转换的文件信息或未转换的文件信息;所述文件信息包括如下任一:文件路径、文件类型或文件名称。实际应用中上述第一评估结果所包括的信息可以根据需要灵活配置,本实施例对此不进行限定。
70.如图1b所示,是本说明书根据一示例性实施例示出的静态评估结果示意图。其中,该图1b示出的评估结果包括有转换概览和转换详情;转换概览中示出了该第一源码文件中包括的文件总数、转换工具需要转换的文件数、页面数量、组件数量、评估耗时;并且,给出了完全转换的文件数,以及部分转换的文件数、以及未转换的数量等(即图中示出的不支持转换的文件数量)。
71.其中,完全转换表示文件整份都可以转换;部分转换表示文件只有部分被转换,例如,组件a有三个属性,其中只有两个属性能直接或者通过适配的形式转换为第二小程序的源码,有一个属性无法转换,因此组件a所在的文件即为部分转换。
72.对于部分转换或不支持的情况,在转换详情中还给出了具体的文件位置等信息。例如,本实施例的部分转换中涉及到11份文件,转换详情中根据第一源码文件中所包括的文件类型,分别对脚本文件、样式文件、json文件、其他文件、开放能力进行区分,并分别给出了部分转换的文件所属的类型为脚本文件。在脚本文件标签下,还给出了每份文件的文件路径和评估结果等。实际应用中,第一评估结果的展示根据需要可以灵活配置,本实施例对此不进行限定。
73.上述步骤104的实施例中,第一预设平台能力数据可以存储于执行本实施例方案的应用程序中,也可以是存储于服务端中,由应用程序从服务端处获取后确定第一评估结果,本实施例对此不进行限定。由上述实施例可见,第一预设平台能力数据可以包括第一小程序平台与第二小程序平台两者之间在框架能力、组件和/或接口等多方面的差异信息,从而可以对第一源码文件中,从源代码的角度确定静态的评估结果,例如,在对第一源码文件中各份文件使用到的第一小程序平台的能力信息提取第一关键信息时,可以提取框架能力差异信息、组件差异信息和/或接口差异信息,使得确定出的第一评估结果可以包括第一源码文件中各份文件在框架能力、组件和/或接口的转换情况,从源代码的角度提供全面的评估结果。
74.对于步骤106的执行,是针对转换后得到的第二小程序在运行时的动态评估。实际应用中,发明人发现,对源码的静态评估收集到的信息有限,有些信息可能不够全面,特别是平台提供的接口,因为接口的调用不一定需要写入在源码中。
75.例如,小程序平台提供有api,在第一源码文件中,某个文件中的某段代码采用变量调用某个api,通过变量的名称无法确定其所调用的api的名称,需要在小程序运行时,才可确认该变量所调用的api的名称。
76.作为例子,以小程序页面中的按钮为例,假设按钮的点击事件可以触发预览一张图片,也可以触发编辑一张图片,对应的api分别是wx.previewimage和wx.editimage;
77.上述功能存在以下三种实现情况:
78.1.按钮的点击事件,在第一源码文件中可以直接写有调用这两个接口的名称wx.previewimage/wx.editimage的代码。这种实现方式在源代码里写有两个api的名称,因此采用步骤104时可以从中识别到第一关键信息包括这两个api的信息,确定第一评估结果时能够确定出这两个api是否能够被转换。
79.2.按钮的行为是请求了第一小程序平台的接口后,从平台返回的响应数据里带回来的。比如接口的一个叫action的字段里返回了“previewimage”或“editimage”。则实现时,源码中会写有调用“wx[data.action]()”的代码,其中data即平台返回的数据,从源码中无法确定代码“data.action”的语义,也即是步骤104无法发现这两个api会被调用,通过源码分析会出现遗漏。只有在小程序执行时,接收平台返回的“previewimage”后,再执行代码“wx[data.action]()”,将“previewimage”赋值给“data.action”后,确定需要调用接口wx.previewimage。
[0080]
3.按钮的点击行为被设计在变量里;例如,代码“var actionmethod=

previewimage
’”
,其表示调用了名为“wx.[actionmethod]()”的api,这种情况下,原有的接口名称“wx.previewimage”中的“previewimage”被作为变量,因此步骤104也难以识别到该api会被调用,通过源码分析会出现遗漏。
[0081]
由此可知,上述三种情况中,源码的静态识别难以发现两种情况。本实施例采用动态评估来实现后两种情况的识别。基于此,本实施例设计了在运行时进行动态评估,可以向用户提供更全面准确的评估结果。
[0082]
作为例子,可以是转换工具提供一请求入口,用户在使用转换工具时,可以通过该入口发起转换评估请求,例如发起对运行期期的评估请求,转换工具可以获取到第一小程序的第一源码文件后,将其转换为第二小程序的第二源码文件。上述后两种情况,在第二小程序实际运行时均可以被发现。
[0083]
例如前述的第二种情况,假设第一小程序的代码“wx.[data.action]()”被转换为第二小程序的代码“my.[data.action]()”;若平台返回的响应数据为“previewimage”,第二小程序在运行时,执行代码“my.[data.action]()”,将“previewimage”赋值给“data.action”后,确定需要调用接口my.previewimage;因此,步骤106在第二小程序的运行期,可以确定要被调用的接口为my.previewimage,此时,通过查询第二预设平台能力数据中的接口信息,即可确定接口“my.previewimage”在第二小程序平台是否有对应的接口能力。若有,说明可以成功转换,若无,说明第二小程序平台无法支持,可以生成包括有该接口的第二评估结果。
[0084]
在一些例子中,所述获取所述第二小程序运行时的第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果,包括:将所述第一源码文件转换为第二小程序的第二源码文件;其中,所述第二源码文件嵌入有预设的检测代码;在所述第二小程序基于所述第二源码文件运行时,利用所述检测代码获取第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果。
[0085]
上述步骤106的实施例中,与步骤104实施例同理,第二预设平台能力数据可以存储于执行本实施例方案的应用程序中,也可以是存储于服务端中,由应用程序从服务端处获取后确定第二评估结果,本实施例对此不进行限定。动态评估的过程中,是针对静态评估结果中可能出现的接口漏检,从第二小程序运行过程代码执行时所调用的接口进行动态评估。可选的,步骤106的实施例中所使用的第二预设平台能力数据可以与步骤104实施例中所使用的第一预设平台能力数据不同,可以只包括第一小程序平台与第二小程序平台之间的接口差异信息。可选的,也可以与步骤104实施例所使用的数据相同,即第一预设平台能力数据与第二预设平台能力数据相同,例如,应用程序或服务端存储一份预设平台能力数据,在执行步骤104时可以获取整份数据作为第一预设平台能力数据确定第一评估结果;在执行步骤106时,可以从整份数据中获取上述的接口差异信息作为第二预设平台能力数据确定第二评估结果。
[0086]
示例性的,执行步骤104和步骤106中所使用到的预设平台能力数据中的接口差异信息可以是相同的。如前述步骤104实施例,第一源码文件中的第一关键信息可以包括从源码中提取出的接口的关键信息,步骤104所使用到的接口差异信息,是针对第一源码文件,从源代码的角度提取出代码中接口的关键信息,以对源码进行静态评估。而步骤106中,第二小程序在运行过程中也可能调用到一些接口,但这些接口的名称等信息并未写入在源码中,因此静态评估时无法提取到;而通过步骤106的执行,通过接口调用的监听,实现在第二小程序运行中动态评估调用的接口的转换情况,使得评估结果更加全面准确。
[0087]
示例性的,步骤106在执行时,可以由转换工具对第一小程序的第一源码文件转换为第二源码文件时,嵌入检测代码。嵌入检测代码后的第二源码文件,可以在第二小程序平台中运行。例如,可以在对应第二小程序平台的客户端中运行。用户可以运行第二小程序的各个页面,第二小程序基于所述第二源码文件运行时,由所述检测代码提取第二关键信息后,基于第二预设平台能力数据确定所述第一小程序转换为第二小程序的第二评估结果,可选的,还可以将第二评估结果进行展示。
[0088]
由上述实施例可见,本实施例动态评估的过程的实现方式,采用在第二源码文件嵌入预设的检测代码的方式实现,该方式在第二源码文件的转换过程中通过代码嵌入实现,实现过程快速,且可以在第二小程序运行的过程中进行检测,可以保证动态评估的准确性。
[0089]
作为例子,通常,小程序包括多个页面,小程序的源码文件中包括有一份入口文件,例如app.js文件,小程序需要在app.js文件中调用app方法注册小程序实例,以绑定生命周期回调函数、错误监听和页面不存在监听函数等。整个小程序只有一个app(小程序)实例,是小程序中全部页面共享的;可以通过getapp方法获取到全局唯一的app实例,获取app上的数据或调用开发者注册在app上的函数。基于此,本实施例可以是在第二源码文件中的入口文件中嵌入该检测代码,例如app.js文件,例如,检测代码嵌入至该入口文件的头部,
即可实现对所有小程序页面的接口调用的监听。
[0090]
由上述实施例可见,本实施例嵌入检测代码的位置采用第二源码文件中的入口文件,由于小程序的所有页面运行时都需要涉及到该入口文件,因此本实施例采用在入口文件中嵌入检测代码,即可实现小程序所有页面运行时的检测,其实现过程快速,不需要对第二源码文件嵌入过多的代码。
[0091]
作为例子,所述检测代码包括:用于监听目标全局对象被调用时的调用信息的检测代码,所述目标全局对象包括:用于调用第二小程序平台提供的接口的全局对象。
[0092]
作为例子,该检测代码可以监听用于调用第二小程序平台提供的接口的全局对象,从而提取第二关键信息。例如,第二小程序平台中,所有api的接口名称均采用“my.”为前缀;而源码中定义有用于调用api的全局对象,即“my.”对象,本实施例通过监听该“my.”对象,当小程序执行时,任意以“my.”为前缀名称的对象,均会被监听到。
[0093]
作为例子,监听的过程也可以通过平台提供的监听能力实现。例如,小程序平台提供有一用于监听全局对象的api,通过调用该用于监听全局对象的api,即可实现上述监听过程;例如,object.defineproperty等;可以根据实际应用时所使用的小程序平台提供的接口能力确定具体的api。示例性的,第二关键信息可以包括被调用接口的接口信息,通过第二预设平台能力数据中第一小程序平台与第二小程序平台之间的接口差异信息进行比对,即可确定被调用接口的转换情况,例如完全转换或未转换等评估结果。
[0094]
由上述实施例可见,本实施例中检测代码设计为监听目标全局对象被调用时的调用信息,该目标全局对象包括:用于调用所述第二小程序平台提供的接口的全局对象,从而第二小程序在运行时,只要调用平台的接口,即可被检测到并获取第二关键信息,因此保障了动态评估的全面性,不会出现接口调用的漏检。
[0095]
作为例子,第二评估结果包括:未转换的接口信息:接口名称、接口类型、接口所属文件的文件信息或接口的属性;所述文件信息包括如下任一:文件路径、文件类型或文件名称。其中,未转换的接口可以包括未完全转换的接口,例如部分接口属性未转换的接口,或者所有属性未能转换的接口等。实际应用中上述第二评估结果所包括的信息可以根据需要灵活配置,本实施例对此不进行限定。本实施例中,通过设计上述接口信息和文件信息,可以向用户展示详细的第二评估结果,便于用户了解小程序的转换情况。其中,本实施例可以在运行期对所有接口的调用进行检测,并给出包括未转换的接口信息的第二评估结果;如前述步骤静态评估的实施例,其从源码的角度检测未转换的接口信息,第一评估结果中可以包括未转换的接口信息,因此,第二评估结果与第一评估结果在接口信息方面可以有重合。
[0096]
如图1c所示,是本说明书根据一示例性实施例示出的运行期的动态监测的评估结果示意图。本实施例中是第二小程序在运行时,通过注入的检测代码,能够在各个页面的运行收集其调用的api,并评估该api是否能够被转换,并给出评估结果。第一小程序平台的某个api,在第二小程序平台不支持,即转换工具无法完全转换。利用转换工具转换得到的第二小程序的源码中,该api的信息被保留。由于第二小程序不支持,当第二小程序运行时,页面打开并运行时会调用该api时,检测代码能够识别到该api被调用,并通过前述的平台能力文档进行比对,确定出该api属于第二小程序平台不支持的api,即无法完全转换的api,因此第二小程序的页面可以展示该评估结果。例如,图1c中左侧示出了小程序页面中的一“温馨提示”的弹窗,其向用户展示了第二小程序运行后确定出了第二评估结果,提示用户是否查看。图中右侧的页面示出了部分第二评估结果,其中包括了5条未转换接口的接口信息,例如map/onupdated的信息,示出了接口名称及类型等信息,实际应用中根据需要可以灵活配置。
[0097]
上述图1b和图1c的实施例分别示出了第一评估结果和第二评估结果的示意图,如前述实施例所言,步骤104和106可以分别单独执行,也可以两者按任意顺序执行;在两者都执行的情况下,第一评估结果和第二评估结果可以单独确定,在另一些例子中,本实施例方案还可以将第一评估结果和第二评估结果进行融合,可选的,还可以将融合的结果进行展示;融合的处理根据需要可以有多种实现方式,例如将第一评估结果和第二评估结果通过同一页面进行展示;或者,将第一评估结果的信息和第二评估结果的信息进行融合,例如,将相同类型的信息进行融合,例如进行统计等。示例性的,第一评估结果包括未转换的文件信息,而第二评估结果中也包括未转换的接口所属文件的文件信息,可以将第二评估结果中未转换的接口所属文件的文件信息,融合至第一评估结果中的未转换的文件信息中。或者,还可以获取第一评估结果和第二评估结果中相同的部分后进行融合,例如前述的第二评估结果与第一评估结果包括有相同的未转换的接口信息,可以只保留一份。从而,通过融合处理可以向用户提供更易读的评估结果,方便用户了解转换程度。
[0098]
如图2所示,是本说明书根据一示例性实施例示出的一种小程序转换的评估方法,包括:
[0099]
在步骤202中,获取由第一小程序的第一源码文件转换得到的第二源码文件;所述第一源码文件包括:所述第一小程序使用第一小程序平台提供的能力信息;
[0100]
在步骤204中,基于所述第二源码文件运行第二小程序,由所述第二小程序在运行时获取关键信息后,根据所述关键信息和预设平台能力数据确定评估结果,所述预设平台能力数据包括:所述第一小程序平台与第二小程序平台之间的能力差异信息。
[0101]
本实施例方案的执行主体可以是第二小程序平台的客户端,小程序是在客户端中运行的,本实施例中,用户可以将第二源码文件提交至第二小程序平台后,通过第二小程序平台提供的第二小程序的访问地址,在第二小程序平台的客户端通过该访问地址访问第二小程序。由于第二小程序在运行时可以获取关键信息,根据所述关键信息和预设平台能力数据确定评估结果,其中,预设平台能力数据包括:所述第一小程序平台与第二小程序平台之间的能力差异信息,因此能够在小程序的运行过程中确定转换情况。可以将小程序转换的评估结果并提供给用户,从而便于用户了解小程序的转换情况,了解转换程度,确定是否转换,也可以便于在转换后执行后续的修改调整,提升用户的开发效率。具体的实施方式可以参考前述实施例的描述,本实施例对此不进行限定。
[0102]
在一些例子中,所述基于所述第二源码文件运行第二小程序,由所述第二小程序在运行时获取关键信息后,利用预设平台能力数据确定评估结果:
[0103]
将所述第一源码文件转换为第二小程序的第二源码文件;其中,所述第二源码文件嵌入有预设的检测代码;
[0104]
在所述第二小程序基于所述第二源码文件运行时,利用所述检测代码提取第二关键信息,根据所述第二关键信息和所述预设平台能力数据确定第二评估结果。
[0105]
在一些例子中,所述第二源码文件包括入口文件,所述第二小程序包括至少一个
页面;所述第二源码文件嵌入有预设的检测代码,包括:
[0106]
所述入口文件中嵌入有所述检测代码,以使第二小程序的每个页面在运行时由所述检测代码获取所述第二关键信息。
[0107]
在一些例子中,所述检测代码包括:用于监听目标全局对象被调用时的调用信息的检测代码,所述目标全局对象包括:用于调用第二小程序平台提供的接口的全局对象。
[0108]
在一些例子中,所述评估结果包括:未转换的接口信息,所述接口信息包括如下任一:接口名称、接口类型、接口所属文件的文件信息或接口的属性;所述文件信息包括如下任一:文件路径、文件类型或文件名称。
[0109]
在一些例子中,所述第一小程序平台与第二小程序平台之间的能力差异信息,包括接口差异信息。
[0110]
在一些例子中,所述接口差异信息包括如下任一类别的接口的差异信息:基础、画布、设备相关、第三方平台、文件系统、位置、媒体、网络、开发能力、路由、转发、数据缓存、模板、界面或广告。
[0111]
与前述小程序转换的评估方法的实施例相对应,本说明书还提供了小程序转换的评估装置及其所应用的电子设备的实施例。
[0112]
本说明书小程序转换的评估装置的实施例可以应用在计算机设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本说明书小程序转换的评估装置所在计算机设备的一种硬件结构图,除了图3所示的处理器310、内存330、网络接口320、以及非易失性存储器340之外,实施例中小程序转换的评估装置331所在的计算机设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
[0113]
如图4所示,图4是本说明书根据一示例性实施例示出的一种小程序转换的评估装置的框图,所述装置包括:
[0114]
请求模块41,用于:接收对第一小程序转换为第二小程序的转换评估请求;
[0115]
第一评估模块42,用于:获取所述第一小程序的第一源码文件,以及所述第一源码文件的第一关键信息,根据所述第一关键信息和第一预设平台能力数据确定第一评估结果;其中,所述第一源码文件包括所述第一小程序使用第一小程序平台提供的能力信息,所述第一预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第一能力差异信息;和/或,
[0116]
第二评估模块43,用于:获取所述第二小程序运行时的第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果;所述第二预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第二能力差异信息。
[0117]
在一些例子中,所述第二评估模块43,还用于:
[0118]
将所述第一源码文件转换为第二小程序的第二源码文件;其中,所述第二源码文件嵌入有预设的检测代码;
[0119]
在所述第二小程序基于所述第二源码文件运行时,利用所述检测代码获取第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果。
[0120]
在一些例子中,所述第二评估模块43,还用于:
[0121]
所述入口文件中嵌入有所述检测代码,以使第二小程序的每个页面在运行时由所述检测代码获取所述第二关键信息。
[0122]
在一些例子中,所述检测代码包括:用于监听目标全局对象被调用时的调用信息的检测代码,所述目标全局对象包括:用于调用所述第二小程序平台提供的接口的全局对象。
[0123]
在一些例子中,所述第一评估结果,包括如下任一:所述第一源码文件中被转换的文件数量、完全转换的文件信息、部分转换的文件信息或未转换的文件信息;
[0124]
第二评估结果包括:未转换的接口信息,所述接口信息包括如下任一:接口名称、接口类型、接口所属文件的文件信息或接口的属性;所述文件信息包括如下任一:文件路径、文件类型或文件名称。
[0125]
在一些例子中,所述第一小程序平台与第二小程序平台之间的第一能力差异信息,包括如下任一:框架能力差异信息、组件差异信息或接口差异信息。
[0126]
在一些例子中,所述第一小程序平台与第二小程序平台之间的第二能力差异信息,包括接口差异信息。
[0127]
在一些例子中,所述框架能力差异信息包括:小程序配置能力差异信息和/或框架接口差异信息;
[0128]
所述组件差异信息包括如下任一类别的组件的差异信息:视图容器、基础内容、表单组件、导航、媒体组件、地图、画布、开发能力或交互;
[0129]
所述接口差异信息包括如下任一类别的接口的差异信息:基础、画布、设备相关、第三方平台、文件系统、位置、媒体、网络、开发能力、路由、转发、数据缓存、模板、界面或广告。
[0130]
上述小程序转换的评估装置中各个模块的功能和作用的实现过程具体详见上述小程序转换的评估方法中对应步骤的实现过程,在此不再赘述。
[0131]
相应的,本说明书实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现前述小程序转换的评估方法实施例的步骤。
[0132]
相应的,本说明书实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现小程序转换的评估方法实施例的步骤。
[0133]
相应的,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现小程序转换的评估方法实施例的步骤。
[0134]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0135]
应用于一个或者多个电子设备中上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以
按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0136]
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该申请的保护范围内。
[0137]
其中,“具体示例”、或“一些示例”等的描述意指结合所述实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0138]
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
[0139]
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
[0140]
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

技术特征:
1.一种小程序转换的评估方法,包括:接收对第一小程序转换为第二小程序的转换评估请求;获取所述第一小程序的第一源码文件以及所述第一源码文件的第一关键信息,根据所述第一关键信息和第一预设平台能力数据确定第一评估结果;其中,所述第一源码文件包括所述第一小程序使用第一小程序平台提供的能力信息,所述第一预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第一能力差异信息;和/或,获取所述第二小程序运行时的第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果;所述第二预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第二能力差异信息。2.根据权利要求1所述的方法,所述获取所述第二小程序运行时的第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果,包括:将所述第一源码文件转换为第二小程序的第二源码文件;其中,所述第二源码文件嵌入有预设的检测代码;在所述第二小程序基于所述第二源码文件运行时,利用所述检测代码获取第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果。3.根据权利要求2所述的方法,所述第二源码文件包括入口文件,所述第二小程序包括至少一个页面;所述第二源码文件嵌入有预设的检测代码,包括:所述入口文件中嵌入有所述检测代码,以使第二小程序的每个页面在运行时由所述检测代码获取所述第二关键信息。4.根据权利要求2或3所述的方法,所述检测代码包括:用于监听目标全局对象被调用时的调用信息的检测代码,所述目标全局对象包括:用于调用所述第二小程序平台提供的接口的全局对象。5.根据权利要求1所述的方法,所述第一评估结果,包括如下任一:所述第一源码文件中被转换的文件数量、完全转换的文件信息、部分转换的文件信息或未转换的文件信息;第二评估结果包括:未转换的接口信息,所述接口信息包括如下任一:接口名称、接口类型、接口所属文件的文件信息或接口的属性;所述文件信息包括如下任一:文件路径、文件类型或文件名称。6.根据权利要求1所述的方法,所述第一小程序平台与第二小程序平台之间的第一能力差异信息,包括如下任一:框架能力差异信息、组件差异信息或接口差异信息;所述第一小程序平台与第二小程序平台之间的第二能力差异信息,包括接口差异信息。7.根据权利要求6所述的方法,所述框架能力差异信息包括:小程序配置能力差异信息和/或框架接口差异信息;所述组件差异信息包括如下任一类别的组件的差异信息:视图容器、基础内容、表单组件、导航、媒体组件、地图、画布、组件开发能力或交互;所述接口差异信息包括如下任一类别的接口的差异信息:基础、画布、设备相关、第三方平台、文件系统、位置、媒体、网络、接口开发能力、路由、转发、数据缓存、模板、界面或广告。8.一种小程序转换的评估方法,所述方法包括:
获取由第一小程序的第一源码文件转换得到的第二源码文件;所述第一源码文件包括:所述第一小程序使用第一小程序平台提供的能力信息;基于所述第二源码文件运行第二小程序,由所述第二小程序在运行时获取关键信息后,根据所述关键信息和预设平台能力数据确定评估结果,所述预设平台能力数据包括:所述第一小程序平台与第二小程序平台之间的能力差异信息。9.一种小程序转换的评估装置,所述装置包括:请求模块,用于:接收对第一小程序转换为第二小程序的转换评估请求;第一评估模块,用于:获取所述第一小程序的第一源码文件以及所述第一源码文件的第一关键信息,根据所述第一关键信息和第一预设平台能力数据确定第一评估结果;其中,所述第一源码文件包括所述第一小程序使用第一小程序平台提供的能力信息,所述第一预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第一能力差异信息;和/或,第二评估模块,用于:获取所述第二小程序运行时的第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果;所述第二预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第二能力差异信息。10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至8任一所述方法的步骤。11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现权利要求1至8任一所述方法的步骤。

技术总结
本说明书提供一种小程序转换的评估方法、装置、设备及存储介质,该方法包括:接收对第一小程序转换为第二小程序的转换评估请求;获取所述第一小程序的第一源码文件以及所述第一源码文件的第一关键信息,根据所述第一关键信息和第一预设平台能力数据确定第一评估结果;第一源码文件包括所述第一小程序使用第一小程序平台提供的能力信息,第一预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第一能力差异信息;和/或,获取所述第二小程序运行时的第二关键信息,根据所述第二关键信息和第二预设平台能力数据确定第二评估结果;第二预设平台能力数据包括所述第一小程序平台与第二小程序平台之间的第二能力差异信息。信息。信息。


技术研发人员:孙晓博 杨胜福
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2022.08.09
技术公布日:2022/12/2
转载请注明原文地址: https://bbs.8miu.com/read-332255.html

最新回复(0)