应用程序处理方法、装置和计算机设备与流程

文档序号:18523898发布日期:2019-08-24 10:03阅读:154来源:国知局
应用程序处理方法、装置和计算机设备与流程

本申请涉及计算机技术领域,特别是涉及一种应用程序处理方法、装置、计算机可读存储介质和计算机设备。



背景技术:

随着计算机技术的发展,出现了越来越多的应用程序。应用程序,指的是为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。在各种计算机设备中,也存储越来越多的应用程序,通过各种应用程序可以实现不同的功能。

在使用应用程序之前,需要下载应用程序至计算机设备中。传统的应用程序下载方法,是将整个应用程序文件下载至计算机设备中,存在应用程序的下载速度慢的问题。



技术实现要素:

基于此,有必要针对应用程序下载速度慢的技术问题,提供一种应用程序处理方法、装置、计算机可读存储介质和计算机设备。

一种应用程序处理方法,包括:

获取第一应用程序的下载请求,并将所述下载请求发送至服务器;

接收服务器返回的与所述第一应用程序对应的配置信息,所述配置信息包含第一子程序属性信息和第二子程序属性信息;

当根据所述配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取所述第一子程序;

根据所述配置信息中第二子程序属性信息下载第二子程序;

根据所述第一子程序和下载的所述第二子程序,得到所述第一应用程序。

一种应用程序处理装置,其特征在于,所述装置包括:

下载请求发送模块,用于获取第一应用程序的下载请求,并将所述下载请求发送至服务器;

配置信息接收模块,用于接收服务器返回的与所述第一应用程序对应的配置信息,所述配置信息包含第一子程序属性信息和第二子程序属性信息;

第一子程序获取模块,用于当根据所述配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取所述第一子程序;

第二子程序下载模块,用于根据所述配置信息中第二子程序属性信息下载第二子程序;

第一应用程序获取模块,用于根据所述第一子程序和下载的所述第二子程序,得到所述第一应用程序。

一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述应用程序处理方法的步骤。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述应用程序处理方法的步骤。

上述应用程序处理方法、装置、计算机可读存储介质和计算机设备,获取第一应用程序的下载请求,并将下载请求发送至服务器;接收服务器返回的与第一应用程序对应的配置信息;当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序;根据配置信息中第二子程序属性信息下载第二子程序;根据第一子程序和下载的第二子程序,得到第一应用程序。当本地存在第一子程序时,从本地获取第一子程序,只需要下载第二子程序,避免下载整个第一应用程序,降低了网络带宽成本,提高了应用程序的下载速度,复用了第一子程序,也降低了终端的存储空间的占用。

附图说明

图1为一个实施例中应用程序处理方法的应用环境图;

图2为一个实施例中应用程序处理方法的流程示意图;

图3为一个实施例中第一子程序获取步骤的流程示意图;

图4为一个实施例中分包下载步骤的流程示意图;

图5为一个实施例中第一子程序下载步骤的流程示意图;

图6为一个实施例中应用程序处理系统的结构框图;

图7为一个实施例中编码缓存步骤的流程示意图;

图8为另一个实施例中应用程序处理方法的流程示意图;

图9为一个实施例中应用程序处理装置的结构框图;

图10为另一个实施例中应用程序处理装置的结构框图;

图11为一个实施例中计算机设备的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中应用程序处理方法的应用环境图。参照图1,该应用程序处理方法应用于应用程序处理系统。该应用程序处理系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

如图2所示,在一个实施例中,提供了一种应用程序处理方法。本实施例主要以该方法应用于上述图1中的终端110来举例说明。参照图2,该应用程序处理方法具体包括如下步骤:

s202,获取第一应用程序的下载请求,并将下载请求发送至服务器。

应用程序指的是为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。第一应用程序指的是用户所需要下载的应用程序。如软件app,微信小程序等。其中,软件app指的是安装在终端上的软件,需要进行下载、安装等步骤。微信小程序指的是在微信客户端中的一种不需要安装即可使用的应用程序,具有即点即玩,无需安装,体验轻便的特点。在微信小程序中,还包含了微信小游戏。下载(download)是指将文件从ftp(filetransferprotocol,文件传输协议)服务器拷贝到自己的计算机的过程。下载请求指的是下载第一应用程序的请求信息,请求信息可以包含第一应用程序的相关信息,如第一应用程序的标识、版本号、下载的时间等等。

在一个实施例中,终端110可以通过检测用户点击屏幕中第一应用程序的“下载”按钮,则生成第一应用程序的下载请求。在另外一个实施例中,终端110还可以通过识别用户的语音信息生成第一应用程序的下载请求,或者检测用户的手势,当手势与预设手势相匹配,则生成第一应用程序的下载请求。还可以是其他的方式获取第一应用程序的下载请求,不限于此。

终端110获取到第一应用程序的下载请求后,将下载请求发送至服务器120。其中,可以直接将下载请求发送至下载服务器进行下载第一应用程序,也可以将下载请求发送至代理服务器,通过代理服务器转发该下载请求至下载服务器,不限于此。

s204,接收服务器返回的与第一应用程序对应的配置信息,配置信息包含第一子程序属性信息和第二子程序属性信息。

配置信息指的是配置第一应用程序的信息,如第一应用程序的标识、版本号、第一应用程序中各个子程序的存储位置、各个子程序的数据量大小、各个子程序的标识、各个子程序的版本号等等。

