应用程序更新方法及装置、电子设备、存储介质与流程

文档序号:25419788发布日期:2021-06-11 21:30阅读:44来源:国知局
应用程序更新方法及装置、电子设备、存储介质与流程

本公开涉及计算机技术领域,具体而言,涉及一种应用程序更新方法、应用程序更新装置、电子设备以及计算机可读存储介质。



背景技术:

随着互联网的快速发展,应用程序的更新越来越频繁,若长时间不使用应用程序,打开应用程序时需要多次更新应用程序,进而使得应用程序的更新过程较复杂。

在相关的应用程序更新方法中,要么是发布最新版本的应用程序,要么是发布应用程序对应的所有更新版本的补丁压缩包;然而,无论是整个最新版本的应用程序还是应用程序对应的所有更新版本的补丁压缩包,都需要下载较大的文件,使得应用程序的更新效率较低。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开实施例的目的在于提供一种应用程序更新方法、应用程序更新装置、电子设备以及计算机可读存储介质,进而至少在一定程度上克服应用程序的更新效率较低的问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开实施例的第一方面,提供了一种应用程序更新方法,应用于客户端,包括:响应于启动应用程序,将所述应用程序的当前版本号与服务端中存储的所述应用程序的最新版本号进行比对;若所述当前版本号与所述最新版本号的比对结果为不同,则从所述服务端获取所述应用程序的各个版本号对应的增量更新资源包和所述增量更新资源包对应的资源包关联文件;根据所述资源包关联文件确定所述增量更新资源包对应的标识数据,并基于所述标识数据从所述增量更新资源包中确定与所述最新版本号对应的目标增量更新资源包;通过所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为所述最新版本号对应的应用程序。

在本公开的一些示例实施例中,基于前述方案,所述根据所述资源包关联文件确定所述增量更新资源包对应的标识数据,并基于所述标识数据从所述增量更新资源包中确定与所述最新版本号对应的目标增量更新资源包,包括:基于所述资源包关联文件加载通过所述服务端下发的增量更新资源包,并确定所述增量更新资源包对应的资源列表;根据所述资源列表确定所述增量更新资源包对应的资源映射关系,并基于所述资源映射关系确定所述增量更新资源包对应的标识数据;基于所述增量更新资源包对应的标识数据确定所述各个版本号对应的新增资源包和与所述最新版本号对应的目标更换资源包。

在本公开的一些示例实施例中,基于前述方案,所述方法还包括:下载所述增量更新资源包,并删除所述增量更新资源包中除所述目标增量更新资源包之外的冗余更新资源包;重新启动所述应用程序以根据所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为与所述最新版本号对应的应用程序。

根据本公开实施例的第二方面,提供了一种应用程序更新方法,应用于服务端,所述方法包括:获取所述应用程序的历史版本号对应的当前资源包,以及与所述应用程序对应的最新版本号的更新资源包;将所述当前资源包中的当前文件与所述更新资源包中的更新文件进行比对处理,得到差异文件;基于所述差异文件生成各个版本号对应的应用程序的增量更新资源包以根据所述增量更新资源包将所述历史版本号对应的应用程序跳跃更新为与所述最新版本号对应的应用程序,所述各个版本号包括所述历史版本号和最新版本号。

在本公开的一些示例实施例中,基于前述方案,所述差异文件包括差异脚本文件,所述将所述当前资源包中的当前文件与所述更新资源包中的更新文件进行比对处理,得到差异文件包括:获取所述当前文件中当前脚本文件对应的当前加密数值以及所述更新文件中更新脚本文件对应的加密数值,并检测所述当前加密数值是否与所述加密数值是否相同;若所述当前加密数值和所述加密数值不相同,则将所述更新脚本文件作为差异脚本文件。

在本公开的一些示例实施例中,基于前述方案,所述差异文件包括差异场景文件,所述基于所述映射关系对所述差异脚本文件进行命名处理,得到命名后的脚本文件,还包括:计算所述当前文件中的当前场景文件对应的第一关联加密数值,以及计算所述更新文件中的更新场景文件对应的第一目标关联加密数值,并检测所述第一关联加密数值与所述第一目标关联加密数值是否相同;若所述第一关联加密数值与所述第一目标关联加密数值不相同,则保存所述第一关联加密数值和与所述第一关联加密数值对应的当前场景关联资源,并将所述第一目标关联加密数值对应的场景关联资源作为差异场景资源;确定所述当前场景文件对应的场景文件名称,以及生成所述差异场景文件的时间戳;基于所述差异场景资源生成差异场景文件,并确定生成所述差异场景文件的时间戳,以及所述当前场景文件对应的场景文件名称;基于所述场景文件名称和时间戳对所述差异场景文件进行命名处理,得到命名后的差异场景文件。

在本公开的一些示例实施例中,基于前述方案,所述差异文件包括差异公共文件,所述基于所述场景文件名称和时间戳对所述差异场景文件进行命名处理,得到命名后的差异场景文件,还包括:计算所述当前文件中的当前公共文件对应的第二关联加密数值,和所述更新文件中的更新公共文件对应的第二目标关联加密数值,并检测所述第二关联加密数值与所述第二目标关联加密数值是否相同;若所述第二关联加密数值与所述第二目标关联加密数值不相同,则保存所述第二关联加密数值和与所述第二关联加密数值对应的当前公共关联资源,并将所述第二目标关联加密数值对应的公共关联资源作为差异公共资源;基于所述差异公共资源生成差异公共文件。

在本公开的一些示例实施例中,基于前述方案,所述方法还包括:获取预设的打包参数,并基于所述打包参数对所述差异场景文件、差异脚本文件、差异公共文件分别进行打包处理,得到差异场景文件压缩包、差异脚本文件压缩包、差异公共文件压缩包;基于所述差异场景文件压缩包、差异脚本文件压缩包、差异公共文件压缩包,生成增量更新资源包,并将所述增量更新资源包发送到所述客户端以更新所述应用程序。

在本公开的一些示例实施例中,基于前述方案,所述方法还包括:获取所述增量更新资源包以及所述增量更新资源包对应的资源关联文件和资源映射关系;基于所述资源关联文件从所述增量更新资源包中确定所述历史版本号中的基础版本号,以及确定由所述基础增量更新资源包更新到所述更新资源包对应的最长增量更新资源链;基于所述资源映射关系检测所述最长增量更新资源链中是否存在资源包,所述资源包中所有资源被所述增量更新资源包中的资源覆盖;若所述最长增量更新资源链中存在所述资源包,则将所述资源包标记为冗余更新资源包。

