CN116932014B - 一种应用更新方法、装置、设备及计算机可读存储介质 - Google Patents

一种应用更新方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN116932014B
CN116932014B CN202311194657.1A CN202311194657A CN116932014B CN 116932014 B CN116932014 B CN 116932014B CN 202311194657 A CN202311194657 A CN 202311194657A CN 116932014 B CN116932014 B CN 116932014B
Authority
CN
China
Prior art keywords
update
version
packet
sub
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311194657.1A
Other languages
English (en)
Other versions
CN116932014A (zh
Inventor
何文祥
王明勇
杨绍鹏
黄姗姗
黎明
陈科文
陈华华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311194657.1A priority Critical patent/CN116932014B/zh
Publication of CN116932014A publication Critical patent/CN116932014A/zh
Application granted granted Critical
Publication of CN116932014B publication Critical patent/CN116932014B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种应用更新方法、装置、设备及计算机可读存储介质,应用于云技术、人工智能、智慧交通和游戏等各种应用更新场景;方法包括:响应于更新检查请求,得到M个应用分包对应的M个当前分包版本;遍历M个应用分包,对每个遍历到的应用分包执行以下处理:从应用更新链中查找从当前分包版本更新至最新版本的分包更新链,应用更新链包括任一版本更新至最新版本的最短差异更新链,最短差异更新链是自最新版本向任一版本确定的差异更新包的最短链路;将遍历获得的M个分包更新链合并为目标更新链;获取目标更新链中差异更新包的元数据,得到元数据链;向客户端设备发送携带元数据链的更新响应包。通过本申请,能够提升应用更新效率。

Description

一种应用更新方法、装置、设备及计算机可读存储介质
技术领域
本申请涉及计算机应用领域中的数据处理技术,尤其涉及一种应用更新方法、装置、设备及计算机可读存储介质。
背景技术
在应用更新的过程中,常常是从当前版本开始,基于最大版本跨度确定每个应用分包的差异更新链,并生成包括各个应用分包的各个差异更新链的更新响应包;然而,随着应用分包数量的增多,差异更新链的数量也增多,使得更新响应包的数据量增多,影响了应用更新效率。
发明内容
本申请实施例提供一种应用更新方法、装置、设备、计算机可读存储介质及计算机程序产品,能够提升应用更新效率。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种应用更新方法,所述方法包括:
响应于客户端设备针对待更新应用发送的更新检查请求,得到M个应用分包对应的M个当前分包版本,M为大于1的正整数;
遍历M个所述应用分包,对每个遍历到的所述应用分包执行以下处理:
从应用更新链中,查找从所述当前分包版本更新至最新版本的分包更新链,所述应用更新链包括任一版本更新至所述最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路;
将遍历获得的M个所述分包更新链合并为目标更新链;
获取所述目标更新链中所述差异更新包的元数据,得到元数据链;
向所述客户端设备发送携带所述元数据链的更新响应包,以使所述客户端设备基于所述更新响应包更新所述待更新应用。
本申请实施例还提供一种应用更新方法,所述方法包括:
响应于针对待更新应用的应用更新操作,向服务端设备发送更新检查请求,以使所述服务端设备基于应用更新链确定与M个应用分包对应的M个分包更新链,并通过合并M个所述分包更新链中的重合链路得到携带元数据链的更新响应包,所述应用更新链包括任一版本更新至最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路,M为大于1的正整数;
从所述服务端设备响应于所述更新检查请求所发送的所述更新响应包中,获得所述元数据链;
基于所述元数据链,获得至少一个分包差异更新包序列;
基于至少一个所述分包差异更新包序列,更新所述待更新应用。
本申请实施例提供一种第一应用更新装置,所述第一应用更新装置包括:
请求响应模块,用于响应于客户端设备针对待更新应用发送的更新检查请求,得到M个应用分包对应的M个当前分包版本,M为大于1的正整数;
分包处理模块,用于遍历M个所述应用分包,对每个遍历到的所述应用分包执行以下处理:从应用更新链中,查找从所述当前分包版本更新至最新版本的分包更新链,所述应用更新链包括任一版本更新至所述最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路;
链路合并模块,用于将遍历获得的M个所述分包更新链合并为目标更新链;
数据获取模块,用于获取所述目标更新链中所述差异更新包的元数据,得到元数据链;
更新响应模块,用于向所述客户端设备发送携带所述元数据链的更新响应包,以使所述客户端设备基于所述更新响应包更新所述待更新应用。
在本申请实施例中,所述分包处理模块,还用于将所述最新版本确定为第i个目标版本,迭代i执行以下处理,i为小于或等于最新版本次序值的正整数变量:基于指定版本量,确定第i个所述目标版本的N个最近历史版本,N小于或等于所述指定版本量;获取N个所述最近历史版本分别与第i个所述目标版本对应的N个所述差异更新包;当N个所述最近历史版本中的最低历史版本高于最低版本时,将所述最低历史版本确定为第i-1个所述目标版本;当所述最低历史版本为所述最低版本时,将迭代i获得的至少一个所述差异更新包构建为所述应用更新链。
在本申请实施例中,所述分包处理模块,还用于将版本发布频率和版本活跃度中的至少一种,确定为数量参数,所述版本发布频率是指所述待更新应用发布版本的频率,所述版本活跃度是指所述待更新应用请求更新的频率;获取与所述数量参数负相关的所述指定版本量。
在本申请实施例中,所述数据获取模块,还用于遍历所述目标更新链,对每个遍历到的所述差异更新包执行以下处理,所述差异更新包中包括开始版本和结束版本:获取所述差异更新包的更新分包序列和分包更新量序列,所述更新分包序列中的更新分包表示待从所述开始版本更新至所述结束版本的所述应用分包,所述分包更新量序列中的分包更新量表示所述更新分包从所述开始版本更新至所述结束版本的数据量;将所述开始版本和所述结束版本、以及所述更新分包序列和所述分包更新量序列,确定为所述元数据;将遍历获得的至少一个所述元数据,构建为所述元数据链。
在本申请实施例中,所述数据获取模块,还用于比较所述分包更新量序列中的每个所述分包更新量与更新量阈值,得到更新标识序列;当所述开始版本为所述当前分包版本时,将所述更新标识序列、所述开始版本、所述结束版本、以及所述当前分包版本对应的至少一个所述应用分包,确定为所述元数据;当所述开始版本与M个所述当前分包版本均不同时,将所述更新标识序列、所述开始版本、以及所述结束版本,确定为所述元数据。
在本申请实施例中,所述更新响应模块,还用于由每个所述差异更新包的所述分包更新量序列,得到与所述目标更新链对应的至少一个所述分包更新量序列;基于至少一个所述分包更新量序列,累加每个所述应用分包的更新总量,得到与M个所述应用分包对应的M个所述更新总量;生成携带所述元数据链和M个所述更新总量的所述更新响应包;向所述客户端设备发送所述更新响应包。
在本申请实施例中,所述第一应用更新装置还包括数据下发模块,用于响应于所述客户端设备针对所述更新响应包发送的下载请求,遍历所述下载请求,对每个遍历到的子下载请求执行以下处理,所述下载请求包括至少一个所述子下载请求;所述子下载请求包括下载分包序列、开始版本和结束版本:基于所述开始版本和所述结束版本确定目标差异更新包;从所述目标差异更新包中,读取与所述下载分包序列中的每个下载分包对应的分包差异更新包,得到与所述下载分包序列对应的分包差异更新包序列;将遍历获得的至少一个分包差异更新包序列下发至所述客户端设备。
本申请实施例提供一种第二应用更新装置,所述第二应用更新装置包括:
更新检查模块,用于响应于针对待更新应用的应用更新操作,向服务端设备发送更新检查请求,以使所述服务端设备基于应用更新链确定与M个应用分包对应的M个分包更新链,并通过合并M个所述分包更新链中的重合链路得到携带元数据链的更新响应包,所述应用更新链包括任一版本更新至最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路,M为大于1的正整数;
数据读取模块,用于从所述服务端设备响应于所述更新检查请求所发送的所述更新响应包中,获得所述元数据链;
数据下载模块,用于基于所述元数据链,获得至少一个分包差异更新包序列;
应用更新模块,用于基于至少一个所述分包差异更新包序列,更新所述待更新应用。
在本申请实施例中,所述数据下载模块,还用于遍历所述元数据链,对每个遍历到的元数据执行以下处理,所述元数据包括开始版本、结束版本、更新分包序列和分包更新量序列,所述更新分包序列中的更新分包表示待从所述开始版本更新至所述结束版本的所述应用分包,所述分包更新量序列中的分包更新量表示所述更新分包从所述开始版本更新至所述结束版本的数据量:基于所述更新分包序列和所述分包更新量序列,确定下载分包序列;生成携带所述下载分包序列、所述开始版本和所述结束版本的子下载请求;将遍历获得的至少一个所述子下载请求,确定为下载请求;向所述服务端设备发送下载请求;接收所述服务端设备响应于所述下载请求所下发的至少一个所述分包差异更新包序列。
在本申请实施例中,所述数据下载模块,还用于遍历所述元数据链,对每个遍历到的所述元数据执行以下处理,所述元数据包括开始版本、结束版本和更新标识序列;从所述元数据链中,获取以所述元数据为根节点的节点序列;确定所述节点序列中的目标节点序列,所述目标节点序列中的目标节点包括至少一个所述应用分包;整合所述目标节点序列分别对应的至少一个所述应用分包,得到所述更新分包序列;基于所述更新分包序列和所述更新标识序列,确定所述下载分包序列。
在本申请实施例中,所述数据下载模块,还用于基于所述更新响应包,获得M个所述应用分包对应的M个更新总量。
在本申请实施例中,所述应用更新模块,还用于当M个所述更新总量小于空闲空间量时,基于所述元数据链,从所述服务端设备下载至少一个所述分包差异更新包序列;在更新所述待更新应用的过程中,基于所述更新总量显示应用更新信息。
本申请实施例提供一种用于应用更新的服务端设备,所述服务端设备包括:
第一存储器,用于存储计算机可执行指令或者计算机程序;
第一处理器,用于执行所述第一存储器中存储的计算机可执行指令或者计算机程序时,实现本申请实施例提供的应用于服务端设备的应用更新方法。
本申请实施例提供一种用于应用更新的客户端设备,所述客户端设备包括:
第二存储器,用于存储计算机可执行指令或者计算机程序;
第二处理器,用于执行所述第二存储器中存储的计算机可执行指令或者计算机程序时,实现本申请实施例提供的应用于客户端设备的应用更新方法。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令或者计算机程序,所述计算机可执行指令或者计算机程序用于被第一处理器执行时,实现本申请实施例提供的应用于服务端设备的应用更新方法;或者,所述计算机可执行指令或者计算机程序用于被第二处理器执行时,实现本申请实施例提供的应用于客户端设备的应用更新方法。
本申请实施例提供一种计算机程序产品,包括计算机可执行指令或者计算机程序,所述计算机可执行指令或者计算机程序被第一处理器执行时,实现本申请实施例提供的应用于服务端设备的应用更新方法;或者,所述计算机可执行指令或者计算机程序被第二处理器执行时,实现本申请实施例提供的应用于客户端设备的应用更新方法。
本申请实施例至少具有以下有益效果:在客户端设备向服务端设备发送了针对M个应用分包的更新检查请求之后,服务端设备基于预先构建的应用更新链确定每个应用分包的分包更新链,并对获得的M个分包更新链进行合并,合并了M个分包更新链中的重合链路,从而能够减少差异更新包的元数据数量,进而能够降低更新响应包的数据量;因此,在通过更新响应包更新待更新应用时,能够提升应用更新效率。
附图说明
图1是一种示例性的版本更新示意图;
图2是另一种示例性的版本更新示意图;
图3是又一种示例性的版本更新示意图;
图4是本申请实施例提供的应用更新系统的架构示意图;
图5是本申请实施例提供的一种图4中的服务器的结构示意图;
图6是本申请实施例提供的一种图4中的终端的结构示意图;
图7是本申请实施例提供的应用更新方法的流程示意图一;
图8是本申请实施例提供的获取应用更新链的流程示意图;
图9是本申请实施例提供的应用更新方法的流程示意图二;
图10是本申请实施例提供的一种示例性的获取更新链的示意图;
图11是本申请实施例提供的一种示例性的差异更新树;
图12是本申请实施例提供的一种示例性的生成子差异更新树的示意图;
图13是本申请实施例提供的一种示例性的子差异更新树;
图14是本申请实施例提供的另一种示例性的子差异更新树;
图15是本申请实施例提供的一种示例性的下载示意图;
图16是本申请实施例提供的另一种示例性的下载示意图;
图17是本申请实施例提供的又一种示例性的下载示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二”用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本申请实施例所使用的所有的技术和科学术语与所属技术领域的技术人员通常理解的含义相同。本申请实施例中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)应用更新,是指应用的版本更新,包括应用程序(APPlication,APP)更新和资源更新;其中,应用程序更新可以发生在应用内,即为在应用启动后执行,也可以由发行渠道(比如,操作系统所指定的应用商店)更新;而资源更新可以发生在应用内。本申请实施例中的应用更新为发生在应用内的更新方式。另外,应用可以是客户端,客户端是一种可以在客户端设备中运行的用于提供各种服务的应用程序,例如游戏客户端,视频客户端,等等。
2)资源分包,应用安装包中包括应用程序和资源,为了提升更新效率,通常对资源进行分包,得到多个资源分包;其中,资源用于提升应用程序运行方式的多样性等,比如,游戏地图资源,游戏方式资源等;资源分包比如为一种地图对应的资源,一种游戏方式对应的资源等。通过资源分包,能够实现按需更新,以减少更新量,易知,资源分包粒度越细,各个资源分包之间的耦合越低,分包更新量越少。本申请实施例中的应用分包,可以是资源分包,还可以是应用程序对应的数据包。
3)更新检查,或称为检查更新,是指客户端设备向服务端设备发送更新检测请求,以确定应用是否存在更新的处理。这里,当存在更新时,服务端设备可以由内容分发网络(Content Delivery Network,CDN)向客户端设备发送更新包,即为更新包下载;从而,应用更新包括更新检查和更新包下载两个各阶段。
4)差异更新,是指生成当前版本与待更新版本之间的差异更新包,并基于差异更新包将应用版本从当前版本更新至待更新版本。本申请实施例所提供的应用更新方法,适用于将任一版本差异更新至最新版本的场景中。
5)全量更新,是指通过待更新版本的应用安装包替换当前版本的应用安装包,以将应用版本从当前版本更新至待更新版本。
6)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
7)操作,是一种用于触发设备执行处理的方式,比如,点击操作,双击操作,长按操作,滑动操作,手势操作,接收到的触发指令等;另外,本申请实施例中的各种操作可以是单个操作,又可以是多个操作的总称;以及本申请实施例中的各种操作可以是触控操作,又可以是非触控操作。
需要说明的是,当发布最新版本时,为了进行应用更新,通常对与最新版本最近的N个版本(又称为活跃版本或近期版本)采用差异更新方式,而对除了与最新版本最近的N个版本之外的其他版本(又称为非活跃版本或远期版本)采用全量更新方式;这是因为针对最新版本的所有历史版本都生成更新差异包,增加了资源消耗和版本迭代周期。
示例性地,参见图1,图1是一种示例性的版本更新示意图;如图1所示,当最新版本1-1为版本11时,生成版本10、版本9和版本8(称为最近的N个版本)分别与版本11之间的更新差异包,并测试每个更新差异包。当客户端设备中的版本为版本10或版本9或版本8时,基于对应的更新差异包进行差异更新;当客户端设备中的版本为除版本10、版本9和版本8之外的其他历史版本(示例性地示出了版本7、版本6、…)时,基于版本11的数据包进行全量更新。
然而,由于对非活跃版本采用的为全量更新方式,增加了数据请求量和数据下载量,影响了客户端设备的更新效率和CDN的资源消耗,无法适用于版本更新频率大于指定频率的应用,影响了适用范围。
另外,为了进行应用更新,还可以通过历史差异包计算出一条当前版本到最新版本的差异更新链,其中,历史差异包是指之前发布新版本时所生成的更新差异包,且历史差异包是经过测试的更新差异包。此时,在多分包场景下,每个分包独立计算分包差异更新链,以基于对应的分包差异更新链独立更新。
示例性地,参见图2,图2是另一种示例性的版本更新示意图;如图2所示,当最新版本2-1为版本11时,客户端设备的应用的三个分包中,分包2-21的当前分包版本为版本1,能够基于历史差异包计算出一条更新链2-31;分包2-22的当前分包版本为版本2,能够基于历史差异包计算出一条分包差异更新链2-32;分包2-23的当前分包版本为版本3,能够基于历史差异包计算出一条分包差异更新链2-33。从而,各个分包基于各自对应的分包差异更新链独立进行差异更新。
然而,随着分包数量的增多,比如达到千级或比千级更多之后,增加了差异包元数据的下载量;以及由于各个分包得到的各个分包差异更新链之间独立,差异包是分散的,增加了客户端设备与CDN之间建立连接的数量,增加了下载耗时,影响了下载效率;并且,增加了更新检查的响应包的大小,比如,达到兆(Mbyte,MB/M)级别或比兆级别更大,影响了更新成功率;进而影响了应用更新效率和成功率。
此外,为了进行应用更新,还可以基于资源包中的每个文件进行替换式更新。
示例性地,参见图3,图3是又一种示例性的版本更新示意图;如图3所示,当最新版本3-1为版本11、客户端设备的应用版本3-2为版本8时,将版本11和版本8进行对比;由于版本11中无文件3-21、而版本8中包括文件3-21,从而删除文件3-21(也可以不作处理);由于版本11和版本8均存在文件3-22,且两版本中的文件3-22之间存在差异,从而下载版本11中的文件3-22,以更新版本8中的文件3-22;由于版本11和版本8均存在文件3-23,且两版本中的文件3-23之间无差异,从而取消对版本8中文件3-23的处理,即为不下载版本11中的文件3-23;由于版本11中存在文件3-24,而版本8中不存在文件3-24,从而下载版本11中的文件3-24,以在版本8中增加文件3-24。
然而,由于存在变更的文件采用的是全量下载方式,因此,增加了下载量和CDN资源消耗;此外,随着资源分包中的文件增多,下载时待对每个零散文件计算文件偏移、磁盘寻址、发起CDN下载请求等,从而,影响了下载效率,也就影响了应用更新效率。
基于此,本申请实施例提供一种应用更新方法、装置、设备、计算机可读存储介质及计算机程序产品,能够提升应用更新效率、成功率和适用范围。
下面说明本申请实施例提供的设备的示例性应用,本申请实施例提供的客户端设备和服务端设备均可以实施为智能手机、智能手表、笔记本电脑、平板电脑、台式计算机、智能家电、机顶盒、智能车载设备、便携式音乐播放器、个人数字助理、专用消息设备、智能语音交互设备、便携式游戏设备和智能音箱等各种类型的终端,也可以实施为服务器,还可以是两者的结合。下面,将说明客户端设备实施为终端、而服务端设备实施为服务器时的示例性应用。
参见图4,图4是本申请实施例提供的应用更新系统的架构示意图;如图4所示,在应用更新系统100中,终端200(示例性示出了终端200-1和终端200-2)通过网络300连接服务器400,网络300可以是广域网或者局域网,又或者是二者的组合。另外,该应用更新系统100中还包括数据库500,用于向服务器400提供数据支持;并且,图4中示出的为数据库500独立于服务器400的一种情况,此外,数据库500还可以集成在服务器400中,本申请实施例对此不作限定。
终端200,用于响应于针对待更新应用的应用更新操作,通过网络300向服务器400发送更新检查请求;从服务器400响应于更新检查请求通过网络300所发送的更新响应包中,获得元数据链;基于元数据链,更新待更新应用(示例性示出了图形界面210-1和图形界面210-2)。
服务器400,用于响应于更新检查请求,得到M个应用分包对应的M个当前分包版本,遍历M个应用分包,对每个遍历到的应用分包执行以下处理:从应用更新链中,查找从当前分包版本更新至最新版本的分包更新链;将遍历获得的M个分包更新链合并为目标更新链;获取目标更新链中差异更新包的元数据,得到元数据链;通过网络300向终端200发送携带元数据链的更新响应包,以使终端200基于更新响应包更新待更新应用。
在一些实施例中,服务器400可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不作限制。
参见图5,图5是本申请实施例提供的一种图4中的服务器的结构示意图;如图5所示,服务器400包括:至少一个第一处理器410、第一存储器450和至少一个第一网络接口420。服务器400中的各个组件通过第一总线系统440耦合在一起。可理解,第一总线系统440用于实现这些组件之间的连接通信。第一总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为第一总线系统440。
第一处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(Digital Signal Processor,DSP),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
第一存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。第一存储器450可选地包括在物理位置上远离第一处理器410的一个或多个存储设备。
第一存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(Read Only Memory,ROM),易失性存储器可以是随机存取存储器(Random Access Memory,RAM)。本申请实施例描述的第一存储器450旨在包括任意适合类型的存储器。
在一些实施例中,第一存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
第一操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
第一网络通信模块452,用于经由一个或多个(有线或无线)第一网络接口420到达其他电子设备,示例性的第一网络接口420包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(Universal Serial Bus,USB)等;
在一些实施例中,本申请实施例提供的第一应用更新装置可以采用软件方式实现,图5示出了存储在第一存储器450中的第一应用更新装置455,其可以是程序和插件等形式的软件,包括以下软件模块:请求响应模块4551、分包处理模块4552、链路合并模块4553、数据获取模块4554、更新响应模块4555和数据下发模块4556,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
参见图6,图6是本申请实施例提供的一种图4中的终端的结构示意图;如图6所示,终端200包括:至少一个第二处理器210、第二存储器250、至少一个第二网络接口220和用户接口230。终端200中的各个组件通过第二总线系统240耦合在一起。可理解,第二总线系统240用于实现这些组件之间的连接通信。第二总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为第二总线系统240。
第二处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
第二存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。第二存储器250可选地包括在物理位置上远离第二处理器210的一个或多个存储设备。
第二存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器,易失性存储器可以是随机存取存储器。本申请实施例描述的第二存储器250旨在包括任意适合类型的存储器。
在一些实施例中,第二存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
第二操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
第二网络通信模块252,用于经由一个或多个(有线或无线)第二网络接口220到达其他电子设备,示例性的第二网络接口220包括:蓝牙、无线相容性认证、和通用串行总线等;
呈现模块253,用于经由一个或多个与用户接口230相关联的输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块254,用于对来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的第二应用更新装置可以采用软件方式实现,图6示出了存储在第二存储器250中的第二应用更新装置255,其可以是程序和插件等形式的软件,包括以下软件模块:更新检查模块2551、数据读取模块2552、数据下载模块2553和应用更新模块2554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在一些实施例中,本申请实施例提供的第一应用更新装置和第二应用更新装置可以采用硬件方式实现,作为示例,本申请实施例提供的第一应用更新装置和第二应用更新装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的应用更新方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(Application Specific Integrated Circuit,ASIC)、DSP、可编程逻辑器件(Programmable Logic Device,PLD)、复杂可编程逻辑器件(Complex Programmable LogicDevice,CPLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或其他电子元件。
在一些实施例中,终端可以通过运行各种计算机可执行指令或者计算机程序来实现本申请实施例提供的应用更新方法。举例来说,计算机可执行指令可以是微程序级的命令、机器指令或软件指令。计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APPlication,APP),即需要在操作系统中安装才能运行的程序,如游戏APP;也可以是能够嵌入至任意APP中的小程序,即只需要下载到浏览器环境中就可以运行的程序。总而言之,上述的计算机可执行指令可以是任意形式的指令,上述计算机程序可以是任意形式的应用程序、模块或插件。
下面,将结合本申请实施例提供的客户端设备和服务端设备的示例性应用和实施,说明本申请实施例提供的应用更新方法。另外,本申请实施例提供的应用更新方法应用于云技术、人工智能、智慧交通、车载和游戏等各种应用更新场景。
参见图7,图7是本申请实施例提供的应用更新方法的流程示意图一;下面将结合图7示出的步骤进行说明。
步骤101、客户端设备响应于针对待更新应用的应用更新操作,向服务端设备发送更新检查请求。
在本申请实施例中,待更新应用运行在客户端设备上,当在客户端设备上启动待更新应用或在启动后的待更新应用中通过更新控件(比如,版本关于中的更新按钮)进行应用更新时,客户端设备也就接收到了针对待更新应用的应用更新操作。此时,客户端设备响应于应用更新操作,开始待更新应用的更新检查;从而,客户端设备向服务端设备发送更新检查请求,以请求服务端设备确定是否存在待更新的新版本。
需要说明的是,待更新应用是指待更新的功能应用,可以是待更新应用的应用程序待更新,还可以是待更新应用的应用资源待更新,也可以是上述两者均待更新,本申请实施例对此不作限定。应用更新操作为触发待更新应用进行更新的操作;比如,启动待更新应用的操作(此时可以是服务端设备发布最新版本后向各个客户端设备推送了更新信息而触发的,还可以是预先设置的启动时进行更新检测的处理等),或者显示更新控件并触发更新控件的操作,等等。由于待更新应用的新版本的发布等处理在服务端设备上执行,从而,客户端设备向服务端设备发送更新检测请求,以进行待更新应用的更新检测。另外,由于更新检查请求用于请求服务端设备确定待更新应用是否待更新,从而更新检测请求包括待更新应用的M个应用分包、以及与M个应用分包一一对应的M个当前分包版本,M为大于1的正整数;其中,每个当前分包版本表示一个应用分包当前(进行更新检查的时刻)所处的版本,应用分包为待更新应用的应用程序包,或者为待更新应用的资源分包,从而M个应用分包可以是待更新应用的多个资源分包,还可以是多个资源分包和一个应用程序包,本申请实施例对此不作限定。此外,由于每次版本的发布可以是更新待更新应用的部分应用分包,以及待更新应用可以选择性更新自身的部分应用分包,从而M个当前分包版本可以不同,当然,也可以相同。
步骤102、服务端设备响应于客户端设备针对待更新应用发送的更新检查请求,得到M个应用分包对应的M个当前分包版本。
在本申请实施例中,当客户端设备向服务端设备发送更新检查请求之后,服务端设备也就接收到了客户端设备针对待更新应用发送的更新检查请求;此时,服务端设备响应于更新检查请求,能够从更新检查请求中读取出M个应用分包对应的M个当前分包版本。
需要说明的是,由于客户端设备在向服务端设备发送更新检查请求时,在更新检查请求中携带了M个应用分包对应的M个当前分包版本,从而,服务端设备能够从更新检查请求中读取出M个应用分包对应的M个当前分包版本。
在本申请实施例中,服务端设备遍历M个应用分包,对每个遍历到的应用分包执行以下处理(步骤103)。
步骤103、服务端设备从应用更新链中,查找从当前分包版本更新至最新版本的分包更新链。
在本申请实施例中,服务端设备基于最新版本与最低版本之间的全量差异更新包,预加载出了应用更新链,应用更新链为任一版本更新至最新版本的最短差异更新链的组合结果,最短差异更新链是自最新版本向任一版本确定的差异更新包的最短链路;从而,基于遍历到的应用分包的当前分包版本,能够从应用更新链中查找出从当前分包版本更新至最新版本的最短差异更新链,并将查找到的最短差异更新链确定为分包更新链。
需要说明的是,服务端设备每次在发布最新版本时,均获取与最新版本最近的指定版本量(比如,3)的历史版本,并生成每个最近的历史版本与最新版本之间的差异更新包;从而,每个历史版本在作为最新版本时,同样存在该历史版本与该历史版本的历史版本之间的差异更新包,直至最低版本;进而,服务端设备能够获得最新版本与最低版本之间的全量差异更新包。而应用更新链包括最新版本与最低版本之间的各个差异更新包,且在应用更新链中,开始版本与结束版本相同的两个差异更新包之间存在链路,以及应用更新链的链节点为差异更新包。其中,应用更新链所包括的最新版本与最低版本之间的各个差异更新包,可以是全量差异更新包的子集。另外,给定最低版本与最新版本之间的任一版本,均能够从应用更新链中获得唯一的更新至最新版本的链路,且该链路为自最新版本向待更新的给定版本所确定的最短链路(称为最短差异更新链)。
还需要说明的是,差异更新包是指从开始版本更新至结束版本的差异数据,用于从开始版本差异更新至结束版本;其中,开始版本与结束版本之间的版本差最多为指定版本量,并且,开始版本最低为最低版本,结束版本最高为最新版本;最低版本是指差异更新的最低应用版本,可以是待更新应用的首个版本,还可以是指定进行差异更新的最低应用版本,本申请实施例对此不作限定。分包更新链包括遍历到的应用分包由当前分包版本更新至最新版本依次所依据的差异更新包,分包更新链的链节点为差异更新包,且存在链路的两个链节点中,一个链节点的开始版本是另一个链节点的结束版本。
步骤104、服务端设备将遍历获得的M个分包更新链合并为目标更新链。
在本申请实施例中,M个分包更新链中存在差异更新的重合链路,从而,服务端设备对M个分包更新链中的重合链路进行合并,合并后的M个分包更新链即为目标更新链。
需要说明的是,从应用更新链中所获得的M个分包更新链中的重合链路,是指差异更新包相同的链路。这里,服务端设备可以从应用更新链中获取包括M个分包更新链的子链,并将获得的包括M个分包更新链的子链确定为目标更新链,也能够完成M个分包更新链中重合链路的合并。另外,目标更新链包括任一当前分包版本更新至最新版本的最短分包差异更新链,最短分包差异更新链是自最新版本向任一当前分包版本确定的差异更新包的最短链路;并且,目标更新链的链节点为差异更新包,且存在链路的两个链节点中,一个链节点的开始版本是另一个链节点的结束版本。
步骤105、服务端设备获取目标更新链中差异更新包的元数据,得到元数据链。
在本申请实施例中,目标更新链是由至少一个差异更新包构建的链路,服务端设备针对目标更新链中的每个差异更新包进行元数据的获取,也就获得了与目标更新链中的至少一个差异更新包对应的至少一个元数据;这里,服务端设备将至少一个元数据构建为元数据链。其中,元数据链是通过将目标更新链中的差异更新包替换为元数据获得的,从而,元数据链的链节点为元数据,各个元数据之间通过同一版本链接。
需要说明的是,元数据为差异更新包的更新检查的响应信息,用于确定更新检查结果,更新检查结果比如为服务端设备是否存在待更新的版本,待下载的数据,待下载的数据量,等等。
在本申请实施例中,服务端设备获取目标更新链中差异更新包的元数据,得到元数据链,包括:服务端设备遍历目标更新链中的至少一个差异更新包,对每个遍历到的差异更新包执行以下处理:获取差异更新包的更新分包序列和分包更新量序列,并将开始版本、结束版本、更新分包序列和分包更新量序列,确定为元数据;最后,将遍历获得的至少一个元数据,构建为元数据链。
需要说明的是,更新分包序列中的更新分包表示待从开始版本更新至结束版本的应用分包,分包更新量序列中的分包更新量表示更新分包从开始版本更新至结束版本的数据量,从而,更新分包序列与分包更新量序列一一对应;此时,服务端设备获得的元数据包括开始版本、结束版本、更新分包序列和分包更新量序列。另外,由于M个当前分包版本可以不同,从而,各个更新分包序列也就可以不同。
可以理解的是,通过合并采用应用更新链获得的M个分包更新链,降低了差异更新包的数量,进而降低了差异更新包的元数据的数量。
在本申请实施例中,服务端设备获取差异更新包的更新分包序列和分包更新量序列之后,以及将遍历获得的至少一个元数据,构建为元数据链之前,该应用更新方法还包括:服务端设备比较分包更新量序列中的每个分包更新量与更新量阈值,得到更新标识序列;当开始版本为当前分包版本时,将更新标识序列、开始版本、结束版本、以及当前分包版本对应的至少一个应用分包,确定为元数据;而当开始版本与M个当前分包版本均不同时,将更新标识序列、开始版本、以及结束版本,确定为元数据。这里,服务端设备可以将分包更新量大于更新量阈值的更新标识确定为待更新标识,表示对应的应用包待更新;而将分包更新链小于或等于更新量阈值的更新标识确定为非更新标识,表示对应的应用分包不需要更新,对于不需要更新的应用分包,可以从版本数值上进行更新。
需要说明的是,服务端设备还可以对更新分包序列和分包更新量序列进行压缩,以将分包更新量序列压缩为更新标识序列,将更新分包序列压缩为开始版本被当前分包版本命中的差异更新包的元数据中的至少一个应用分包。此时,开始版本被当前分包版本命中的差异更新包的元数据包括更新标识序列、开始版本、结束版本、以及当前分包版本对应的至少一个应用分包;而开始版本未被当前分包版本命中的差异更新包的元数据包括更新标识序列、开始版本和结束版本。
可以理解的是,通过压缩更新分包序列和分包更新量序列,减少了元数据的数据量,从而能够降低元数据链的数据量,提升检查更新的响应效率。
步骤106、服务端设备向客户端设备发送携带元数据链的更新响应包。
在本申请实施例中,服务端设备生成包括元数据链的更新响应包,并向客户端设备发送更新响应包。
在本申请实施例中,当元数据链中的元数据包括更新标识序列、开始版本、结束版本、以及当前分包版本对应的至少一个应用分包,或者包括更新标识序列、开始版本和结束版本时,服务端设备向客户端设备发送携带元数据链的更新响应包,包括:服务端设备由每个差异更新包的分包更新量序列,得到与目标更新链对应的至少一个分包更新量序列;并基于至少一个分包更新量序列,累加每个应用分包的更新总量,得到与M个应用分包对应的M个更新总量;生成携带元数据链和M个更新总量的更新响应包;最后,向客户端设备发送更新响应包。
需要说明的是,由于目标更新链包括至少一个差异更新包,而每个差异更新包对应一个分包更新量序列;从而,服务端设备能够获得与目标更新链对应的至少一个分包更新量序列;这里,服务端设备以每个应用分包为粒度,累加该应用分包对应的全量分包更新量,并将累加结果确定为应用分包的总更新量。此时,由于元数据中不包括分包更新量的相关信息,故服务端设备将M个更新总量携带在更新响应包中发送。
步骤107、客户端设备从服务端设备响应于更新检查请求所发送的更新响应包中,获得元数据链。
在本申请实施例中,客户端设备响应于针对待更新应用的应用更新操作,向服务端设备发送更新检查请求,以使服务端设备基于应用更新链,确定与M个应用分包对应的M个分包更新链,并通过合并M个分包更新链中的重合链路得到携带元数据链的更新响应包。并且,当服务端设备向客户端设备发送更新响应包时,客户端设备也就接收到了服务端设备响应于更新检查请求所发送的更新响应包;此时,由于服务端设备在更新响应包中携带了元数据链,从而客户端设备能够从更新响应包中获得元数据链。
步骤108、客户端设备基于元数据链,获得至少一个分包差异更新包序列。
需要说明的是,客户端设备基于元数据链中的每个元数据,进行更新包下载,以从对应差异更新包中获取每个应用分包的分包差异更新包;从而,针对每个待获取的差异更新包,能够获得一个分包差异更新包序列;以及针对元数据链对应的待获取的至少一个差异更新包,能够获得至少一个分包差异更新包序列。
在本申请实施例中,当元数据包括开始版本、结束版本、更新分包序列和分包更新量序列时,客户端设备基于元数据链,获得至少一个分包差异更新包序列,包括:客户端设备遍历元数据链中的至少一个元数据,对每个遍历到的元数据执行以下处理:客户端设备基于更新分包序列和分包更新量序列,确定下载分包序列;并生成携带下载分包序列、开始版本和结束版本的子下载请求;以及将遍历获得的至少一个子下载请求,确定为下载请求;最后,向服务端设备发送下载请求,以接收服务端设备响应于下载请求所下发的至少一个分包差异更新包序列。
需要说明的是,当元数据包括开始版本、结束版本、更新分包序列和分包更新量序列时,客户端设备基于分包更新量序列中的分包更新量与更新量阈值进行比较,以确定更新分包序列中对应的更新分包是否待下载更新数据,并将待下载更新数据的更新分包确定为下载分包;这里,将大于更新量阈值的分包更新量所对应的更新分包,确定为待下载更新数据的更新分包,而将小于或等于更新量阈值的分包更新量所对应的更新分包,确定为不需要下载更新数据的更新分包,不是下载分包。从而,针对更新分包序列和分包更新量序列,能够确定出下载分包序列。
在本申请实施例中,当元数据包括更新标识序列、开始版本、结束版本、以及当前分包版本对应的至少一个应用分包,或者包括更新标识序列、开始版本和结束版本时,客户端设备在生成携带下载分包序列、开始版本和结束版本的子下载请求之前,该应用更新方法还包括:客户端设备遍历元数据链,对每个遍历到的元数据执行以下处理;从元数据链中,获取以元数据为根节点的节点序列;并确定节点序列中的目标节点序列;以及整合目标节点序列分别对应的至少一个应用分包,得到更新分包序列;最后,基于更新分包序列和更新标识序列,确定下载分包序列。
需要说明的是,当元数据包括更新标识序列、开始版本、结束版本、以及当前分包版本对应的至少一个应用分包,或者包括更新标识序列、开始版本和结束版本时,客户端设备在获取下载分包序列时,在元数据链中,自链底向上确定每个链节点对应的下载分包序列。这里,客户端设备将包括至少一个应用分包的节点成为目标节点,从而,目标节点序列是指从节点序列中选择的目标节点组成的序列。另外,客户端设备将更新标识为待更新标识的更新分包确定为下载分包,而将更新标识为非更新标识的更新分包确定为非下载分包。
可以理解的是,由于子节点中的更新分包也是父节点中的更新分包,从而,客户端设备能够采用回溯的方式,以基于子节点中的更新分包整合出对应元数据的更新分包序列;进而服务端设备可以在生成响应包的时候压缩元数据的数据量,提升更新检查的响应速度。
在本申请实施例中,服务端设备向客户端设备发送携带元数据链的更新响应包之后,该应用更新方法还包括:服务端设备响应于客户端设备针对更新响应包发送的下载请求,遍历下载请求,对每个遍历到的子下载请求执行以下处理:服务端设备基于开始版本和结束版本确定目标差异更新包;并从目标差异更新包中,读取与下载分包序列中的每个下载分包对应的分包差异更新包,得到与下载分包序列对应的分包差异更新包序列;最后,将遍历获得的至少一个分包差异更新包序列下发至客户端设备。
需要说明的是,下载请求包括至少一个子下载请求;子下载请求包括下载分包序列、开始版本和结束版本;目标差异更新包是开始版本与遍历到的元数据中的开始版本一致、且结束版本与遍历到的元数据中的结束版本一致的差异更新包。分包差异更新包是指应用分包从开始版本更新至结束版本的差异数据,用于完成应用分包由开始版本向结束版本的差异更新。
可以理解的是,通过合并M个分包更新链,使得通过一次下载请求就能够获得M个应用分包的至少一个分包差异更新包序列,降低了下载请求次数,从而能够提升应用更新效率。
步骤109、客户端设备基于至少一个分包差异更新包序列,更新待更新应用。
在本申请实施例中,客户端设备在获得了至少一个分包差异更新包序列之后,针对待更新应用中的每个应用分包、以及当前分包版本,从至少一个分包差异更新包序列中匹配分包差异更新包,以将该应用分包从当前分包版本差异更新至最新版本;当完成了每个应用分包从当前分包版本向最新版本的差异更新时,也就完成了待更新应用的更新。这里,服务端设备向客户端设备发送更新响应包,以使客户端设备基于更新响应包更新待更新应用。
可以理解的是,在客户端设备向服务端设备发送了针对M个应用分包的更新检查请求之后,服务端设备基于预先构建的应用更新链确定每个应用分包的分包更新链,并对获得的M个分包更新链进行合并,合并了M个分包更新链中的重合链路,从而能够减少差异更新包的元数据数量,进而能够降低更新响应包的数据量;因此,在通过更新响应包更新待更新应用时,能够提升应用更新效率。另外,通过预先获得应用更新链,使得给定任一最低版本与最新版本之间的任一版本,均能够快速从应用更新链中确定出由该版本更新至最新版本的最短路径;从而,能够降低确定分包更新链的计算消耗,提升分包更新链的确定效率,进而基于分别更新链进行应用更新时,能够提升应用更新效率。
在本申请实施例中,服务端设备从应用更新链中,查找从当前分包版本更新至最新版本的分包更新链之前,该应用更新方法还包括预加载应用更新链的过程。参见图8,图8是本申请实施例提供的获取应用更新链的流程示意图,其中,各步骤的执行主体为服务端设备;下面将结合图8示出的步骤进行说明。
步骤110、将最新版本确定为第i个目标版本。
需要说明的是,服务端设备从最新版本开始,依次确定最低版本与最新版本之间的任一版本的最短差异更新链;从而,服务端设备在发布了最新版本之后,将最新版本确定为第i个目标版本,并迭代i执行确定任一版本的最短差异更新链的处理。其中,i为小于或等于最新版本次序值(比如,最新版本为第11个版本,则最新版本次序值为11)的正整数变量。
在本申请实施例中,服务端设备迭代i执行以下处理(步骤111,步骤112,步骤113A或步骤113B)。
步骤111、基于指定版本量,确定第i个目标版本的N个最近历史版本。
需要说明的是,N小于或等于指定版本量;这里,当第i个目标版本之后、以及最低版本之前的版本集合中,包括指定版本量的版本时,服务端设备能够获得指定版本量的最近历史版本,从而此时N等于指定版本量;而第i个目标版本之后、以及最低版本之前的版本集合中,包括小于指定版本量的版本时,服务端设备能够获得小于指定版本量的最近历史版本,从而此时N小于指定版本量。其中,最近历史版本是指与第i个目标版本最近的历史版本。
步骤112、获取N个最近历史版本分别与第i个目标版本对应的N个差异更新包。
需要说明的是,服务端设备针对N个最近历史版本中的每个最近历史版本,获取从该最近历史版本更新至第i个目标版本的差异更新包,该差异更新包对应的开始版本为该最近历史版本,结束版本为第i个目标版本;从而,针对N个最近历史版本,能够获得N个差异更新包。
步骤113A、当N个最近历史版本中的最低历史版本高于最低版本时,将最低历史版本确定为第i-1个目标版本。
步骤113B、当最低历史版本为最低版本时,将迭代i获得的至少一个差异更新包构建为应用更新链。
在本申请实施例中,服务端设备从N个最近历史版本中获取版本最低的最近历史版本,并将获得的版本最低的最近历史版本称为最低历史版本;接着,比较最低历史版本和最低版本。如果最低历史版本高于最低版本,表明还存在待确定最短差异更新链的版本,从而服务端设备将最低历史版本确定为第i-1个目标版本,继续迭代i执行步骤111、步骤112、步骤113A(或步骤113B);如果最低历史版本为最低版本,表明已获得了最低版本与最新版本之间的任一版本的最大差异更新链,此时迭代结束,并将迭代获得的至少一个差异更新包构建为应用更新链。这里,服务端设备可以基于每个差异更新包的开始版本和结束版本进行应用更新链的构建,以使得构建出的应用更新中一个开始版本与另一个结束版本相同的两个更新差异包之间存在链路。
可以理解的是,在发布最新版本时,针对该最新版本预加载应用更新链,使得客户端设备进行更新检查时,直接基于M个当前分包版本从应用更新链中获取目标更新链即可,降低了资源消耗,也提升了更新检查请求的响应效率。
参见图9,图9是本申请实施例提供的应用更新方法的流程示意图二;如图9所示,在本申请实施例中,步骤102之后,以及步骤105之前,该应用更新方法还包括步骤114至步骤116;也就是说,服务端设备得到M个应用分包对应的M个当前分包版本之后,以及获取目标更新链中差异更新包的元数据,得到元数据链之前,该应用更新方法还包括步骤114至步骤116,下面对各步骤分别进行说明。
在本申请实施例中,服务端设备遍历M个应用分包,对每个遍历到的应用分包执行以下处理(步骤114)。
步骤114、服务端设备从最新版本开始,并以指定版本量为跨度,确定从当前分包版本更新至最新版本的分包版本链。
需要说明的是,服务端设备从最新版本开始,并以指定版本量为跨度,在遍历到的应用分包的当前分包版本与最新版本之间的版本序列中选择目标版本,并将选择的目标版本构建为分包版本链;从而,分包版本链的链接点为目标版本,且在分包版本链中,相邻两个链节点之间的版本差小于或等于指定版本量对应的值。
步骤115、服务端设备将遍历获得的M个分包版本链合并为版本更新链。
在本申请实施例中,当遍历完M个应用分包时,服务端设备能够获得M个分包版本链。当M个分包版本链中存在相同版本的链节点时,确定M个分包版本链中存在重合链路,从而服务端设备合并M个分包版本链中的重合链路,以将M个分包版本链合并为版本更新链;其中,合并后的M个分包版本链即为版本更新链。
步骤116、服务端设备基于最新版本与最低版本之间的全量差异更新包,构建与版本更新链对应的目标更新链。
需要说明的是,在版本更新链中,针对任一相邻的两个链节点,均能够从全量差异更新包中获得一个对应的差异更新包,且获得的该差异更新包的开始版本为两个链节点对应的两个版本中的低版本,结束版本为两个链节点对应的两个版本中的高版本。这里,服务端设备基于版本更新链中的链路关系,将获得的至少一个差异更新包构建为链路,也就获得了目标更新链。
可以理解的是,通过从最新版本开始为每个应用分包确定分包版本链,再基于分别版本链构建目标更新链,使得通过版本链也能够获得目标更新链,提升了确定目标更新链的方式的多样性,进而提升了应用更新的灵活性。
在本申请实施例中,该应用更新方法还包括确定指定版本量的过程。也就是说,服务端设备将版本发布频率和版本活跃度中的至少一种,确定为数量参数;并获取与数量参数负相关的指定版本量。其中,版本发布频率是指待更新应用发布版本的频率,版本活跃度是指待更新应用请求更新的频率。
在本申请实施例中,步骤108之前还包括获取M个更新总量的过程;也就是说,客户端设备基于元数据链,获得至少一个分包差异更新包序列之前,该应用方法还包括:客户端设备基于更新响应包,获得M个应用分包对应的M个更新总量。其中,客户端设备可以是从更新响应包中读取到的M个更新总量;还可以是基于更新响应包的元数据中的分包更新量序列累加出的M个更新总量。
在本申请实施例中,步骤108中客户端设备基于元数据链,获得至少一个分包差异更新包序列,包括:当M个更新总量小于空闲空间量时,客户端设备基于元数据链,从服务端设备下载至少一个分包差异更新包序列。
需要说明的是,客户端设备将M个更新总量与客户端设备中的空闲空间量进行比较,当确定M个更新总量大于或等于空闲空间量时,确定空间不足够应用更新,结束后续下载处理;而当M个更新总量小于空闲空间量时,表明空间足够,从而继续执行下载处理。
在本申请实施例中,步骤109之后还包括应用更新信息显示过程;也就是说,客户端设备基于至少一个分包差异更新包序列,更新待更新应用之后,该应用更新方法还包括:客户端设备在更新待更新应用的过程中,基于更新总量显示应用更新信息。
需要说明的是,应用更新信息可以是以下中的任一项:当前更新的应用分包的更新总量、M个更新总量,基于当前网速确定的更新进度,当前网速,预估更新耗时,等等。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。该示例性应用描述了更新游戏资源的过程;另外,这里所描述的更新游戏资源的过程,用于示例性描述本申请实施例提供的应用更新方法,易知,本申请实施例提供的应用更新方法还可以适用于社交应用或者其他任何类型应用的更新,本申请实施例在此不再一一描述。
需要说明的是,游戏每发布一个新版本,对近N个版本(称为N个最近历史版本)生成差异包(称为差异更新包),N可以根据游戏版本的发布频率(称为)和版本活跃度调节。例如,发布游戏版本4(记为V4)时,创建版本1(记为V1)到版本4的差异包(记为D1-4)、版本2(记为V2)到版本4的差异包(记为D2-4)、版本3(记为V3)到版本4的差异包(记为D3-4)。发布游戏版本11(记为V11)时,创建版本8(记为V8)到版本11的差异包(记为D8-11)、版本9(记为V9)到版本11的差异包(记为D9-11)、版本10(记为V10)到版本11的差异包(记为D10-11);此时,游戏版本8的客户端可以直接下载D8-11进行更新,游戏版本9的客户端可以直接下载D9-11进行更新,游戏版本10的客户端可以直接下载D10-11进行更新;而除游戏版本8至游戏版本10的客户端之外的其他游戏版本的客户端,可以进行差异更新,可以采用链式差异更新。
参见表1,示例性地示出了差异表,包括开始版本、结束版本、以及对应的更新差异包D三个字段。
表1
其中,Di-j表示从版本i更新至版本j的差异包。
易知,当客户端的游戏版本为V1时,以跨度最大原则从表1中找到差异更新链V1-V4-V7-V10-V11,对应的差异包分别为D1-4、D4-7、D7-10和D10-11。从而,当游戏资源包括多个分包(称为M个应用分包)时,针对每个分包获取对应的差异更新链(称为分包更新链);比如,游戏资源包括3个分包,分别对应的分包版本如表2所示。
表2
参见如表3所示的差异表。
表3
参见图10,图10是本申请实施例提供的一种示例性的获取更新链的示意图;如图10所示,针对表2中的分包标识101,获得的为差异更新链10-1,即为:版本1-版本4-版本7-版本10-版本11(称为分包版本链);分包标识102,获得的为差异更新链10-2,即为:版本2-版本5-版本8-版本11(称为分包版本链);分包标识103,获得的为差异更新链10-3,即为:版本3-版本6-版本9-版本11(称为分包版本链)。
需要说明的是,从当前版本出发寻找到最高版本的链路,当分包的当前版本不一样时,得到的更新链路就是“错开”的,如差异更新链10-1、差异更新链10-2和差异更新链10-3。如果从最高版本出发,自顶向下查找到当前版本,则多个分包的更新链路大部分是重合的;也就是说,能够将差异更新链10-1、差异更新链10-2和差异更新链10-3合并为差异更新链10-4(称为版本更新链)。如此,差异包的数量从10降到5,多条差异更新链演变成一棵多叉树(N-ary树)。
可以理解的是,N-ary树的引入能实现差异包节点的复用,降低差异包元数据和检查更新响应包的数据量。另外,通过链式差异更新,实现了对历史差异包的利用。
下面说明差异更新树的预加载与子差异更新树的生成。
需要说明的是,在发布最新版本时,枚举计算出所有分包的所有历史版本到最高版本的差异更新链,并将所有历史版本到最高版本的差异更新链合并成差异更新树(称为应用更新链),并将该差异更新树加载进内存,以实现差异更新树的预加载。
参见图11,图11是本申请实施例提供的一种示例性的差异更新树;如图11所示,最新资源版本为版本11;由版本10更新至版本11时,对应的差异包为差异包10-11;由版本9更新至版本11时,对应的差异包为差异包9-11;由版本8更新至版本11时,对应的差异包为差异包8-11;由版本7更新至版本11时,由于能够从历史差异包中获得由版本7更新至版本8的差异包7-8、以及能够获得差异包8-11,从而,对应的差异更新链如箭头11-11所示,对应的差异包为差异包7-8和差异包8-11;由版本6更新至版本11时,由于能够从历史差异包中获得由版本6更新至版本8的差异包6-8、以及能够获得差异包8-11,从而,对应的差异更新链如箭头11-12所示,对应的差异包为差异包6-8和差异包8-11;如此,由版本5更新至版本11时,如箭头11-13所示,对应的差异包为差异包5-8和差异包8-11;由版本4更新至版本11时,如箭头11-14和箭头11-13所示,对应的差异包为差异包4-5、差异包5-8和差异包8-11;由版本3更新至版本11时,如箭头11-15和箭头11-13所示,对应的差异包为差异包3-5、差异包5-8和差异包8-11;由版本2更新至版本11时,如箭头11-16和箭头11-13所示,对应的差异包为差异包2-5、差异包5-8和差异包8-11;由版本1更新至版本11时,如箭头11-17、箭头11-16和箭头11-13所示,对应的差异包为差异包1-2、差异包2-5、差异包5-8和差异包10-11。如此,也就得到了差异更新树11-1(称为应用更新链)。
需要说明的是,当客户端进行检查更新时,服务器从预加载的差异更新树中查找子树(称为目标更新链)即可。
基于图11,参见图12,图12是本申请实施例提供的一种示例性的生成子差异更新树的示意图;如图12所示,在分包版本信息12-1(称为M个应用分包对应的M个当前分包版本)中,由于分包12-1的当前版本(称为当前分包版本)为版本1,从而在差异更新树11-1中命中的差异包为差异包1-2,接着从差异更新树11-1中获得对应的差异更新链为差异包1-2至差异包2-5至差异包5-8至差异包8-11;由于分包12-2的当前版本为版本4,从而在差异更新树11-1中命中的差异包为差异包4-5,接着获得对应的差异更新链为差异包4-5至差异包5-8至差异包8-11;由于分包12-3的当前版本为版本6,从而在差异更新树11-1中命中的差异包为差异包6-8,接着获得对应的差异更新链为差异包6-8至差异包8-11;由于分包12-4的当前版本为版本9,从而在差异更新树11-1中命中的差异包为差异包9-11,接着获得对应的差异更新链为差异包9-11;由于分包12-5的当前版本为版本10,从而在差异更新树11-1中命中的差异包为差异包10-11,接着获得对应的差异更新链为差异包10-11。这里,将差异包1-2至差异包2-5至差异包5-8至差异包8-11、差异包4-5至差异包5-8至差异包8-11、差异包6-8至差异包8-11、差异包9-11和差异包10-11组成的多叉树称为子差异更新子树(称为元数据链)。
需要说明的是,服务器向客户端返回的子差异更新树中的每一个节点包括如下信息:待基于该节点对应的差异包进行更新的分包列表(称为更新分包序列);分包列表中每个分包对应的待更新量(称为分包更新量序列)。其中,每次最新版本的发布存在更新部分分包的情况,而无更新分包此时升级版本号,另外,基于每个节点的每个分包对应的待更新量,用于交互展示更新信息、以及用于客户端设备的存储空间评估。
示例性地,参见图13,图13是本申请实施例提供的一种示例性的子差异更新树;如图13所示,针对当前版本信息13-1(分包13-11的当前版本为版本1,分包13-12的当前版本为版本2,分包13-13的当前版本为版本4,分包13-14的当前版本为版本6),在对应的子差异更新树13-2(称为元数据链)中,每个节点(称为元数据)包含了分包列表和对应的待更新量列表。其中,差异包8-11对应的节点包括分包列表“分包13-11|分包13-12|分包13-13|分包13-14”和对应的待更新量列表“0|0|6兆|8兆”,差异包6-8对应的节点包括分包列表“分包13-14”和对应的待更新量列表“0”,差异包5-8对应的节点包括分包列表“分包13-11|分包13-12|分包13-13”和对应的待更新量列表“3兆|4兆|0”,差异包4-5对应的节点包括分包列表“分包13-13”和对应的待更新量列表“4兆”,差异包2-5对应的节点包括分包列表“分包13-11|分包13-12”和对应的待更新量列表“0|5兆”,差异包1-2对应的节点包括分包列表“分包13-11”和对应的待更新量列表“8兆”。
需要说明的是,还可以对图13中的子差异更新树13-2进行压缩。示例性地,基于13,参见图14,图14是本申请实施例提供的另一种示例性的子差异更新树;如图14所示,在子差异更新树14-1中,差异包1-2的开始版本(版本1)与分包13-11一致,以及8兆大于0,从而差异包1-2对应的节点包括分包列表“分包13-11”和对应的更新标识列表(称为更新标识序列)“1”。差异包2-5的开始版本(版本2)与分包13-12一致,以及5兆大于0,从而差异包2-5对应的节点包括分包列表“分包13-12”和对应的更新标识列表“0|1”。差异包4-5的开始版本(版本4)与分包13-13一致,以及4兆大于0,从而差异包4-5对应的节点包括分包列表“分包13-13”和对应的更新标识列表“1”。差异包5-8的开始版本(版本4)与各分包的版本均不同,以及3兆和4兆均大于0,从而差异包4-5对应的节点包括更新标识列表“1|1|0”。差异包6-8的开始版本(版本6)与分包13-14的版本一致,从而差异包6-8对应的节点包括分包列表“分包13-14”和更新标识列表“0”。差异包8-11的开始版本(版本8)与各分包的版本均不同,以及6兆和8兆均大于0,从而差异包4-5对应的节点包括更新标识列表“0|0|1|1”。
需要说明的是,在压缩后的子差异更新树中,父节点的分包列表中包括子节点的分包列表。比如图13中,差异包2-5的分包列表包括分包13-11和分包13-12,其中,差异包1-2的分包列表中也包括分包13-11;因此,在图14中,差异包2-5记录分包13-12,由差异包1-2确定差异包2-5还对应分包13-11;同理,合并差异包2-5的分包列表和差异包4-5的分包列表,即可得到差异包5-8的分包列表。从而,在压缩后的子差异更新树中,在最初命中的节点中记录更新检测请求中所请求的分包,剩余节点包含的分包列表通过树的回溯从子节点推导获得;并且,待更新量列表转换为更新标识列表,更新标识列表中的每个更新标识表示对应分包是否更新,采用一个比特(bit)记录该更新标识,从而,采用位图(BitMap)描述更新标识列表,以确定对应分包列表中的每个分包是否有更新;此外,服务器针对子差异更新树,累加出每个分包的总更新量,服务器返回的总更新量用于交互展示和存储空间评估。
需要说明的是,当基于多叉树进行游戏更新时,能够细化游戏的资源分包粒度,降低游戏安装完成时所占的存储空间,以实现边游戏边下载和按需下载。
示例性地,参见图15,图15是本申请实施例提供的一种示例性的下载示意图;如图15所示,界面15-1描述的为完成游戏安装之后,进入游戏进行互动操作时,启动更新并下载数据(34兆)的情况。
示例性地,参见图16,图16是本申请实施例提供的另一种示例性的下载示意图;如图16所示,界面16-1描述的为游戏中界面,界面16-2描述的为通过在界面16-1上进行下载操作,以分包集合的方式下载数据的情况,即为边游戏边下载的情况。
示例性地,参见图17,图17是本申请实施例提供的又一种示例性的下载示意图;如图17所示,界面17-1描述的为选择待下载语音包的界面,当完成选择时,如界面17-2所示,进行数据的按需下载。
可以理解的是,当分包数量达到千级或万级或者比万级更高时,通过多叉树的信息压缩,比如,跨度为100的检查更新的更新响应包可以由兆级别下降至千字节(Kilobyte,KB)级别,能降低更新响应包的数据量,降低了检查更新的耗时,提升了更新成功率。另外,通过预加载差异更新树,使得每次检查更新通过获取差异更新树的子树即可,提升了更新响应包的获取效率,进而提升了检查更新的效率。以及,本申请实施例通过将各个资源的差异更新链进行合并,能够降低对CDN的请求次数;此外,由于本申请实施例降低了更新响应包的数据量,能够提升差异更新的适用范围,为分包的细化提供支持,进而降低游戏应用资源下载量,提升游戏应用安装和更新的效率,提升游戏操作的灵活性。
下面继续说明本申请实施例提供的第一应用更新装置455的实施为软件模块的示例性结构,在一些实施例中,如图5所示,存储在第一存储器450的第一应用更新装置455中的软件模块可以包括:
请求响应模块4551,用于响应于客户端设备针对待更新应用发送的更新检查请求,得到M个应用分包对应的M个当前分包版本,M为大于1的正整数;
分包处理模块4552,用于遍历M个所述应用分包,对每个遍历到的所述应用分包执行以下处理:从应用更新链中,查找从所述当前分包版本更新至最新版本的分包更新链,所述应用更新链包括任一版本更新至所述最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路;
链路合并模块4553,用于将遍历获得的M个所述分包更新链合并为目标更新链;
数据获取模块4554,用于获取所述目标更新链中所述差异更新包的元数据,得到元数据链;
更新响应模块4555,用于向所述客户端设备发送携带所述元数据链的更新响应包,以使所述客户端设备基于所述更新响应包更新所述待更新应用。
在本申请实施例中,所述链路合并模块4553,还用于遍历M个所述应用分包,对每个遍历到的所述应用分包执行以下处理:从所述最新版本开始,并以指定版本量为跨度,确定从所述当前分包版本更新至所述最新版本的分包版本链;将遍历获得的M个所述分包版本链合并为版本更新链;基于所述最新版本与最低版本之间的全量所述差异更新包,构建与所述版本更新链对应的所述目标更新链。
在本申请实施例中,所述分包处理模块4552,还用于将所述最新版本确定为第i个目标版本,迭代i执行以下处理,i为小于或等于最新版本次序值的正整数变量:基于指定版本量,确定第i个所述目标版本的N个最近历史版本,N小于或等于所述指定版本量;获取N个所述最近历史版本分别与第i个所述目标版本对应的N个所述差异更新包;当N个所述最近历史版本中的最低历史版本高于最低版本时,将所述最低历史版本确定为第i-1个所述目标版本;当所述最低历史版本为所述最低版本时,将迭代i获得的至少一个所述差异更新包构建为所述应用更新链。
在本申请实施例中,所述分包处理模块4552,还用于将版本发布频率和版本活跃度中的至少一种,确定为数量参数,所述版本发布频率是指所述待更新应用发布版本的频率,所述版本活跃度是指所述待更新应用请求更新的频率;获取与所述数量参数负相关的所述指定版本量。
在本申请实施例中,所述数据获取模块4554,还用于遍历所述目标更新链,对每个遍历到的所述差异更新包执行以下处理,所述差异更新包中包括开始版本和结束版本:获取所述差异更新包的更新分包序列和分包更新量序列,所述更新分包序列中的更新分包表示待从所述开始版本更新至所述结束版本的所述应用分包,所述分包更新量序列中的分包更新量表示所述更新分包从所述开始版本更新至所述结束版本的数据量;将所述开始版本和所述结束版本、以及所述更新分包序列和所述分包更新量序列,确定为所述元数据;将遍历获得的至少一个所述元数据,构建为所述元数据链。
在本申请实施例中,所述数据获取模块4554,还用于比较所述分包更新量序列中的每个所述分包更新量与更新量阈值,得到更新标识序列;当所述开始版本为所述当前分包版本时,将所述更新标识序列、所述开始版本、所述结束版本、以及所述当前分包版本对应的至少一个所述应用分包,确定为所述元数据;当所述开始版本与M个所述当前分包版本均不同时,将所述更新标识序列、所述开始版本、以及所述结束版本,确定为所述元数据。
在本申请实施例中,所述更新响应模块4555,还用于由每个所述差异更新包的所述分包更新量序列,得到与所述目标更新链对应的至少一个所述分包更新量序列;基于至少一个所述分包更新量序列,累加每个所述应用分包的更新总量,得到与M个所述应用分包对应的M个所述更新总量;生成携带所述元数据链和M个所述更新总量的所述更新响应包;向所述客户端设备发送所述更新响应包。
在本申请实施例中,所述第一应用更新装置455还包括数据下发模块4556,用于响应于所述客户端设备针对所述更新响应包发送的下载请求,遍历所述下载请求,对每个遍历到的子下载请求执行以下处理,所述下载请求包括至少一个所述子下载请求;所述子下载请求包括下载分包序列、开始版本和结束版本:基于所述开始版本和所述结束版本确定目标差异更新包;从所述目标差异更新包中,读取与所述下载分包序列中的每个下载分包对应的分包差异更新包,得到与所述下载分包序列对应的分包差异更新包序列;将遍历获得的至少一个分包差异更新包序列下发至所述客户端设备。
下面继续说明本申请实施例提供的第二应用更新装置255的实施为软件模块的示例性结构,在一些实施例中,如图6所示,存储在第二存储器250的第二应用更新装置255中的软件模块可以包括:
更新检查模块2551,用于响应于针对待更新应用的应用更新操作,向服务端设备发送更新检查请求,以使所述服务端设备基于应用更新链确定与M个应用分包对应的M个分包更新链,并通过合并M个所述分包更新链中的重合链路得到携带元数据链的更新响应包,所述应用更新链包括任一版本更新至最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路,M为大于1的正整数;
数据读取模块2552,用于从所述服务端设备响应于所述更新检查请求所发送的所述更新响应包中,获得所述元数据链;
数据下载模块2553,用于基于所述元数据链,获得至少一个分包差异更新包序列;
应用更新模块2554,用于基于至少一个所述分包差异更新包序列,更新所述待更新应用。
在本申请实施例中,所述数据下载模块2553,还用于遍历所述元数据链,对每个遍历到的元数据执行以下处理,所述元数据包括开始版本、结束版本、更新分包序列和分包更新量序列,所述更新分包序列中的更新分包表示待从所述开始版本更新至所述结束版本的所述应用分包,所述分包更新量序列中的分包更新量表示所述更新分包从所述开始版本更新至所述结束版本的数据量:基于所述更新分包序列和所述分包更新量序列,确定下载分包序列;生成携带所述下载分包序列、所述开始版本和所述结束版本的子下载请求;将遍历获得的至少一个所述子下载请求,确定为下载请求;向所述服务端设备发送下载请求;接收所述服务端设备响应于所述下载请求所下发的至少一个所述分包差异更新包序列。
在本申请实施例中,所述数据下载模块2553,还用于遍历所述元数据链,对每个遍历到的所述元数据执行以下处理,所述元数据包括开始版本、结束版本和更新标识序列;从所述元数据链中,获取以所述元数据为根节点的节点序列;确定所述节点序列中的目标节点序列,所述目标节点序列中的目标节点包括至少一个所述应用分包;整合所述目标节点序列分别对应的至少一个所述应用分包,得到所述更新分包序列;基于所述更新分包序列和所述更新标识序列,确定所述下载分包序列。
在本申请实施例中,所述数据下载模块2553,还用于基于所述更新响应包,获得M个所述应用分包对应的M个更新总量。
在本申请实施例中,所述应用更新模块2554,还用于当M个所述更新总量小于空闲空间量时,基于所述元数据链,从所述服务端设备下载至少一个所述分包差异更新包序列;在更新所述待更新应用的过程中,基于所述更新总量显示应用更新信息。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机可执行指令或者计算机程序,该计算机可执行指令或者计算机程序存储在计算机可读存储介质中。服务端设备的第一处理器从计算机可读存储介质读取该计算机可执行指令或者计算机程序,第一处理器执行该计算机可执行指令或者计算机程序,使得该服务端设备执行本申请实施例上述的应用于服务端设备的应用更新方法。或者,客户端设备的第二处理器从计算机可读存储介质读取该计算机可执行指令或者计算机程序,第二处理器执行该计算机可执行指令或者计算机程序,使得该客户端设备执行本申请实施例上述的应用于客户端设备的应用更新方法。
本申请实施例提供一种计算机可读存储介质,其中存储有计算机可执行指令或者计算机程序,当计算机可执行指令或者计算机程序被第一处理器执行时,将引起处理器执行本申请实施例提供的应用于服务端设备的应用更新方法;或者,当计算机可执行指令或者计算机程序被第二处理器执行时,将引起处理器执行本申请实施例提供的应用于客户端设备的应用更新方法;例如,如图7示出的应用更新方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,计算机可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,计算机可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(Hyper TextMarkup Language,HTML)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,计算机可执行指令可被部署为在位于一个地点的多个电子设备上执行(此时,位于一个地点的多个电子设备即为服务端设备和客户端设备),又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行(此时,分布在多个地点且通过通信网络互连的多个电子设备即为服务端设备和客户端设备)。
可以理解的是,在本申请实施例中,涉及到版本等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
综上所述,本申请实施例在客户端设备向服务端设备发送了针对M个应用分包的更新检查请求之后,服务端设备基于最新版本与最低版本之间的各个差异更新包构建每个应用分包的分包更新链,并对获得的M个分包更新链进行合并,合并了M个分包更新链中的重合链路,从而能够减少差异更新包的元数据数量,进而能够降低更新响应包的数据量;因此,在通过更新响应包更新待更新应用时,能够提升应用更新效率。另外,在发布最新版本时,通过预加载应用更新链,使得每次响应更新检查请求时,能够快速从应用更新链中获得分包更新链,提升更新响应包的获取效率,进而提升更新检查的效率。此外,通过对更新差异包的元数据中的分包更新序列和分包更新量序列进行压缩,降低了更新响应包的数据量,能够提升更新检查的成功率,还能够为分包细化提供数据支持,提升应用操作的灵活性。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (16)