配置信息包含第一子程序属性信息和第二子程序属性信息,相应地,第一应用程序包含第一子程序和第二子程序。属性信息指的是用于表示文件的属性的信息,如文件的标识、文件的数据量大小、文件的版本号等等。第一子程序属性信息用于表示第一子程序的属性,第二子程序属性信息用于表示第二子程序的属性。

具体地,服务器120接收终端110发送的第一应用程序的下载请求后,根据该第一应用程序的下载请求将与第一应用程序对应的配置信息发送至终端110。终端110接收服务器120返回的与第一应用程序对应的配置信息。

在一个实施例中,接收服务器返回的与第一应用程序对应的配置信息之前,该应用程序处理方法还包括:配置信息是服务器对下载请求进行身份验证,并且身份验证成功时发送的。

服务器120接收到终端110发送的第一应用程序的下载请求后,对下载请求进行身份验证。当身份验证成功时,获取与第一应用程序对应的配置信息并发送至终端110。当身份验证不成功时,发送验证不成功的信息至终端110。如验证不成功时,发送“身份验证不成功,请重试”至终端110。

服务器120对下载请求进行身份验证,当验证成功时发送配置信息,保证了第一应用程序的安全性。

s206,当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序。

第一应用程序包含第一子程序和第二子程序,第一子程序可以应用于不同的应用程序中。例如,第一子程序可以是游戏引擎a,游戏引擎a可以应用于游戏“王者荣耀”中,也可以应用于游戏“绝地求生”中,还可以应用于其他游戏类型的应用程序中。又如,第一子程序可以是去广告插件b,去广告插件b可以应用于“qq浏览器”中,也可以应用于“google浏览器”中。第一子程序还可以是其他的程序,不限于此。

可以理解的是,第一子程序可以包含多个程序,如第一子程序可以是多个插件,去广告插件b、翻译插件c、flash插件等等。当第一子程序包含多个程序时,同样可以应用于应用程序处理方法中。第二子程序指的是第一应用程序的基础程序,是第一应用程序的基本内容。

具体地,当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,可以从本地调用第一子程序,也可以从本地复制第一子程序,不限于此。

例如,当终端110本地已下载游戏“王者荣耀”,“王者荣耀”中包含了游戏引擎d。当终端110下载的第一应用程序为“穿越火线”,且“穿越火线”的第一子程序也为游戏引擎d时,则根据第一应用程序“穿越火线”的配置信息中的第一子程序属性信息确定本地包含有第一子程序游戏引擎d,从本地获取第一子程序游戏引擎d。

在第一子程序市场中,主要的第一子程序比较少,如在市场上的游戏引擎主要是三大游戏引擎,市场占用率非常高,即第一子程序的头部分布比较集中。如“欢乐斗地主”、“欢乐麻将”、“麻将来了”等棋牌类型的微信小游戏,都是使用同一个游戏引擎。因此,当下载多个微信小游戏时,常常多次下载同一个游戏引擎。

因此,当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序,避免了多次下载同一个游戏引擎,降低了网络带宽成本,提高了应用程序的下载速度,复用了第一子程序,也降低了终端的存储空间的占用。

例如,终端110下载的微信小游戏a使用x版本的游戏引擎a,即终端110本地存在x版本的游戏引擎a,当下载微信小游戏b使用x版本的游戏引擎a时,从终端110本地获取x版本的游戏引擎a,无需重复下载x版本的游戏引擎a。

s208,根据配置信息中第二子程序属性信息下载第二子程序。

第二子程序指的是第一应用程序的基础程序,是第一应用程序的基本内容。可以理解的是,不同的应用程序的第二子程序是不同的,不同的第二子程序不可以复用。

在一个实施例中,第二子程序属性信息中包含第二子程序标识,根据配置信息中第二子程序属性信息下载第二子程序包括:根据第二子程序属性信息中的第二子程序标识下载第二子程序。

第二子程序标识用于唯一标示第二子程序,如唯一的序列编号、唯一的代码、唯一的名称等等。

可以理解的是,从本地获取第一子程序,以及根据配置信息中第二子程序属性信息下载第二子程序,两个步骤可以同时执行,也可以先执行其中一个步骤,再执行另外一个步骤,不限于此。

s210,根据第一子程序和下载的第二子程序,得到第一应用程序。

在传统的应用程序处理方法中,下载应用程序一般为下载整个应用程序。如下载第一应用程序“google浏览器”,则下载整个“google浏览器”,包含了“google浏览器”的基础程序,也包含了“google浏览器”的各种插件,如去广告插件、翻译插件、flash插件。而当本地其他应用程序如“qq浏览器”中存在“google浏览器”所需的各种插件,如去广告插件、翻译插件、flash插件时,重复下载“google浏览器”所需的各种插件,存在应用程序下载速度慢的问题。

因此,当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序,只需下载第二子程序,即可得到第一应用程序,提高了应用程序的下载速度。

上述应用程序处理方法,获取第一应用程序的下载请求,并将下载请求发送至服务器;接收服务器返回的与第一应用程序对应的配置信息;当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序;根据配置信息中第二子程序属性信息下载第二子程序;根据第一子程序和下载的第二子程序,得到第一应用程序。当本地存在第一子程序时,从本地获取第一子程序,只需要下载第二子程序,避免下载整个第一应用程序,降低了网络带宽成本,提高了应用程序的下载速度,复用了第一子程序,也降低了终端的存储空间的占用。