根据本公开实施例的第三方面,提供了一种应用程序更新装置,应用于客户端,包括:版本号比对模块,用于响应于启动应用程序,将所述应用程序的当前版本号与服务端中存储的所述应用程序的最新版本号进行比对;增量更新资源包获取模块,用于若所述当前版本号与所述最新版本号的比对结果为不同,则从所述服务端获取所述应用程序的各个版本号对应的增量更新资源包和所述增量更新资源包对应的资源包关联文件;目标增量更新资源包确定模块,用于根据所述资源包关联文件确定所述增量更新资源包对应的标识数据,并基于所述标识数据从所述增量更新资源包中确定与所述最新版本号对应的目标增量更新资源包;应用程序更新模块,用于通过所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为所述最新版本号对应的应用程序。

在本公开的一种示例性实施例中,基于前述方案,所述目标增量更新资源包确定模块还包括目标增量更新资源包确定单元,所述目标增量更新资源包确定单元,用于基于所述资源包关联文件加载通过所述服务端下发的增量更新资源包,并确定所述增量更新资源包对应的资源列表;根据所述资源列表确定所述增量更新资源包对应的资源映射关系,并基于所述资源映射关系确定所述增量更新资源包对应的标识数据;基于所述增量更新资源包对应的标识数据确定所述各个版本号对应的新增资源包和与所述最新版本号对应的目标更换资源包。

在本公开的一种示例性实施例中,基于前述方案,所述应用程序更新模块还包括应用程序更新单元,所述应用程序更新单元,用于下载所述增量更新资源包,并删除所述增量更新资源包中除所述目标增量更新资源包之外的冗余更新资源包;重新启动所述应用程序以根据所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为与所述最新版本号对应的应用程序。

根据本公开实施例的第四方面,提供了一种应用程序更新装置,应用于服务端,包括:资源包获取模块、差异文件生成模块、增量更新资源包生成模块;所述资源包获取模块,用于获取所述应用程序的历史版本号对应的当前资源包,以及与所述应用程序对应的最新版本号的更新资源包;所述差异文件生成模块,用于将所述当前资源包中的当前文件与所述更新资源包中的更新文件进行比对处理,得到差异文件;所述增量更新资源包生成模块,用于基于所述差异文件生成各个版本号对应的应用程序的增量更新资源包以根据所述增量更新资源包实现将所述历史版本号对应的应用程序跳跃更新为与所述最新版本号对应的应用程序,所述各个版本号包括所述历史版本号和最新版本号。

在本公开的一种示例性实施例中,基于前述方案,所述差异文件生成模块还包括差异脚本文件生成单元,所述差异脚本文件生成单元,用于获取所述当前文件中当前脚本文件对应的当前加密数值以及所述更新文件中更新脚本文件对应的加密数值,并检测所述当前加密数值是否与所述加密数值是否相同;若所述当前加密数值和所述加密数值不相同,则将所述更新脚本文件作为差异脚本文件。

在本公开的一种示例性实施例中,基于前述方案,所述差异文件生成模块还包括差异场景文件生成单元,所述差异场景文件生成单元,用于通过接口计算所述当前文件中的当前场景文件对应的第一关联加密数值,以及计算所述更新文件中的更新场景文件对应的第一目标关联加密数值,并检测所述第一关联加密数值与所述第一目标关联加密数值是否相同;若所述第一关联加密数值与所述第一目标关联加密数值不相同,则保存所述第一关联加密数值和与所述第一关联加密数值对应的当前场景关联资源,并将所述第一目标关联加密数值对应的场景关联资源作为差异场景资源;基于所述差异场景资源生成差异场景文件,并确定生成所述差异场景文件的时间戳,以及所述当前场景文件对应的场景文件名称;基于所述场景文件名称和时间戳对所述差异场景文件进行命名处理,得到命名后的差异场景文件。

在本公开的一种示例性实施例中,基于前述方案,所述差异文件生成模块还包括差异公共文件生成单元,所述差异公共文件生成单元,用于通过所述接口计算所述当前文件中的当前公共文件对应的第二关联加密数值,和所述更新文件中的更新公共文件对应的第二目标关联加密数值,并检测所述第二关联加密数值与所述第二目标关联加密数值是否相同;若所述第二关联加密数值与所述第二目标关联加密数值不相同,则保存所述第二关联加密数值和与所述第二关联加密数值对应的当前公共关联资源,并将所述第二目标关联加密数值对应的公共关联资源作为差异公共资源;基于所述差异公共资源生成差异公共文件。

在本公开的一种示例性实施例中,基于前述方案,所述增量更新资源包生成模块还包括增量更新资源包生成单元,所述增量更新资源包生成单元,用于获取预设的打包参数,并基于所述打包参数对所述差异场景文件、差异脚本文件、差异公共文件分别进行打包处理,得到差异场景文件压缩包、差异脚本文件压缩包、差异公共文件压缩包;基于所述差异场景文件压缩包、差异脚本文件压缩包、差异公共文件压缩包,生成增量更新资源包,并将所述增量更新资源包发送到所述客户端以更新所述应用程序。

在本公开的一种示例性实施例中,基于前述方案,增量更新资源包确定模块还包括冗余更新资源包确定单元,所述冗余更新资源包确定单元用于获取所述增量更新资源包以及所述增量更新资源包对应的资源关联文件和资源映射关系;基于所述资源关联文件从所述增量更新资源包中确定所述历史版本号中的基础版本号和所述基础版本号对应的基础增量更新资源包,以及确定由所述基础增量更新资源包更新到所述更新资源包对应的最长增量更新资源链;基于所述资源映射关系检测所述最长增量更新资源链中是否存在资源包,所述资源包中所有资源被所述增量更新资源包中的资源覆盖;若所述最长增量更新资源链中存在所述资源包,则将所述资源包标记为冗余更新资源包。

根据本公开实施例的第五方面,提供了一种电子设备,包括:处理器;以及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现上述任意一项所述的应用程序更新方法。

根据本公开实施例的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据上述任意一项所述的应用程序更新方法。

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

本公开的示例实施例中的应用程序更新方法,响应于启动应用程序,将所述应用程序的当前版本号与服务端中存储的所述应用程序的最新版本号进行比对;若所述当前版本号与所述最新版本号的比对结果为不同,则从所述服务端获取所述应用程序的各个版本号对应的增量更新资源包和所述增量更新资源包对应的资源包关联文件;根据所述资源包关联文件确定所述增量更新资源包对应的标识数据,并基于所述标识数据从所述增量更新资源包中确定与所述最新版本号对应的目标增量更新资源包;通过所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为所述最新版本号对应的应用程序。一方面,通过从服务端获取应用程序对应的增量更新资源包以及增量资源包对应的资源包关联文件,并根据资源包关联文件确定增量更新资源包对应的标识数据,基于增量更新资源包对应的标识数据可以从增量更新资源包中确定目标增量更新资源包,进而可以根据目标增量更新资源包中的资源将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序,并不需要按照应用程序的更新顺序,逐次将应用程序更新为最新版本,进而提高了应用程序的更新效率;另一方面,从增量更新资源包中确定目标增量更新资源包,可以过滤增量更新资源包中过期的更新资源包,提高了对增量更新资源包的管理效率。

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

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示意性示出了根据本公开的一些实施例的应用程序更新方法流程的示意图;