1.一种应用更新方法,其特征在于,所述方法包括:
将最新版本确定为第i个目标版本,迭代i执行以下处理,i为小于或等于最新版本次序值的正整数变量:基于指定版本量,确定第i个所述目标版本的N个最近历史版本,N小于或等于所述指定版本量;获取N个所述最近历史版本分别与第i个所述目标版本对应的N个差异更新包;当N个所述最近历史版本中的最低历史版本高于最低版本时,将所述最低历史版本确定为第i-1个所述目标版本;当所述最低历史版本为所述最低版本时,将迭代i获得的至少一个所述差异更新包构建为应用更新链;
响应于客户端设备针对待更新应用发送的更新检查请求,得到M个应用分包对应的M个当前分包版本,M为大于1的正整数;
遍历M个所述应用分包,对每个遍历到的所述应用分包执行以下处理:
从应用更新链中,查找从所述当前分包版本更新至最新版本的分包更新链,所述应用更新链包括任一版本更新至所述最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路;
将遍历获得的M个所述分包更新链合并为目标更新链;
获取所述目标更新链中所述差异更新包的元数据,得到元数据链;
向所述客户端设备发送携带所述元数据链的更新响应包,以使所述客户端设备基于所述更新响应包更新所述待更新应用。
2.根据权利要求1所述的方法,其特征在于,所述得到M个应用分包对应的M个当前分包版本之后,以及所述获取所述目标更新链中所述差异更新包的元数据,得到元数据链之前,所述方法还包括:
遍历M个所述应用分包,对每个遍历到的所述应用分包执行以下处理:
从所述最新版本开始,并以指定版本量为跨度,确定从所述当前分包版本更新至所述最新版本的分包版本链;
将遍历获得的M个所述分包版本链合并为版本更新链;
基于所述最新版本与最低版本之间的全量所述差异更新包,构建与所述版本更新链对应的所述目标更新链。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将版本发布频率和版本活跃度中的至少一种,确定为数量参数,所述版本发布频率是指所述待更新应用发布版本的频率,所述版本活跃度是指所述待更新应用请求更新的频率;
获取与所述数量参数负相关的所述指定版本量。
4.根据权利要求1或2所述的方法,其特征在于,所述获取所述目标更新链中所述差异更新包的元数据,得到元数据链,包括:
遍历所述目标更新链,对每个遍历到的所述差异更新包执行以下处理,所述差异更新包中包括开始版本和结束版本:
获取所述差异更新包的更新分包序列和分包更新量序列,所述更新分包序列中的更新分包表示待从所述开始版本更新至所述结束版本的所述应用分包,所述分包更新量序列中的分包更新量表示所述更新分包从所述开始版本更新至所述结束版本的数据量;
将所述开始版本和所述结束版本、以及所述更新分包序列和所述分包更新量序列,确定为所述元数据;
将遍历获得的至少一个所述元数据,构建为所述元数据链。
5.根据权利要求4所述的方法,其特征在于,所述获取所述差异更新包的更新分包序列和分包更新量序列之后,以及所述将遍历获得的至少一个所述元数据,构建为所述元数据链之前,所述方法还包括:
比较所述分包更新量序列中的每个所述分包更新量与更新量阈值,得到更新标识序列;
当所述开始版本为所述当前分包版本时,将所述更新标识序列、所述开始版本、所述结束版本、以及所述当前分包版本对应的至少一个所述应用分包,确定为所述元数据;
当所述开始版本与M个所述当前分包版本均不同时,将所述更新标识序列、所述开始版本、以及所述结束版本,确定为所述元数据。
6.根据权利要求5所述的方法,其特征在于,所述向所述客户端设备发送携带所述元数据链的更新响应包,包括:
由每个所述差异更新包的所述分包更新量序列,得到与所述目标更新链对应的至少一个所述分包更新量序列;
基于至少一个所述分包更新量序列,累加每个所述应用分包的更新总量,得到与M个所述应用分包对应的M个所述更新总量;
生成携带所述元数据链和M个所述更新总量的所述更新响应包;
向所述客户端设备发送所述更新响应包。
7.根据权利要求1或2所述的方法,其特征在于,所述向所述客户端设备发送携带所述元数据链的更新响应包之后,所述方法还包括:
响应于所述客户端设备针对所述更新响应包发送的下载请求,遍历所述下载请求,对每个遍历到的子下载请求执行以下处理,所述下载请求包括至少一个所述子下载请求;所述子下载请求包括下载分包序列、开始版本和结束版本:
基于所述开始版本和所述结束版本确定目标差异更新包;
从所述目标差异更新包中,读取与所述下载分包序列中的每个下载分包对应的分包差异更新包,得到与所述下载分包序列对应的分包差异更新包序列;
将遍历获得的至少一个所述分包差异更新包序列下发至所述客户端设备。
8.一种应用更新方法,其特征在于,所述方法包括:
响应于针对待更新应用的应用更新操作,向服务端设备发送更新检查请求,以使所述服务端设备基于应用更新链确定与M个应用分包对应的M个分包更新链,并通过合并M个所述分包更新链中的重合链路得到携带元数据链的更新响应包,所述应用更新链包括任一版本更新至最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路,M为大于1的正整数;
从所述服务端设备响应于所述更新检查请求所发送的所述更新响应包中,获得所述元数据链;
基于所述元数据链,获得至少一个分包差异更新包序列;
基于至少一个所述分包差异更新包序列,更新所述待更新应用;
所述应用更新链由所述服务端设备将所述最新版本确定为第i个目标版本,并迭代i执行以下处理获得,i为小于或等于最新版本次序值的正整数变量:基于指定版本量,确定第i个所述目标版本的N个最近历史版本,N小于或等于所述指定版本量;获取N个所述最近历史版本分别与第i个所述目标版本对应的N个所述差异更新包;当N个所述最近历史版本中的最低历史版本高于最低版本时,将所述最低历史版本确定为第i-1个所述目标版本;当所述最低历史版本为所述最低版本时,将迭代i获得的至少一个所述差异更新包构建为所述应用更新链。
9.根据权利要求8所述的方法,其特征在于,所述基于所述元数据链,获得至少一个分包差异更新包序列,包括:
遍历所述元数据链,对每个遍历到的元数据执行以下处理,所述元数据包括开始版本、结束版本、更新分包序列和分包更新量序列,所述更新分包序列中的更新分包表示待从所述开始版本更新至所述结束版本的所述应用分包,所述分包更新量序列中的分包更新量表示所述更新分包从所述开始版本更新至所述结束版本的数据量:
基于所述更新分包序列和所述分包更新量序列,确定下载分包序列;
生成携带所述下载分包序列、所述开始版本和所述结束版本的子下载请求;
将遍历获得的至少一个所述子下载请求,确定为下载请求;
向所述服务端设备发送所述下载请求;
接收所述服务端设备响应于所述下载请求所下发的至少一个所述分包差异更新包序列。
10.根据权利要求9所述的方法,其特征在于,所述生成携带所述下载分包序列、所述开始版本和所述结束版本的子下载请求之前,所述方法还包括:
遍历所述元数据链,对每个遍历到的所述元数据执行以下处理,所述元数据包括开始版本、结束版本和更新标识序列;
从所述元数据链中,获取以所述元数据为根节点的节点序列;
确定所述节点序列中的目标节点序列,所述目标节点序列中的目标节点包括至少一个所述应用分包;
整合所述目标节点序列分别对应的至少一个所述应用分包,得到所述更新分包序列;
基于所述更新分包序列和所述更新标识序列,确定所述下载分包序列。
11.根据权利要求8至10任一项所述的方法,其特征在于,所述基于所述元数据链,获得至少一个分包差异更新包序列之前,所述方法还包括:
基于所述更新响应包,获得M个所述应用分包对应的M个更新总量;
所述基于所述元数据链,获得至少一个分包差异更新包序列,包括:
当M个所述更新总量小于空闲空间量时,基于所述元数据链,从所述服务端设备下载至少一个所述分包差异更新包序列;
所述基于至少一个所述分包差异更新包序列,更新所述待更新应用之后,所述方法还包括:
在更新所述待更新应用的过程中,基于所述更新总量显示应用更新信息。
12.一种第一应用更新装置,其特征在于,所述第一应用更新装置包括:
请求响应模块,用于响应于客户端设备针对待更新应用发送的更新检查请求,得到M个应用分包对应的M个当前分包版本,M为大于1的正整数;
分包处理模块,用于遍历M个所述应用分包,对每个遍历到的所述应用分包执行以下处理:从应用更新链中,查找从所述当前分包版本更新至最新版本的分包更新链,所述应用更新链包括任一版本更新至所述最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路;
链路合并模块,用于将遍历获得的M个所述分包更新链合并为目标更新链;
数据获取模块,用于获取所述目标更新链中所述差异更新包的元数据,得到元数据链;
更新响应模块,用于向所述客户端设备发送携带所述元数据链的更新响应包,以使所述客户端设备基于所述更新响应包更新所述待更新应用;
所述分包处理模块,还用于将最新版本确定为第i个目标版本,迭代i执行以下处理,i为小于或等于最新版本次序值的正整数变量:基于指定版本量,确定第i个所述目标版本的N个最近历史版本,N小于或等于所述指定版本量;获取N个所述最近历史版本分别与第i个所述目标版本对应的N个所述差异更新包;当N个所述最近历史版本中的最低历史版本高于最低版本时,将所述最低历史版本确定为第i-1个所述目标版本;当所述最低历史版本为所述最低版本时,将迭代i获得的至少一个所述差异更新包构建为所述应用更新链。
13.一种第二应用更新装置,其特征在于,所述第二应用更新装置包括:
更新检查模块,用于响应于针对待更新应用的应用更新操作,向服务端设备发送更新检查请求,以使所述服务端设备基于应用更新链确定与M个应用分包对应的M个分包更新链,并通过合并M个所述分包更新链中的重合链路得到携带元数据链的更新响应包,所述应用更新链包括任一版本更新至最新版本的最短差异更新链,所述最短差异更新链是自所述最新版本向任一版本确定的差异更新包的最短链路,M为大于1的正整数,所述应用更新链由所述服务端设备将所述最新版本确定为第i个目标版本,并迭代i执行以下处理获得,i为小于或等于最新版本次序值的正整数变量:基于指定版本量,确定第i个所述目标版本的N个最近历史版本,N小于或等于所述指定版本量;获取N个所述最近历史版本分别与第i个所述目标版本对应的N个所述差异更新包;当N个所述最近历史版本中的最低历史版本高于最低版本时,将所述最低历史版本确定为第i-1个所述目标版本;当所述最低历史版本为所述最低版本时,将迭代i获得的至少一个所述差异更新包构建为所述应用更新链;
数据读取模块,用于从所述服务端设备响应于所述更新检查请求所发送的所述更新响应包中,获得所述元数据链;
数据下载模块,用于基于所述元数据链,获得至少一个分包差异更新包序列;
应用更新模块,用于基于至少一个所述分包差异更新包序列,更新所述待更新应用。
14.一种用于应用更新的服务端设备,其特征在于,所述服务端设备包括:
第一存储器,用于存储计算机可执行指令或者计算机程序;
第一处理器,用于执行所述第一存储器中存储的计算机可执行指令或者计算机程序时,实现权利要求1至7任一项所述的应用更新方法。
15.一种用于应用更新的客户端设备,其特征在于,所述客户端设备包括:
第二存储器,用于存储计算机可执行指令或者计算机程序;
第二处理器,用于执行所述第二存储器中存储的计算机可执行指令或者计算机程序时,实现权利要求8至11任一项所述的应用更新方法。
16.一种计算机可读存储介质,存储有计算机可执行指令或者计算机程序,其特征在于,所述计算机可执行指令或者计算机程序被第一处理器执行时,实现权利要求1至7任一项所述的应用更新方法;或者,所述计算机可执行指令或者计算机程序被第二处理器执行时,实现权利要求8至11任一项所述的应用更新方法。
CN202311194657.1A 2023-09-15 2023-09-15 一种应用更新方法、装置、设备及计算机可读存储介质 Active CN116932014B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311194657.1A CN116932014B (zh) 2023-09-15 2023-09-15 一种应用更新方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311194657.1A CN116932014B (zh) 2023-09-15 2023-09-15 一种应用更新方法、装置、设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN116932014A CN116932014A (zh) 2023-10-24
CN116932014B true CN116932014B (zh) 2023-12-12