参照图3,在一个实施例中,第一子程序属性信息包含第一子程序标识和版本信息;当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序,包括:

s302,根据第一子程序标识查找本地是否存在第一子程序标识对应的第一子程序。

第一子程序标识指的是用于唯一标示第一子程序的标识,如序列“1123”、名称“游戏引擎d”等,不限于此。

在一个实施例中,根据第一子程序标识查找本地是否存在第一子程序标识对应的第一子程序包括:将第一子程序标识逐一与本地的各个参考标识进行匹配;当本地存在与第一子程序标识一致的参考标识时,本地存在第一子程序标识对应的第一子程序;当本地不存在与第一子程序标识一致的参考标识时,本地不存在第一子程序标识对应的第一子程序。

一般地,每一个文件都存在对应的标识。将第一子程序标识逐一与本地的各个文件的参考标识进行匹配,当本地存在与第一子程序标识一致的参考标识时,表示本地存在第一子程序标识对应的第一子程序。当本地不存在与第一子程序标识一致的参考标识时,表示本地不存在第一子程序标识对应的第一子程序。

s304,当查找到本地存在第一子程序标识对应的第一子程序时,检测本地的第一子程序的版本信息与第一子程序属性信息中的版本信息是否相同。

第一子程序属性信息中的版本信息可以是第一子程序的版本号,如“v1”、“v2”等。需要指出的是,相同的第一子程序可以存在不同的版本信息。例如,第一子程序为“游戏引擎e”,“游戏引擎e”可以存在三个不同的版本,如“游戏引擎e版本v1”,“游戏引擎e版本v2”和“游戏引擎e版本v3”。不同版本信息的第一子程序之间存在一定的差异。

s306,当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息相同时,从本地获取第一子程序。

当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息相同时,表示本地的第一子程序即为第一应用程序中包含的第一子程序,从本地获取第一子程序。

上述应用程序处理方法,根据第一子程序标识查找到本地存在第一子程序标识对应的第一子程序时,检测本地的第一子程序的版本信息与第一子程序属性信息中的版本信息是否相同,当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息相同时,表示本地的第一子程序即为第一应用程序中包含的第一子程序,从本地获取第一子程序,避免下载整个第一应用程序,降低了网络带宽成本,提高了应用程序的下载速度,复用了第一子程序,也降低了终端的存储空间的占用。

在一个实施例中,上述应用程序处理方法还包括:当未查找到本地存在第一子程序标识对应的第一子程序时,下载第一子程序。

可以理解的是,当未查找到本地存在第一子程序标识对应的第一子程序时,表示终端110本地不存在第一子程序,则下载第一子程序,保证了第一应用程序的完整性。

参照图4,在一个实施例中,上述应用程序处理方法还包括:

s402,获取下载的第一子程序的第一数据量。

数据量指的是文件的数据大小,如8b(byte,字节)、10mb(mbyte,兆字节)、20gb(gigabyte,吉字节)等。第一数据量指的是第一子程序的数据大小。

在未查找到本地存在第一子程序标识对应的第一子程序时,获取下载的第一子程序的第一数据量。其中,第一子程序属性信息中可以包含第一子程序的第一数据量。

s404,当第一数据量大于第一数据量阈值时,分包下载第一子程序。

在下载第一子程序的过程中,可能因为各种原因如网络质量差、下载环境不安全等,容易导致第一子程序下载不成功、丢包、被盗等,存在第一子程序下载的安全性较低的问题。当第一子程序的数据量较大时,则第一子程序下载不成功、丢包、被盗的风险更高。

因此,当第一子程序的第一数据量大于第一数据量阈值时,表示第一子程序的数据量较大,则分包下载第一子程序。其中,分包下载指的是将第一子程序分成几个程序包进行下载。

当第一子程序中的其中一个或者多个程序包丢失或者下载不成功时,终端110只需下载丢失的或者下载不成功的程序包,再将下载的程序包进行组合即可得到第一子程序,避免了再次下载完整的第一子程序,提高了下载第一子程序的速度。

当第一子程序中的其中一个或者少数几个程序包被盗时,盗取的一个或者少数几个程序包并不能组合得到完整的第一子程序,从而提高了第一子程序的安全性。

或,s406,获取下载的第二子程序的第二数据量。

第二数据量指的是第二子程序的数据大小。

第二子程序指的是第一应用程序的基础程序,是第一应用程序的基本内容。可以理解的是,不同的应用程序的第二子程序是不同的,不同的第二子程序不可以复用。

在下载第二子程序之前,可以获取第二子程序的第二数据量。其中,第二子程序属性信息中可以包含第二子程序的第二数据量。

s408,当第二数据量大于第二数据量阈值时,分包下载第二子程序。

当第二子程序的第一数据量大于第二数据量阈值时,表示第二子程序的数据量较大,则分包下载第二子程序。其中,分包下载指的是将第二子程序分成几个程序包进行下载。

当第二子程序中的其中一个或者多个程序包丢失或者下载不成功时,终端110只需下载丢失的或者下载不成功的程序包,再将下载的程序包进行组合即可得到第二子程序,避免了再次下载完整的第二子程序,提高了下载第二子程序的速度。