图2示意性示出了根据本公开的一些实施例的目标增量更新资源包生成方法流程的示意图;

图3示意性示出了根据本公开的一些实施例的生成增量更新资源包的流程的示意图;

图4示意性示出了根据本公开的一些实施例的生成差异脚本文件的流程的示意图;

图5示意性示出了根据本公开的一些实施例的生成差异场景文件的流程的示意图;

图6示意性示出了根据本公开的一些实施例的生成差异公共文件的流程的示意图;

图7示意性示出了根据本公开的一些实施例的识别增量更新资源包中冗余更新资源方法的流程的示意图;

图8示意性示出了根据本公开的一些实施例的应用程序更新装置的示意图;

图9示意性示出了根据本公开的一些实施例的另一种应用程序更新装置的示意图;

图10示意性示出了根据本公开的一些实施例的电子设备的计算机系统的结构示意图;

图11示意性示出了根据本公开的一些实施例的计算机可读存储介质的示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。

此外,附图仅为示意性图解,并非一定是按比例绘制。附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

在本示例实施例中,首先提供了一种应用程序更新方法,该应用程序更新方法可以应用于客户端,客户端可以是终端设备,例如手机、电脑等电子设备。图1示意性示出了根据本公开的一些实施例的应用程序更新方法流程的示意图。参考图1所示,该应用程序更新方法可以包括以下步骤:

步骤s110,响应于应用程序的启动,将所述应用程序的当前版本号与服务端中存储的所述应用程序的最新版本号进行比对;

步骤s120,若所述当前版本号与所述最新版本号的比对结果为不同,则从所述服务端获取所述应用程序的各个版本号对应的增量更新资源包和所述增量更新资源包对应的资源包关联文件;

步骤s130,根据所述资源包关联文件确定所述增量更新资源包对应的标识数据,并基于所述标识数据从所述增量更新资源包中确定与所述最新版本号对应的目标增量更新资源包;

步骤s140,通过所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为所述最新版本号对应的应用程序。

根据本示例实施例中的应用程序更新方法,一方面,通过从服务端获取应用程序对应的增量更新资源包以及增量资源包对应的资源包关联文件,并根据资源包关联文件确定增量更新资源包对应的标识数据,基于标识数据从增量更新资源包确定目标增量更新资源包,进而可以根据目标增量更新资源包实现将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序,并不需要按照应用程序的更新顺序,逐次将应用程序更新为最新版本,进而提高了应用程序的更新效率;另一方面,从增量更新资源包中确定目标增量更新资源包,可以过滤增量更新资源包中过期的更新资源包,提高了对增量更新资源包的管理效率。

下面,将对本示例实施例中的应用程序更新方法进行进一步的说明。

在步骤s110中,响应于应用程序的启动,将所述应用程序的当前版本号与服务端中存储的所述应用程序的最新版本号进行比对。

在本公开的一个示例实施例中,应用程序可以指基于android(安卓)系统的应用程序,也可以指基于ios(苹果公司开发的操作系统)的应用程序,本例实施例对此不作特殊限定。

当前版本号可以指当前应用程序的发版版本号,例如,当前版本号可以是gnu(基于gpl(generalpubliclicense,最常见的开源协议)方式发布的版本)风格的版本号,也可以是windows风格的版本号,还可以是netframework风格的版本号,当然,当前版本号还可以是当前其他测试版本的版本号,本例实施例对此不作不作特殊限定。

最新版本号可以是对当前版本号对应的应用程序进行修正或功能更新后,该应用程序对应的更新版本号,例如,最新版本号可以是与gnu风格的当前版本号对应的gnu风格的更新版本号,也可以是对windows风格的当前版本号对应的windows风格的更新版本号,还可以是与netframework风格的当前版本号对应的netframework风格的更新版本号,当然,最新版本还号还可以是其他与当前测试版本号对应的更新版本号,本例实施例对此不作特殊限定。

可以通过将应用程序的当前版本号与服务端存储的最新版本号进行比对,检测当前版本的应用程序是否需要进行更新;若应用程序的当前版本号与最新版本号不同时,可以获取服务端制作的增量更新资源包和增量更新资源包对应的资源包关联文件,根据资源包关联文件从增量更新资源包中确定用于将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序的目标增量更新资源包。

在步骤s120中,若所述当前版本号与所述最新版本号的比对结果为不同,则从所述服务端获取所述应用程序的各个版本号对应的增量更新资源包和所述增量更新资源包对应的资源关联文件。

在本公开的一个示例实施例中,增量更新资源包可以指由相比于当前版本号对应的应用程序,更新版本号对应的应用程序中新增的资源或更新的资源组成的更新资源包,例如增量更新资源包可以是更新场景资源包、也可以是更新脚本资源包,还可以是更新公共资源包,当然,增量更新资源包还可以是其他更新资源包如更新脚本资源包、更新场景资源包、更新公共资源包任意两项组合的更新资源包,或由更新脚本资源包、更新场景资源包、更新公共资源包组成的更新资源包,其中更新公共资源包可以是除更新场景资源包以及更新脚本资源包中不存在的资源构成的资源包,本例实施例对此不作特殊限定。

资源关联文件可以指包含增量更新资源包的相关信息的文件,例如,资源关联文件可以是包含当前版本号的应用程序对应的增量更新资源包中的关联文件,以及历史版本号的应用程序对应的增量更新资源包中的关联文件,资源关联文件也可以是包含当前版本号的应用程序对应的增量更新资源包的名称以及增量更新资源包中资源对应的加密值的关联文件,资源关联文件还可以是包含增量更新资源包中过期资源包对应的名称的关联文件,当然,资源关联文件还可以是包含增量更新资源包的其他相关信息的文件如增量更新资源包的大小的关联文件,本例实施例对此不作特殊限定。

优选的,可以根据增量更新资源包对应的资源关联文件确定过期资源包对应的名称,以及增量更新资源包对应的应用程序的更新版本号和增量更新资源包对应的应用程序的历史版本号,进而可以从增量更新资源包中确定除去过期资源包对应的目标增量更新资源包。

在步骤s130中,根据所述资源包关联文件确定所述增量更新资源包对应的标识数据,并基于所述标识数据从所述增量更新资源包中确定与所述最新版本号对应的目标增量更新资源包。

在本公开的一个示例实施例中,标识数据可以指增量更新资源包中资源包对应的标签数据,例如,标识数据可以是增量更新资源包中资源包对应的过期标签数据,标识数据也可以是增量更新资源包中资源包对应的新增标签数据,标识数据还可以是增量更新资源包中资源包对应的更新标签数据,当然,标识数据还可以是增量更新资源包中资源包对应的其他标签数据,本例实施例对此不作特殊限定。

目标增量更新资源包可以指用于将当前版本号对应的应用程序跳转更新为最新版本号对应的应用程序的资源包,例如,目标增量更新资源包可以是包含用于将当前版本号对应的应用程序跳转更新为最新版本号对应的应用程序的脚本资源包,也可以是包含用于将当前版本号对应的应用程序跳转更新为最新版本号对应的应用程序的场景资源包,还可以是包含用于将当前版本号对应的应用程序跳转更新为最新版本号对应的应用程序的公共资源包,当然,目标增量更新资源包还可以是包含用于将当前版本号对应的应用程序跳转更新为最新版本号对应的应用程序的脚本资源包、场景资源包,以及公共资源包,本例实施例对此不作特殊限定。

优选的,可以根据增量更新资源包对应的资源关联文件,将增量更新资源包中多个连续的更新版本号对应的应用程序的资源进行合并,并根据增量更新资源包对应的标识数据从增量更新资源包中删除过期资源包,进而可以得到用于将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序对应的所有目标增量更新资源包,进而加载目标增量更新资源包中的资源,实现将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序,提高了应用程序的更新效率。

在步骤s140中,通过所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为所述最新版本号对应的应用程序。

在本公开的一个示例实施例中,由于目标增量更新资源包是根据增量更新资源包对应的标识数据,对增量更新资源包中的非过期资源包进行合并,并删除增量更新资源包中的过期资源包得到用于将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序的新增资源以及目标更换资源,并不包含将当前版本号对应的应用程序更新为在当前版本号和最新版本号之间的其他版本号对应的资源,基于由新增资源以及目标更换资源构成的目标增量更新资源包,实现将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序。

考虑到活跃玩家可以根据最新版本号对应的应用程序的增量更新资源包,直接将与当前版本号对应的应用程序更新为与最新版本号对应的应用程序,而不活跃玩家需要通过应用程序的历史增量更新资源包将历史版本号对应的应用程序逐级更新,最终将历史版本号对应的应用程序更新为与最新版本号对应的应用程序,需要下载较多的增量更新资源包,且应用程序的更新效率较低。

优选的,针对以上问题,可以通过增量更新资源包对应的资源包关联文件确定增量更新资源包中资源包的标识数据,基于增量更新资源包中资源包对应的标识数据从增量更新资源包中得到用于将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序对应的目标增量更新资源包,避免加载冗余的更新资源,通过加载目标增量更新资源包中新增资源以及与最新版本号对应的更新资源,可以实现将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序。

图2示意性示出了根据本公开的一些实施例的目标增量更新资源包生成方法流程的示意图。参考图2所示,该目标增量更新资源包生成方法可以包括以下步骤:

在步骤s210中,基于所述资源包关联文件加载通过所述服务端下发的增量更新资源包,并确定所述增量更新资源包对应的资源列表;

在步骤s220中,根据所述资源列表确定所述增量更新资源包对应的资源映射关系,并基于所述资源映射关系确定所述增量更新资源包对应的标识数据;

在步骤s230中,基于所述增量更新资源包对应的标识数据确定所述各个版本号对应的新增资源包和与所述最新版本号对应的目标更换资源包。

其中,资源列表可以指包含目标增量更新资源包名称的列表,例如,资源列表可以是包含目标增量更新资源包对应的脚本资源包的名称的列表,也可以是包含目标增量更新资源包对应的场景资源包的名称的列表,还可以是包含目标增量更新资源包对应的公共资源包对应的名称的列表,本例实施例对此不作特殊限定。

资源映射关系可以指增量更新资源包中的资源与增量更新资源包的映射关系,例如,资源映射关系可以是增量更新资源包中资源与增量更新资源包的版本号之间的映射关系,也可以是增量更新资源包中资源与资源相关的其他关联资源之间的映射关系,还可以是增量更新资源包中资源与存储资源的文件名称之间的映射关系,当然,资源映射关系还可以是增量更新资源包中资源与增量更新资源包的其他映射关系,本例实施例对此不作特殊限定。

新增资源包可以指将当前版本号对应的应用程序跳转更新至最新版本号对应的应用程序中所有新增的资源构成的资源包,例如,当前版本号为1.2.0,版本号为1.2.1的应用程序相比于当前版本号对应的应用程序新增了资源a,版本号为1.2.2的应用程序相比于版本号为1.2.1的应用程序新增了资源a1,最新版本号为1.2.3的应用程序相比于版本号为1.2.2的应用程序新增了资源a2,则新增资源包是包含资源a、资源a1、资源a2的资源包,当然,新增资源包还可以是其他新增资源构成的新增资源包,如新增资源包可以是由新增的脚本文件构成的资源包,也可以是由新增的场景文件构成的资源包,还可以是由新增的公共文件构成的资源包,当然,新增资源包还可以是由新增的脚本文件、新增的场景文件以及新增的公共文件构成的资源包,本例实施例对此不作特殊限定。

目标更换资源包可以指将当前版本号对应的应用程序中的资源跳转更新为最新资源对应的更换资源包,例如,当前版本号为1.2.0,版本号为1.2.1的应用程序将当前版本号对应的应用程序中的资源a更新为资源a1,版本号为1.2.2的应用程序将版本号为1.2.1的应用程序中的资源a1更新为资源a2,最新版本号为1.2.3的应用程序将版本号为1.2.2的应用程序中的资源a2更新为资源a3,则目标更换资源包是只包含资源a3的资源包,当然,目标更换资源包还可以是将当前版本号对应的应用程序中的其他资源跳转更新为最新资源对应的更新资源包,如目标更换资源包可以是将当前版本号对应的应用程序中的脚本资源跳转更新为最新脚本资源对应的资源包,或目标更换资源包可以是将当前版本号对应的应用程序中的场景资源跳转更新为最新场景资源对应的资源包,本例实施例对此不作特殊限定。

优选的,可以根据增量更新资源包对应的资源映射关系,从增量更新资源包中筛选出将当前版本号对应的应用程序更新为最新版本号对应的应用程序的新增资源包和目标更换资源包,进而将新增资源包和目标更换资源包进行合并作为将当前版本号对应的应用程序直接更新为最新版本号对应的应用程序的目标增量更新资源包,极大的减少了将当前版本号对应的应用程序更新为最新版本号对应的应用程序的更新资源包的大小,提高了应用程序的更新效率。

在本公开的一种示例性实施例中,可以下载增量更新资源包,并删除增量更新资源包中除目标增量更新资源包之外的冗余更新资源包,进而在重新启动应用程序的过程中,根据目标增量更新资源包中的新增资源以及更新资源,将当前版本号对应的应用程序跳跃更新为与最新版本号对应的应用程序。

其中,冗余更新资源包可以指所有资源被最新版本号对应的增量更新资源包所覆盖的更新资源包,例如,冗余更新资源包可以是所有资源被最新版本号对应的增量更新资源包所覆盖的脚本更新资源包,如版本号为9441的脚本资源luapathc_9441中仅包含a,b资源,而版本号为10458的脚本资源luapathc_10458中内容包含a,b,c,d资源,则luapathc_9441中资源a和资源b为冗余资源,存储对应的资源a和资源b的资源包luapathc_9441为冗余更新资源包。当然,冗余更新资源包也可以是包含所有资源被最新版本号对应的增量更新资源包所覆盖的场景更新资源包,冗余更新资源包还可以是所有资源被最新版本号对应的增量更新资源包所覆盖的公共更新资源包,本例实施例对此不作特殊限定。

优选的,可以根据增量更新资源包对应的映射关系,从增量更新资源包中筛选出用于将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序的资源如新增资源和目标更换资源,进而将增量更新资源包中除新增资源和目标更换资源之外的资源进行标记生成过期资源,进而将过期资源打包生成冗余更新资源包,进而在将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序的过程中,可以删除冗余更新资源包,从而在重新启动应用程序的过程中,通过加载目标增量更新资源包中的资源,实现将当前版本号对应的应用程序直接跳跃更新为与最新版本号对应的应用程序,减少了客户端下载的文件大小,提高了应用程序的更新效率。

在本示例实施例中,还提供了一种应用程序更新方法,该应用程序更新方法可以应用于服务端,图3示意性示出了根据本公开的一些实施例的生成增量更新资源包的流程的示意图。参考图3所示,该生成增量更新资源包方法可以包括以下步骤:

在步骤s310中,获取所述应用程序的历史版本号对应的当前资源包,以及与所述应用程序对应的最新版本号的更新资源包;

在步骤s320中,将所述当前资源包中的当前文件与所述更新资源包中的更新文件进行比对处理,得到差异文件;

在步骤s330中,基于所述差异文件生成各个版本号对应的应用程序的增量更新资源包以根据所述增量更新资源包将所述历史版本号对应的应用程序跳跃更新为与所述最新版本号对应的应用程序,所述各个版本号包括所述历史版本号和最新版本号。

其中,当前资源包可以指历史版本号对应的应用程序的资源包,例如,历史版本号为9441,当前资源包可以是版本号为9441对应的应用程序的资源包,具体的,当前资源包可以是包含当前版本号对应的应用程序的脚本资源的资源包,也可以是包含当前版本号对应的应用程序的场景资源的资源包,还可以是包含当前版本号对应的应用程序的公共资源的资源包,本例实施例对此不作特殊限定。

更新资源包可以指在历史版本号对应的应用程序的基础上进行初步更新的资源包,例如,历史版本号为9441,历史版本号9441对应的最新版本号为9443,更新资源包可以是在版本号为9441的应用程序的基础上将该应用程序进一步更新,得到的更新版本号为9443对应的应用程序的资源包,具体的,更新资源包可以是包含更新版本号对应的应用程序的脚本资源的资源包,也可以是包含更新版本号对应的应用程序的场景资源的资源包,还可以是包含更新版本号对应的应用程序的公共资源的资源包,本例实施例对此不作特殊限定。

差异文件可以指将当前资源包中的文件与更新资源包中的文件进行比对处理得到的区别文件,例如,当前版本号为9441,当前资源包luapatch_9441中包含脚本文件a,其中,脚本文件a对应的加密数值为a9f01053d7143414e52c09fbd,在当前版本号9441的应用程序的基础上,将该应用程序进一步更新得到与当前版本号对应的更新版本号为9443的应用程序,更新后的应用程序对应的更新脚本资源包luapatch_9443中包含脚本文件b,其中,脚本文件b对应的加密数值为6cace6599e5657e0e1cf80657,通过将脚本资源包luapatch_9441中的脚本文件a对应的加密数值和luapatch_9443对应的脚本文件b的加密数值进行比对处理,由于脚本文件a和脚本文件b的加密数值不同,将脚本文件b对应的加密数值保存到差异脚本文件夹中,并将脚本文件b作为差异脚本文件,并将差异脚本文件命名为luapatch_9443。

同理,可以通过接口计算当前版本号对应的应用程序的场景文件对应的加密数值和更新版本号对应的应用程序的场景文件对应的加密数值,并将当前版本号的场景文件对应的加密数值与更新版本号的场景文件对应的加密数值进行比对处理,若比对结果不同,则将更新版本号的场景文件作为差异场景文件,也可以通过接口计算当前版本号对应的应用程序的公共文件对应的加密数值和更新版本号对应的应用程序的公共文件对应的加密数值,并将当前版本号的公共文件对应的加密数值与更新版本号的公共文件对应的加密数值进行比对处理,若比对结果不同,则将更新版本号的公共文件作为差异公共文件。

优选的,可以将应用程序的当前资源包中的当前文件划分为场景文件、脚本文件和公共文件,同时也将更新资源包中的更新文件分为场景文件、脚本文件和公共文件,进一步可以通过将当前资源包中的当前文件与更新资源包中的与当前文件类型相同的更新文件进行比对处理,得到差异文件,进而在当前版本号对应的应用程序的基础上,得到更新版本号对应的应用程序的增量更新资源包,基于增量更新资源包对应的资源映射关系,依次下载增量更新资源包中的资源,实现将当前版本号对应的应用程序跳跃更新为与最新版本号对应的应用程序,并不需要将每个更新版本的应用程序对应的资源进行外放,减少了用户下载的更新文件的大小,提高了应用程序的更新效率。

图4示意性示出了根据本公开的一些实施例的生成差异脚本文件的流程的示意图。参考图4所示,该生成差异脚本文件方法可以包括以下步骤:

在步骤s410中,获取所述当前文件中当前脚本文件对应的当前加密数值以及所述更新文件中更新脚本文件对应的加密数值,并检测所述当前加密数值是否与所述加密数值是否相同;

在步骤s420中,若所述当前加密数值和所述加密数值不相同,则将所述更新脚本文件作为差异脚本文件。

其中,当前加密数值可以指对当前脚本文件进行加密处理得到的密钥值,例如,当前加密数值可以是当前脚本文件对应的md5(message-digestalgorithm5,信息-摘要算法)值,当然,当前加密数值还可以是当前脚本文件对应的其他hash(哈希)数值,本例实施例对此不作特殊限定。加密数值可以指在当前脚本文件的基础上进行更新得到的更新脚本文件对应的密钥值。

举例而言,应用程序的当前版本号为9441,当前资源包luapatch_9441中包含脚本文件a,其中,脚本文件a对应的加密数值为a9f01053d7143414e52c09fbd,在当前版本号9441的应用程序的基础上,将该应用程序进一步更新得到更新版本号为9443的应用程序,更新后的应用程序对应的更新脚本资源包luapatch_9443中包含脚本文件b,其中,脚本文件b对应的加密数值为6cace6599e5657e0e1cf80657,通过将脚本资源包luapatch_9441中的脚本文件a对应的加密数值和luapatch_9443对应的脚本文件b的加密数值进行比对处理,由于脚本文件a和脚本文件b的加密数值不同,则将脚本文件b作为差异脚本文件,进而可以将包含脚本文件b的更新资源包对应的版本号作为目标版本号,即目标版本号为9443,并将差异脚本文件进行压缩处理得到脚本资源包,可以将脚本资源包命名为lua_9443。

可选的,可以通过将当前脚本文件对应的当前加密数值与更新脚本文件对应的加密数值进行比对处理,若比对结果不同,则保存当前脚本文件对应的加密数值,并将发生变化的脚本文件即更新脚本文件进行加密处理,并将更新脚本文件作为差异脚本文件;同时,确定包含更新文件的资源包对应的版本号,将该版本号作为目标版本号,并基于目标版本号对差异脚本文件构成的脚本资源包进行命名处理,得到增量更新脚本资源包。

图5示意性示出了根据本公开的一些实施例的生成差异场景文件的流程的示意图。参考图5所示,该生成差异场景文件方法可以包括以下步骤:

在步骤s510中,通过接口计算所述当前文件中的当前场景文件对应的第一关联加密数值,以及计算所述更新文件中的更新场景文件对应的第一目标关联加密数值,并检测所述第一关联加密数值与所述第一目标关联加密数值是否相同;

在步骤s520中,若所述第一关联加密数值与所述第一目标关联加密数值不相同,则保存所述第一关联加密数值和与所述第一关联加密数值对应的当前场景关联资源,并将所述第一目标关联加密数值对应的场景关联资源作为差异场景资源;

在步骤s530中,基于所述差异场景资源生成差异场景文件,并确定所述当前场景文件对应的场景文件名称,以及生成所述差异场景文件的时间戳;

在步骤s540中,基于所述场景文件名称和时间戳对所述差异场景文件进行命名处理,得到命名后的差异场景文件。

其中,第一关联加密数值可以指与当前场景文件的当前资源关联的资源对应的加密数值,例如,当前场景文件包含当前材质资源a和纹理资源b,其中,当前场景文件中的纹理b被材质a引用,即资源a和资源b之间存在依赖关系,接口可以维护资源之间的引用(依赖)关系,进而可以通过接口计算某个资源对应的依赖资源对应的加密数值,如接口可以计算材质a对应的依赖资源b的hash数值,第一关联加密数值可以是依赖资源b的hash数值,当然,第一关联加密数值还可以指当前场景资源包中其他资源对应的依赖资源对应的加密数值,本例实施例对此不作特殊限定。

当前场景关联资源可以指在当前场景文件中目标资源对应的关联资源,例如,当前场景文件中的纹理b被材质a引用,即目标资源a和资源b之间存在依赖关系,当前场景文件中的资源b可以是当前场景文件中材质a对应的关联资源,当然,当前场景关联资源还可以是当前场景文件中其他资源对应的关联资源,本例实施例对此不作特殊限定。

第一目标关联加密数值可以指在更新场景文件中与目标资源关联的资源对应的加密数值,例如,更新场景文件包含资源b和资源c,其中,更新场景文件中的资源b被资源c引用,即更新资源b和更新资源c之间存在依赖关系,由于接口可以维护资源之间的引用(依赖)关系,进而可以基于接口计算某个资源对应的依赖资源对应的加密数值,如接口可以计算目标资源c对应的依赖资源b的hash数值,第一目标关联加密数值可以是依赖资源b的hash数值,当然,第一目标关联加密数值还可以是更新场景资源包中其他资源对应的依赖资源对应的加密数值,本例实施例对此不作特殊限定。

场景关联资源可以指在更新场景文件中目标资源对应的关联资源,例如,更新场景文件中的纹理b被模型c引用,即资源b和目标资源c之间存在依赖关系,更新场景文件中的纹理b可以是更新场景文件中资源c对应的关联资源,当然,场景关联资源还可以是场景文件中其他资源对应的关联资源,本例实施例对此不作特殊限定。

优选的,可以通过接口计算当前场景文件中资源对应的依赖资源的第一关联加密数值和更新场景文件中资源对应的依赖资源的第一目标关联加密数值,进而将第一关联加密数值与第一目标关联加密数值进行比对处理,若比对结果不同,则保存当前场景文件中的引用资源以及引用资源对应的当前场景关联资源,并将更新场景文件中发生变化的第一目标关联加密数值对应的资源作为差异场景资源,并基于该差异场景资源生成差异场景文件;同时,根据生成差异文件对应的时间戳以及当前场景文件对应的名称,对差异场景文件进行命名,得到命名后的差异场景文件;从而,可以根据差异场景文件的名称对压缩处理后的增量更新场景资源包进行命名处理,得到命名后的增量更新场景资源包。

图6示意性示出了根据本公开的一些实施例的生成差异公共文件的流程的示意图。参考图6所示,该生成差异公共文件方法可以包括以下步骤:

在步骤s610中,通过所述接口计算所述当前文件中的当前公共文件对应的第二关联加密数值,和所述更新文件中的更新公共文件对应的第二目标关联加密数值,并检测所述第二关联加密数值与所述第二目标关联加密数值是否相同;

在步骤s620中,若所述第二关联加密数值与所述第二目标关联加密数值不相同,则保存所述第二关联加密数值和与所述第二关联加密数值对应的当前公共关联资源,并将所述第二目标关联加密数值对应的公共关联资源作为差异公共资源;

在步骤s630中,基于所述差异公共资源生成差异公共文件。

其中,第二关联加密数值可以指与当前公共文件的目标资源关联的资源对应的加密数值,例如,当前公共文件包含当前资源w和当前资源r,其中,当前公共文件中的资源w被目标资源r引用,即资源w和目标资源r之间存在依赖关系,接口可以维护资源之间的引用(依赖)关系,进而可以计算某个资源对应的依赖资源对应的加密数值,如接口可以计算目标资源r对应的依赖资源w的hash数值,第二关联加密数值可以是依赖资源w的hash数值,当然,第二关联加密数值还可以指当前公共资源包中其他资源对应的依赖资源对应的加密数值,本例实施例对此不作特殊限定。

当前公共关联资源可以指在当前公共文件中资源对应的关联资源,例如,当前公共文件中的资源w被资源r引用,即资源w和资源r之间存在依赖关系,当前公共文件中的资源w可以是当前公共文件中资源r对应的关联资源,当然,当前公共关联资源还可以是当前公共文件中其他资源对应的关联资源,本例实施例对此不作特殊限定。

第二目标关联加密数值可以指在更新公共文件中与目标资源关联的资源对应的加密数值,例如,更新公共文件包含资源w和目标资源e,其中,更新公共文件中的资源w被目标资源e引用,即资源w和资源e之间存在依赖关系,接口可以维护资源之间的引用(依赖)关系,进而可以计算目标资源对应的依赖资源对应的加密数值,如接口可以计算目标资源e对应的依赖资源w的hash数值,第二目标关联加密数值可以是依赖资源w的hash数值,当然,第二目标关联加密数值还可以是更新公共资源包中其他资源对应的依赖资源对应的加密数值,本例实施例对此不作特殊限定。

公共关联资源可以指在更新公共文件中目标资源对应的关联资源,例如,更新公共文件中的资源w被目标资源e引用,即资源w和目标资源e之间存在依赖关系,资源w可以是更新公共文件中的资源c对应的关联资源,当然,公共关联资源还可以是公共文件中其他资源对应的关联资源,本例实施例对此不作特殊限定。

优选的,可以通过接口维护当前公共文件中所有资源之间的依赖关系以及更新公共文件中所有资源对应的依赖关系,以及通过接口计算当前公共文件中目标资源对应的依赖资源的第二关联加密数值和更新公共文件中目标资源对应的依赖资源的第二目标关联加密数值,进而将第二关联加密数值与第二目标关联加密数值进行比对处理,若比对结果不同,则保存当前公共文件中的引用资源以及引用资源对应的当前公共资源,并将更新公共文件中发生变化的第二目标关联加密数值对应的资源作为差异公共资源,并基于该差异公共资源生成差异公共文件。

在本公开的一种示例性实施例中,可以设置打包参数,并基于打包参数对差异场景文件、差异脚本文件、差异公共文件分别进行打包处理,得到差异场景文件压缩包、差异脚本文件压缩包、差异公共文件压缩包;基于差异场景文件压缩包、差异脚本文件压缩包、差异公共文件压缩包,生成增量更新资源包,并将增量更新资源包发送到所述客户端以更新所述应用程序。

其中,考虑到使用buildassetbundleoptions(描述资源包构建选项)参数和disablewritetypetree(版本兼容)参数,当不同的版本号对应的增量更新资源包包含同名资源时,会导致同名资源加载失败的问题,可以去除buildassetbundleoptions参数和disablewritetypetree(参数,并通过lz4(assetbundle压缩方式,使用该方式压缩时,当从assetbundle读取一个资源时,只会解压指定资源)的压缩方式对差异脚本文件、差异场景文件以及差异公共文件分别进行压缩处理,得到差异场景文件压缩包、差异脚本文件压缩包、差异公共文件压缩包,且assetbundle是unity(游戏开发)资源包,一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载。

优选的,可以通过获取预设的打包参数,将各个版本号对应的差异脚本文件、差异场景文件、差异公共文件进行压缩处理得到差异脚本文件压缩包、差异场景文件压缩包、差异公共文件压缩包,并基于相同版本号对应的差异脚本文件压缩包、差异场景文件压缩包、差异公共文件压缩包生成该版本号对应的增量更新资源包,并将增量更新资源包发送到客户端,以供客户端下载用于将当前版本号对应的应用程序跳跃更新为与最新版本号对应的应用程序的目标增量更新资源包。

图7示意性示出了根据本公开的一些实施例的识别增量更新资源包中冗余更新资源方法的流程的示意图。参考图7所示,该识别增量更新资源包中冗余更新资源方法可以包括以下步骤:

在步骤s710中,获取所述增量更新资源包以及所述增量更新资源包对应的资源关联文件和资源映射关系;

在步骤s720中,基于所述资源关联文件从所述增量更新资源包中确定所述历史版本号中的基础版本号和所述基础版本号对应的基础增量更新资源包,以及确定由所述基础增量更新资源包更新到所述最新版本号对应的更新资源包对应的最长增量更新资源链;

在步骤s730中,基于所述资源映射关系检测所述最长增量更新资源链中是否存在资源包,所述资源包中所有资源被所述更新资源包中的资源覆盖;

在步骤s740中,若所述最长增量更新资源链中存在所述资源包,则将所述资源包标记为冗余更新资源包。

其中,最长增量更新资源链可以指从应用程序对应的基础版本号开始直到最新版本号对应的所有版本号以及所有版本号对应的资源包构成的增量更新资源链,例如,当前版本号为9441,当前版本号9441对应的基础版本号为9439,该基础版本号9439对应的更新版本号为9440,该更新版本号9440对应的后续更新版本号为9441,更新版本号9441对应的后续更新版本号为9443,更新版本号9443对应的后续更新版本号为10458,根据版本号的更新顺序,最长增量更新资源链可以是9439-<9440-<9441-<9443-<10458。基础增量更新资源包可以指基础版本号为9439对应的增量更新资源包,而更新资源包可以指版本号为10458对应的增量更新资源包,且在更新资源包前为进行限定时,更新资源包还可以指从基础版本号到最新版本号之间的历史版本号对应的增量更新资源包,本例实施例对此不作特殊限定。

具体的,最高版本10458为当前外放版本,若此时合并版本到9440,则生成合并版本10458_9440,若删除9440-10458的所有更新版本号对应的增量更新资源包后,则剩下当前版本号9441和当前版本号9441对应的基础本版号9439对应的增量更新资源包,以及合并版本号10458_9440对应的增量更新资源包;其中,版本号为9441的脚本资源luapathc_9441中仅包含a,b资源,而版本号为10458的脚本资源luapathc_10458中内容包含a,b,c,d资源,且a,b,c,d资源的映射关系如下:

a->luapatch_10458,

b->luapatch_10458

c->luapatch_10458

d->luapatch_10458

由于luapathc_9441中仅包含的资源a,b被最新本版号对应的目标更新资源包覆盖,即目标增量更新资源包中包含luapathc_9441的所有资源,则可以将仅包含资源a和资源b的脚本资源包luapathc_9441标记为冗余更新资源包;进而,在客户端将当前版本号对应的应用程序跳跃更新为最新版本号对应的应用程序的过程中,可以删除冗余更新资源包,直接根据目标增量更新资源包以及目标增量更新资源包对应的资源映射关系,按版本号的更新顺序下载对应的资源,实现将当前版本号对应的应用程序跳跃更新为与最新版本号对应的应用程序。

需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

此外,在本示例实施例中,还提供了一种应用程序更新装置。参照图8所示,该应用程序更新装置800包括:版本号比对模块810、增量更新资源包获取模块820、目标增量更新资源包确定模块830、应用程序更新模块840。其中:版本号比对模块810,用于响应于启动应用程序,将所述应用程序的当前版本号与服务端中存储的所述应用程序的最新版本号进行比对;增量更新资源包获取模块820,用于若所述当前版本号与所述最新版本号的比对结果为不同,则从所述服务端获取所述应用程序的各个版本号对应的增量更新资源包和所述增量更新资源包对应的资源包关联文件;目标增量更新资源包确定模块830,用于根据所述资源包关联文件确定所述增量更新资源包对应的标识数据,并基于所述标识数据从所述增量更新资源包中确定与所述最新版本号对应的目标增量更新资源包;应用程序更新模块840,用于通过所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为所述最新版本号对应的应用程序。

在本公开的一种示例性实施例中,基于前述方案,所述目标增量更新资源包确定模块830还包括目标增量更新资源包确定单元,所述目标增量更新资源包确定单元,用于基于所述资源包关联文件加载通过所述服务端下发的增量更新资源包,并确定所述增量更新资源包对应的资源列表;根据所述资源列表确定所述增量更新资源包对应的资源映射关系,并基于所述资源映射关系确定所述增量更新资源包对应的标识数据;基于所述增量更新资源包对应的标识数据确定所述各个版本号对应的新增资源包和与所述最新版本号对应的目标更换资源包。

在本公开的一种示例性实施例中,基于前述方案,所述应用程序更新模块840还包括应用程序更新单元,所述应用程序更新单元,用于下载所述目标增量更新资源包,并删除所述增量更新资源包中除所述目标增量更新资源包之外的冗余更新资源包;重新启动所述应用程序以根据所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为与所述最新版本号对应的应用程序。

最后,在本示例实施例中,还提供了一种应用于服务端的应用程序更新装置。参照图9所示,该应用程序更新装置900包括:资源包获取模块910,用于获取所述应用程序的历史版本号对应的当前资源包,以及与所述应用程序对应的最新版本号的更新资源包;差异文件生成模块920,用于将所述当前资源包中的当前文件与所述更新资源包中的更新文件进行比对处理,得到差异文件;增量更新资源包生成模块930,用于基于所述差异文件生成各个版本号对应的应用程序的增量更新资源包以根据所述增量更新资源包实现将所述历史版本号对应的应用程序跳跃更新为与所述最新版本号对应的应用程序;所述各个版本号包括所述历史版本号和最新版本号。

在本公开的一种示例性实施例中,基于前述方案,所述差异文件生成模块920还包括差异脚本文件生成单元,所述差异脚本文件生成单元,用于获取所述当前文件中当前脚本文件对应的当前加密数值以及所述更新文件中更新脚本文件对应的加密数值,并检测所述当前加密数值是否与所述加密数值是否相同;若所述当前加密数值和所述加密数值不相同,则将所述更新脚本文件作为差异脚本文件。

在本公开的一种示例性实施例中,基于前述方案,所述差异文件生成模块920还包括差异场景文件生成单元,所述差异场景文件生成单元,用于通过接口计算所述当前文件中的当前场景文件对应的第一关联加密数值,以及计算所述更新文件中的更新场景文件对应的第一目标关联加密数值,并检测所述第一关联加密数值与所述第一目标关联加密数值是否相同;若所述第一关联加密数值与所述第一目标关联加密数值不相同,则保存所述第一关联加密数值和与所述第一关联加密数值对应的当前场景关联资源,并将所述第一目标关联加密数值对应的场景关联资源作为差异场景资源;基于所述差异场景资源生成差异场景文件,并确定生成所述差异场景文件的时间戳,以及所述当前场景文件对应的场景文件名称;基于所述场景文件名称和时间戳对所述差异场景文件进行命名处理,得到命名后的差异场景文件。

在本公开的一种示例性实施例中,基于前述方案,所述差异文件生成模块920还包括差异公共文件生成单元,所述差异公共文件生成单元,用于通过所述接口计算所述当前文件中的当前公共文件对应的第二关联加密数值,和所述更新文件中的更新公共文件对应的第二目标关联加密数值,并检测所述第二关联加密数值与所述第二目标关联加密数值是否相同;若所述第二关联加密数值与所述第二目标关联加密数值不相同,则保存所述第二关联加密数值和与所述第二关联加密数值对应的当前公共关联资源,并将所述第二目标关联加密数值对应的公共关联资源作为差异公共资源;基于所述差异公共资源生成差异公共文件。

在本公开的一种示例性实施例中,基于前述方案,所述增量更新资源包生成模块930还包括增量更新资源包生成单元,所述增量更新资源包生成单元,用于获取预设的打包参数,并基于所述打包参数对所述差异场景文件、差异脚本文件、差异公共文件分别进行打包处理,得到差异场景文件压缩包、差异脚本文件压缩包、差异公共文件压缩包;基于所述差异场景文件压缩包、差异脚本文件压缩包、差异公共文件压缩包,生成所述增量更新资源包,并将所述增量更新资源包发送到所述客户端以更新所述应用程序。

在本公开的一种示例性实施例中,基于前述方案,增量更新资源包生成模块930还包括冗余更新资源包确定单元,所述冗余更新资源包确定单元,用于获取所述增量更新资源包以及所述增量更新资源包对应的资源关联文件和资源映射关系;基于所述资源关联文件从所述增量更新资源包中确定所述历史版本号中的基础版本号和所述基础版本号对应的基础增量更新资源包,以及确定由所述基础增量更新资源包更新到所述更新资源包对应的最长增量更新资源链;基于所述资源映射关系检测所述最长增量更新资源链中是否存在资源包,所述资源包中所有资源被所述更新资源包中的资源覆盖;若所述最长增量更新资源链中存在所述资源包,则将所述资源包标记为冗余更新资源包。

上述中应用程序更新装置各模块的具体细节已经在对应的应用程序更新方法中进行了详细的描述,因此此处不再赘述。

应当注意,尽管在上文详细描述中提及了应用程序更新装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,在本公开的示例性实施例中,还提供了一种能够实现上述应用程序更新方法的电子设备。

所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全的软件实施例(包括固件、微代码等),或硬件和软件方面结合的实施例,这里可以统称为“电路”、“模块”或“系统”。

下面参照图10来描述根据本公开的这种实施例的电子设备1000。图10所示的电子设备1000仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030、显示单元1040。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1010执行,使得所述处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。例如,所述处理单元1010可以执行如图1中所示的步骤s110,响应于应用程序的启动,将所述应用程序的当前版本号与服务端中存储的所述应用程序的最新版本号进行比对;步骤s120,若所述当前版本号与所述最新版本号的比对结果为不同,则从所述服务端获取所述应用程序的各个版本号对应的增量更新资源包和所述增量更新资源包对应的资源包关联文件;步骤s130,根据所述资源包关联文件确定所述增量更新资源包对应的标识数据,并基于所述标识数据从所述增量更新资源包中确定与所述最新版本号对应的目标增量更新资源包;步骤s140,通过所述目标增量更新资源包将所述当前版本号对应的应用程序跳跃更新为所述最新版本号对应的应用程序。

存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)1021和/或高速缓存存储单元1022,还可以进一步包括只读存储单元(rom)1023。

存储单元1020还可以包括具有一组(至少一个)程序模块1025的程序/实用工具1024,这样的程序模块1025包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

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

通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。

在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。

参考图11所示,描述了根据本公开的实施例的用于实现上述应用程序更新方法的程序产品1100,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施例的方法。

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

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

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