Family

ID=88382895

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311194657.1A Active CN116932014B (zh) 2023-09-15 2023-09-15 一种应用更新方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN116932014B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104066077A (zh) * 2014-06-24 2014-09-24 青岛海信移动通信技术股份有限公司 一种ota下载升级方法及装置
CN104657170A (zh) * 2013-11-25 2015-05-27 腾讯科技(上海)有限公司 一种数据更新方法、装置及系统
CN106201614A (zh) * 2016-07-11 2016-12-07 天津中兴智联科技有限公司 一种可对多种同类软件进行链式升级的通用方法及系统
CN110231948A (zh) * 2019-06-10 2019-09-13 腾讯科技(成都)有限公司 应用程序方法、装置、系统、存储介质和计算机设备
CN112947983A (zh) * 2021-04-15 2021-06-11 网易(杭州)网络有限公司 应用程序更新方法及装置、电子设备、存储介质
CN115167907A (zh) * 2022-06-24 2022-10-11 北京奕斯伟计算技术股份有限公司 终端设备升级方法、服务器、电子设备及存储介质
CN115756544A (zh) * 2022-11-21 2023-03-07 立讯精密科技(南京)有限公司 一种设备更新方法、装置、电子设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140033188A1 (en) * 2012-07-26 2014-01-30 Microsoft Corporation System updates from cloud blob storage using vhd differentials
US10817279B1 (en) * 2019-04-16 2020-10-27 EMC IP Holding Company LLC Providing different upgrade paths for upgrading a server

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104657170A (zh) * 2013-11-25 2015-05-27 腾讯科技(上海)有限公司 一种数据更新方法、装置及系统
CN104066077A (zh) * 2014-06-24 2014-09-24 青岛海信移动通信技术股份有限公司 一种ota下载升级方法及装置
CN106201614A (zh) * 2016-07-11 2016-12-07 天津中兴智联科技有限公司 一种可对多种同类软件进行链式升级的通用方法及系统
CN110231948A (zh) * 2019-06-10 2019-09-13 腾讯科技(成都)有限公司 应用程序方法、装置、系统、存储介质和计算机设备
CN112947983A (zh) * 2021-04-15 2021-06-11 网易(杭州)网络有限公司 应用程序更新方法及装置、电子设备、存储介质
CN115167907A (zh) * 2022-06-24 2022-10-11 北京奕斯伟计算技术股份有限公司 终端设备升级方法、服务器、电子设备及存储介质
CN115756544A (zh) * 2022-11-21 2023-03-07 立讯精密科技(南京)有限公司 一种设备更新方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN116932014A (zh) 2023-10-24