当第二子程序中的其中一个或者少数几个程序包被盗时,盗取的一个或者少数几个程序包并不能组合得到完整的第二子程序,从而提高了第二子程序的安全性。

在一个实施例中,第一子程序或者第二子程序也可以进行整包下载,还可以进行主包下载,不限于此。

上述应用程序处理方法,获取下载的第一子程序的第一数据量,当第一数据量大于第一数据量阈值时,分包下载第一子程序;或获取下载的第二子程序的第二数据量,当第二数据量大于第二数据量阈值时,分包下载第二子程序,提高了下载第一子程序或第二子程序的速度,也提高了第一子程序或第二子程序的安全性。

参照图5,在一个实施例中,上述应用程序处理方法还包括:

s502,当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息不同时,下载本地的第一子程序对应的增量数据,其中,增量数据是根据第一子程序属性信息对应的第一子程序与本地的第一子程序进行差分得到的。

增量数据指的是根据第一子程序属性信息对应的第一子程序与本地的第一子程序进行差分得到的数据。如第一子程序“游戏引擎f”,存在两个版本信息“游戏引擎f版本v1”和“游戏引擎f版本v2”,将“游戏引擎f版本v1”和“游戏引擎f版本v2”进行差分得到增量数据。

s504,将增量数据和本地的第一子程序合并生成第一子程序属性信息对应的第一子程序。

下载增量数据完成后,将增量数据和本地的第一子程序进行合并,生成第一子程序属性信息对应的第一子程序,即生成第一子程序属性信息中的版本信息对应的第一子程序。

具体地,将增量数据和本地的第一子程序进行合并,可以是将增量数据和本地的第一子程序进行组合,也可以是根据增量数据将第一子程序中的数据进行删除,还可以是根据增量数据将第一子程序中的数据进行修改,不限于此。

在第一子程序市场中,不仅主要的第一子程序比较少,而且第一子程序在发布新版本时,一般更新的部分较少,即第一小程序的版本分布比较集中。因此,当多个应用程序的第一子程序相同,版本不同时,下载的多个应用程序的第一子程序的程序代码重复率较高。

因此,当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息不同时,下载本地的第一子程序对应的增量数据,再将增量数据和本地的第一子程序合并,即可得到第一子程序,提高了第一子程序的下载速度。

例如,终端110下载的微信小游戏a使用x版本的游戏引擎a,即终端110本地存在x版本的游戏引擎a,当下载微信小游戏c使用y版本的游戏引擎a时,那么便可以通过下载x版本的游戏引擎a对应的增量数据,将增量数据和x版本的游戏引擎a进行合并即可得到y版本的游戏引擎a,无需下载y版本的游戏引擎a。

上述应用程序处理方法,当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息不同时,下载本地的第一子程序对应的增量数据,将增量数据和本地的第一子程序合并生成第一子程序属性信息对应的第一子程序,避免了下载整个第一子程序,提高了第一子程序的下载速度。

在一个实施例中,根据配置信息中第二子程序属性信息下载的第二子程序是由编译终端上传至服务器的,第二子程序是由编译终端根据第一子程序的路径信息从第一应用程序中编译得到的,第一应用程序是由编译终端获取的,第一应用程序包含第一子程序和第二子程序,以及第一子程序的路径信息。

编译指的是将源程序进行处理得到目标程序的过程,编译终端指的是从第一应用程序中编译得到第二子程序的终端。路径信息指的是第一子程序位于第一应用程序中的路径的信息,如"path":"/libs/cocos2d-js-min.js"。通过第一子程序的路径信息可以查找到第一应用程序中的第一子程序。

在一个实施例中,第一子程序提供方从服务器中获取第一子程序标识,根据第一子程序标识、第一子程序的版本信息和第一子程序生成第一子程序属性信息,并通过编译终端将第一子程序和第一子程序属性信息上传至服务器。服务器接收并存储编译终端上传的第一子程序和第一子程序属性信息。其中,第一子程序提供方指的是提供第一子程序的人,如插件开发商、游戏引擎开发商等。从服务器中获取的第一子程序标识在服务器中可以唯一识别第一子程序。

当开发者在引擎终端中开发完成第一应用程序时,导出第一应用程序至编译终端,第一应用程序中包含第一子程序的路径信息。其中,开发者指的是开发第一应用程序的人,引擎终端指的是开发第一应用程序的终端。

在一个实施例中,第一应用程序中还可以包含第一子程序标识、版本信息、第一子程序数据量等,不限于此。

当引擎终端导出第一应用程序至编译终端时,引擎终端根据第一子程序和第一应用程序生成第一子程序的路径信息。

编译终端获取第一应用程序,其中,第一应用程序包含第一子程序和第二子程序,以及第一子程序的路径信息。编译终端根据第一子程序的路径信息,可以从第一应用程序中编译出第二子程序,并将第二子程序上传至服务器。

在一个实施例中,编译终端根据第一应用程序生成第二子程序属性信息,并将第二子程序属性信息上传至服务器。服务器接收并存储第二子程序和第二子程序属性信息后,则终端110可以根据接收到的配置信息中的第二子程序属性信息下载第二子程序。

在一个实施例中,上述应用程序处理方法可以应用于如图6所示的系统中,开发者工具指的是编译调试第一应用程序的ide(integrateddevelopmentenvironment,集成开发环境),如微信开发者工具,可以编译调试微信小游戏、微信小程序等。开发者工具安装、存储、运行于编译终端中。引擎ide指的是开发第一应用程序的ide,可以安装、存储、运行于引擎终端中。微信服务器指的是服务器120,客户端(client)指的是与服务器相对应,为客户提供本地服务的程序。微信客户端指的是微信应用程序,安装、存储、运行于终端110中。

第一应用程序为微信小游戏“欢乐斗地主”,微信小游戏的第一子程序为“游戏引擎f”。第一子程序提供方可以预先根据微信服务器中的文件类目为“游戏引擎f”申请第一子程序标识。当获取到“游戏引擎f”的标识如1123时,将“游戏引擎f”的标识1123、“游戏引擎f”的版本信息和“游戏引擎f”生成第一子程序属性信息,执行步骤602,通过开发者工具将第一子程序和第一子程序属性信息上传至微信服务器。

在一个实施例中,当第一子程序提供方申请第一子程序标识时,微信服务器可以对第一子程序提供方的身份进行验证,也可以对申请的第一子程序标识进行审核,可以提高第一子程序的安全性。

当微信服务器接收到第一子程序和第一子程序属性信息时,可以将第一子程序和第一子程序属性信息进行打包或者压缩处理并存储在存储器中,节省微信服务器的空间。

当开发者在引擎ide中开发完成第一应用程序即微信小游戏“欢乐斗地主”时,执行步骤604,通过引擎ide将微信小游戏“欢乐斗地主”导出至开发者工具中。在导出“欢乐斗地主”时,引擎ide可以根据“欢乐斗地主”中的“游戏引擎f”,识别出“游戏引擎f”的版本信息。

在一个实施例中,开发者可以将“游戏引擎f”的标识、版本信息、第一子程序提供方标识、“游戏引擎f”的路径信息等数据生成配置文件,如“game.json”:"codelibinfo":[{"provider":"wxaaaaaaaaaaaa","version":"2.0.5","path":"cocos2d-js-min.js"}]。其中,"codelibinfo"指的是配置文件的具体信息,"provider":"wxaaaaaaaaaaaa"指的是第一子程序提供方标识,也就是“游戏引擎f”的提供方的标识为"wxaaaaaaaaaaaa"。"version":"2.0.5"表示“游戏引擎f”的版本信息为"2.0.5"。"path":"cocos2d-js-min.js"表示“游戏引擎f”在小游戏“欢乐斗地主”中的路径信息,即“游戏引擎f”是位于根目录中的单个文件。

在另一个实施例中,当“游戏引擎f”是位于根目录下的一个文件夹时,配置文件“game.json”可表示为:"codelibinfo":[{"provider":"wxaaaaaaaaaaaa","version":"2.0.5","path":"/libs"}]。

当开发者工具获取到微信小游戏“欢乐斗地主”时,可以根据第一子程序的路径信息对“欢乐斗地主”进行编译,得到第二子程序,即不包含“游戏引擎f”的“欢乐斗地主”。也就是说,将“游戏引擎f”从“欢乐斗地主”中分离出来。执行步骤606,通过开发者工具将第二子程序,即不包含“游戏引擎f”的“欢乐斗地主”上传至微信客户端中。

在一个实施例中,开发者工具根据不包含“游戏引擎f”的“欢乐斗地主”可以生成第二子程序属性信息,如第二子程序的标识、版本信息、第二数据量、路径信息等等,不限于此。开发者工具可以将第二子程序属性信息上传至微信服务器。

微信服务器接收并存储不包含“游戏引擎f”的“欢乐斗地主”。在另外一个实施例中,微信服务器还可以将接收的第二子程序,即不包含“游戏引擎f”的“欢乐斗地主”和第二子程序属性信息进行打包或者压缩处理,并存储在存储器中。

当终端110的微信客户端执行步骤608,下载第一应用程序时,如用户通过微信客户端打开微信小游戏“欢乐斗地主”时,也即获取第一应用程序的下载请求,微信客户端将微信小游戏“欢乐斗地主”的下载请求发送至微信服务器。服务器接收到微信小游戏“欢乐斗地主”的下载请求后,将微信小游戏“欢乐斗地主”的配置信息,即第一子程序属性信息和第二子程序属性信息发送至终端110的微信客户端中。

微信客户端根据接收到的第一子程序属性信息确定本地是否包含有第一子程序,即“游戏引擎f”,当本地存在“游戏引擎f”时,获取“游戏引擎f”。根据第二子程序属性信息下载第二子程序,即不包含“游戏引擎f”的“欢乐斗地主”,根据“游戏引擎f”和下载的不包含“游戏引擎f”的“欢乐斗地主”,可以得到完整的“欢乐斗地主”,即可启动微信小游戏“欢乐斗地主”,提高了微信小游戏的启动速度。

在一个实施例中,微信客户端可以集成引擎分离的功能,当打开“欢乐斗地主”时即可调试引擎分离的情况,还可以通过日志如consolelog中的信息来识别“游戏引擎f”是否解释执行成功。

在一个实施例中,当微信客户端为旧版本时,则直接下载第一应用程序,保证了不同版本的微信客户端之间的兼容性。

在一个实施例中,根据第一子程序和下载的第二子程序,得到第一应用程序,包括:解释执行第一子程序;当第一子程序解释执行完成时,解释执行第二子程序,得到第一应用程序。

解释执行指的是将程序语句逐句解释成一条或多条计算机指令,并将该计算机指令提交至硬件设备进行执行且将执行结果反映到终端。也就是说,当终端获取一条程序语句时,就能立即得到执行结果。当第一子程序解释执行完成时,解释执行第二子程序,解释执行时可以快速地得到第一子程序或者第二子程序中的每一条程序语句的执行结果,提高了第一应用程序启动的速度。

终端110得到第一子程序和第二子程序后,解释执行第一子程序,当第一子程序解释执行完成后,解释执行第二子程序。当第一子程序和第二子程序都解释执行完成时,则得到第一应用程序,可以运行第一应用程序。

上述应用程序处理方法,解释执行第一子程序,当第一子程序解释执行完成时,解释执行第二子程序,可以得到第一应用程序,提高了第一应用程序的启动速度。

参照图7,在一个实施例中,上述应用程序处理方法还包括:

s702,将解释执行第一子程序生成的编码进行缓存。

缓存指的是将程序或系统经常要调用的对象存储在缓存器的过程。在终端110对第一子程序解释执行的过程中,会生成计算机可以识别的二进制编码,根据二进制编码转换成计算机指令。在终端110对第一子程序解释执行的过程中,将生成的二进制编码进行缓存,即将第一子程序对应的二进制编码存储在缓存器中。计算机指令即当终端以便使用时可以快速调用。这样做可以减少系统开销,提高系统效率

s704,当获取对第二应用程序的下载请求之后,确定本地存在第一子程序时,获取缓存的第一子程序生成的编码。

第二应用程序指的是终端110中的应用程序。需要指出的是,第二应用程序可以与第一应用程序相同,也可以与第一应用程序不同,不限于此。

当第二应用程序与第一应用程序相同时,即再次下载第一应用程序。例如,在终端110中的微信客户端上下载完成第一应用程序,即小游戏“欢乐斗地主”之后退出,当下载第二应用程序,即再次下载小游戏“欢乐斗地主”时,确定本地存在小游戏“欢乐斗地主”的游戏引擎时,则直接获取缓存的第一子程序生成的编码。

当第二应用程序与第一应用程序不同时,即下载除第一应用程序之外的其他应用应用程序。例如,在终端110中预先下载了第一应用程序“欢乐斗地主”,并将解释执行“欢乐斗地主”的第一子程序,即游戏引擎d生成的编码进行缓存。当第二应用应用程序“欢乐麻将”和第一应用程序“欢乐斗地主”使用相同的游戏引擎d时,在获取对第二应用程序“欢乐麻将”的下载请求之后,确定本地存在“欢乐麻将”的游戏引擎d时,获取缓存的第一子程序即游戏引擎d生成的编码。

s706,根据缓存的第一子程序生成的编码和下载的第二应用程序的第二子程序,得到第二应用程序。

可以理解的是,终端110对第一子程序进行解释执行时,将第一子程序解释成编码需要花费较多的时间。因此,将解释执行第一子程序生成的编码进行缓存,当第二应用程序使用第一子程序时,直接获取缓存的第一子程序生成的编码,可以节约时间,提高第二应用程序启动的速度。

图2-图5以及图7为一个实施例中应用程序处理方法的流程示意图。应该理解的是,虽然图2-图5以及图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图5以及图7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图8所示,步骤802,当终端110打开微信小游戏时,即获取第一应用程序的下载请求,终端110将微信小游戏的下载请求发送至微信服务器。步骤804,接收微信服务器返回的该微信小游戏的配置信息,配置信息中包含第一子程序属性信息和第二子程序属性信息,第一子程序属性信息包含第一子程序标识和版本信息。

执行步骤806,终端根据第一子程序属性信息中的第一子程序标识判断本地是否存在第一子程序标识。当判定本地不存在第一子程序标识,即未查找到本地存在第一子程序标识对应的第一子程序时,执行步骤808,下载第一子程序。当判定本地存在第一子程序标识,即查找到本地存在第一子程序标识对应的第一子程序时,执行步骤810,检测本地的第一子程序的版本信息与第一子程序属性信息中的版本信息是否相同。

当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息相同时,执行步骤812,从本地获取所第一子程序。当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息不同时,执行步骤814,下载本地的第一子程序对应的增量数据。增量数据下载完成之后,执行步骤816,将增量数据和本地的第一子程序合并生成第一子程序属性信息对应的第一子程序。

当终端110接收到微信服务器返回的该微信小游戏的配置信息时,执行步骤818,根据配置信息中的第二子程序属性信息下载第二子程序。

当获取到第一子程序和第二子程序时,执行步骤820,解释执行第一子程序。当第一子程序解释执行完成时,执行步骤822,解释执行第二子程序。当第二子程序解释执行完成时,即可执行步骤824,启动微信小游戏。

在另一个实施例中,上述应用程序处理方法还可以包括以下步骤:

(1)获取第一应用程序的下载请求,并将下载请求发送至服务器。

(2)接收服务器返回的与第一应用程序对应的配置信息,配置信息包含第一子程序属性信息和第二子程序属性信息。

(3)第一子程序属性信息包含第一子程序标识和版本信息;根据第一子程序标识查找本地是否存在第一子程序标识对应的第一子程序。

(4)当未查找到本地存在第一子程序标识对应的第一子程序时,下载第一子程序。

(5)当查找到本地存在第一子程序标识对应的第一子程序时,检测本地的第一子程序的版本信息与第一子程序属性信息中的版本信息是否相同。

(6)当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息相同时,从本地获取第一子程序。

(7)当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息不同时,下载本地的第一子程序对应的增量数据,其中,增量数据是根据第一子程序属性信息对应的第一子程序与本地的第一子程序进行差分得到的。

(8)将增量数据和本地的第一子程序合并生成第一子程序属性信息对应的第一子程序。

(9)根据配置信息中第二子程序属性信息下载第二子程序

(10)获取下载的第一子程序的第一数据量。

(11)当第一数据量大于第一数据量阈值时,分包下载第一子程序。或

(12)获取下载的第二子程序的第二数据量。

(13)当第二数据量大于第二数据量阈值时,分包下载第二子程序。

(14)解释执行第一子程序。

(15)当第一子程序解释执行完成时,解释执行第二子程序,得到第一应用程序。

(16)将解释执行第一子程序生成的编码进行缓存。

(17)当获取对第二应用程序的下载请求之后,确定本地存在第一子程序时,获取缓存的第一子程序生成的编码。

(18)根据缓存的第一子程序生成的编码和下载的第二应用程序的第二子程序,得到第二应用程序。

上述应用程序处理方法,终端110获取第一应用程序的下载请求,并将下载请求发送至服务器,接收服务器返回的第一应用程序对应的配置信息,配置信息包含了第一子程序属性信息和第二子程序属性信息,当根据第一子程序属性信息中的第一子程序标识查找到本地存在第一子程序标识对应的第一子程序,且本地的第一子程序的版本信息与第一子程序属性信息中的版本信息相同时,从本地获取第一子程序,根据第一子程序和第二子程序得到第一应用程序,只需要下载第二子程序,避免下载整个第一应用程序,降低了网络带宽成本,提高了应用程序的下载速度,复用了第一子程序,也降低了终端的存储空间的占用。

当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息不同时,下载本地的第一子程序对应的增量数据,将增量数据和本地的第一子程序合并生成第一子程序属性信息对应的第一子程序,避免了下载整个第一子程序,降低了网络带宽成本,提高了应用程序的下载速度,也降低了终端的存储空间的占用。

当下载的第一子程序的第一数据量大于第一数据量阈值时,分包下载第一子程序;当下载的第二子程序的第二数据量大于第二数据量阈值时,分包下载第二子程序,分包下载可以提高下载的第一子程序或第二子程序的安全性。当下载的第一子程序或第二子程序中的一个或者几个程序包发生丢包或者下载不成功时,只需要重新下载丢包或者下载不成功的程序包,避免了再次下载整个第一子程序或者第二子程序,降低了网络带宽成本,提高了应用程序的下载速度,也降低了终端的存储空间的占用。

在将第一应用程序的第一子程序解释执行之后,可以将解释执行第一子程序生成的编码进行缓存,当第二应用程序使用第一子程序时,直接获取缓存的第一子程序生成的编码,可以节约时间,提高第二应用程序启动的速度。

在一个实施例中,如图9所示,提供了一种应用程序处理装置900,包括:下载请求发送模块902、配置信息接收模块904、第一子程序获取模块906、第二子程序下载模块908和第一应用程序获取模块910,其中:

下载请求发送模块902,用于获取第一应用程序的下载请求,并将下载请求发送至服务器。

配置信息接收模块904,用于接收服务器返回的与第一应用程序对应的配置信息,配置信息包含第一子程序属性信息和第二子程序属性信息。

第一子程序获取模块906,用于当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序。

第二子程序下载模块908,用于根据配置信息中第二子程序属性信息下载第二子程序。

第一应用程序获取模块910,用于根据第一子程序和下载的第二子程序,得到第一应用程序。

上述应用程序处理方法,获取第一应用程序的下载请求,并将下载请求发送至服务器;接收服务器返回的与第一应用程序对应的配置信息;当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序;根据配置信息中第二子程序属性信息下载第二子程序;根据第一子程序和下载的第二子程序,得到第一应用程序。当本地存在第一子程序时,从本地获取第一子程序,只需要下载第二子程序,避免下载整个第一应用程序,降低了网络带宽成本,提高了应用程序的下载速度,复用了第一子程序,也降低了终端的存储空间的占用。

在一个实施例中,如图10所示,提供了一种应用程序处理装置1000,包括:下载请求发送模块1002、配置信息接收模块1004、第一子程序获取模块1006、第一子程序下载模块1008、第二子程序下载模块1010、分包下载模块1012和第一应用程序获取模块1014和编码缓存模块1016,其中:

下载请求发送模块1002,用于获取第一应用程序的下载请求,并将下载请求发送至服务器。

配置信息接收模块1004,用于接收服务器返回的与第一应用程序对应的配置信息,配置信息包含第一子程序属性信息和第二子程序属性信息。

第一子程序获取模块1006,用于当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序。

第一子程序下载模块1008,用于当未查找到本地存在第一子程序标识对应的第一子程序时,下载第一子程序。

第二子程序下载模块1010,用于根据配置信息中第二子程序属性信息下载第二子程序。

分包下载模块1012,用于获取下载的第一子程序的第一数据量;当第一数据量大于第一数据量阈值时,分包下载第一子程序。或用于获取下载的第二子程序的第二数据量;当第二数据量大于第二数据量阈值时,分包下载第二子程序。

第一应用程序获取模块1014,用于根据第一子程序和下载的第二子程序,得到第一应用程序。

编码缓存模块1016,用于将解释执行第一子程序生成的编码进行缓存;当获取对第二应用程序的下载请求之后,确定本地存在第一子程序时,获取缓存的第一子程序生成的编码;根据缓存的第一子程序生成的编码和下载的第二应用程序的第二子程序,得到第二应用程序。

上述应用程序处理方法,当本地不存在第一子程序时,下载第一子程序和第二子程序得到第一应用程序;当本地存在第一子程序时,从本地获取第一子程序,只需要下载第二子程序,避免下载整个第一应用程序,降低了网络带宽成本,提高了应用程序的下载速度,复用了第一子程序,也降低了终端的存储空间的占用。

当下载的第一子程序的第一数据量大于第一数据量阈值时,分包下载第一子程序;或者第二子程序的第二数据量大于第二数据量阈值时,分包下载第二子程序,提高了下载的第一子程序或者第二子程序的安全性。

当下载第二应用程序时,获取缓存的第一子程序生成的编码和下载的第二应用程序的第二子程序,从而得到第二应用程序,节约了将第一子程序解释成编码的过程,提高了第二应用程序的启动速度。

在一个实施例中,第一子程序属性信息包含第一子程序标识和版本信息;上述第一子程序获取模块1006还用于根据第一子程序标识查找本地是否存在第一子程序标识对应的第一子程序;当查找到本地存在第一子程序标识对应的第一子程序时,检测本地的第一子程序的版本信息与第一子程序属性信息中的版本信息是否相同;当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息相同时,从本地获取第一子程序。

在一个实施例中,上述第二子程序下载模块1010还用于当本地的第一子程序的版本信息与第一子程序属性信息中的版本信息不同时,下载本地的第一子程序对应的增量数据,其中,增量数据是根据第一子程序属性信息对应的第一子程序与本地的第一子程序进行差分得到的;将增量数据和本地的第一子程序合并生成第一子程序属性信息对应的第一子程序。

在一个实施例中,上述第二子程序下载模块1010还用于根据配置信息中第二子程序属性信息下载的第二子程序是由编译终端上传至服务器的,第二子程序是由编译终端根据第一子程序的路径信息从第一应用程序中编译得到的,第一应用程序是由编译终端获取的,第一应用程序包含第一子程序和第二子程序,以及第一子程序的路径信息。

在一个实施例中,上述第一应用程序获取模块1014还用于解释执行第一子程序;当第一子程序解释执行完成时,解释执行第二子程序,得到第一应用程序。

图11示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110(或服务器120)。如图11所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现应用程序处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行应用程序处理方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的应用程序处理装置可以实现为一种计算机程序的形式,计算机程序可在如图11所示的计算机设备上运行。计算机设备的存储器中可存储组成该应用程序处理装置的各个程序模块,比如,图10所示的下载请求发送模块1002、配置信息接收模块1004、第一子程序获取模块1006、第一子程序下载模块1008、第二子程序下载模块1010、分包下载模块1012和第一应用程序获取模块1014和编码缓存模块1016。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的应用程序处理方法中的步骤。

例如,图11所示的计算机设备可以通过如图10所示的应用程序处理装置中的下载请求发送模块1002执行获取第一应用程序的下载请求,并将下载请求发送至服务器。计算机设备可通过配置信息接收模块1004执行接收服务器返回的与第一应用程序对应的配置信息,配置信息包含第一子程序属性信息和第二子程序属性信息。计算机设备可通过第一子程序获取模块1006执行当根据配置信息中的第一子程序属性信息确定本地包含有第一子程序时,从本地获取第一子程序。计算机设备可通过第一子程序下载模块1008执行当未查找到本地存在第一子程序标识对应的第一子程序时,下载第一子程序。计算机设备可通过第二子程序下载模块1010执行根据配置信息中第二子程序属性信息下载第二子程序。计算机设备可通过分包下载模块1012执行获取下载的第一子程序的第一数据量;当第一数据量大于第一数据量阈值时,分包下载第一子程序。或用于获取下载的第二子程序的第二数据量;当第二数据量大于第二数据量阈值时,分包下载第二子程序。计算机设备可通过第一应用程序获取模块1014执行根据第一子程序和下载的第二子程序,得到第一应用程序。计算机设备可通过编码缓存模块1016执行将解释执行第一子程序生成的编码进行缓存;当获取对第二应用程序的下载请求之后,确定本地存在第一子程序时,获取缓存的第一子程序生成的编码;根据缓存的第一子程序生成的编码和下载的第二应用程序的第二子程序,得到第二应用程序。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述应用程序处理方法的步骤。此处应用程序处理方法的步骤可以是上述各个实施例的应用程序处理方法中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述应用程序处理方法的步骤。此处应用程序处理方法的步骤可以是上述各个实施例的应用程序处理方法中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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