Similar Documents

Publication Publication Date Title
US10257110B2 (en) Using a template to update a stack of resources
KR102338208B1 (ko) 데이터를 처리하기 위한 방법, 장치 및 시스템
CN103338135B (zh) 一种集群存储容量的实时监控方法
CN105122237A (zh) 共享应用程序状态
CN105094890A (zh) 一种应用程序插件加载方法及装置
CN111049870B (zh) 应用下载和发送的方法、装置及系统
CN102289382B (zh) 电视软件更新方法、装置及系统
CN103475688A (zh) 用于下载网站数据的分布式方法和系统
CN111111214B (zh) 一种游戏存档的处理方法、装置及系统
CN116680040A (zh) 一种容器处理方法、装置、设备、存储介质及程序产品
CN112394932A (zh) 浏览器网页自动换肤方法及装置
CN103077186B (zh) 一种断层数据处理装置和方法
CN116932014B (zh) 一种应用更新方法、装置、设备及计算机可读存储介质
CN106372267A (zh) 基于浏览器的页面加载方法及装置
CN114253798A (zh) 指标数据采集方法和装置、电子设备、存储介质
CN103685295A (zh) 一种下载多媒体文件的方法、终端及系统
CN107968812A (zh) 同步本地资源与网络资源的方法及装置
CN107679168A (zh) 一种基于java平台的目标网站内容获取方法
CN114416371A (zh) 网格空间的管理方法、存储介质和电子设备
CN103793459A (zh) 一种网页打开方法及装置
KR100974907B1 (ko) 로봇 네트워크 시스템에서의 컨텐츠 전송/실행 장치 및방법
CN118409814B (zh) 一种so库的动态加载方法、装置及计算机程序产品
CN116603245B (zh) 程序版本调整方法、装置、设备及可读存储介质
CN113778673B (zh) 数据处理方法、存储介质及设备
CN117112500B (zh) 一种资源管理方法、装置、设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant