CN114461264B - 打补丁方法、生成补丁的方法及相关设备 - Google Patents
打补丁方法、生成补丁的方法及相关设备 Download PDFInfo
- Publication number
- CN114461264B CN114461264B CN202110832113.8A CN202110832113A CN114461264B CN 114461264 B CN114461264 B CN 114461264B CN 202110832113 A CN202110832113 A CN 202110832113A CN 114461264 B CN114461264 B CN 114461264B
- Authority
- CN
- China
- Prior art keywords
- version
- blocks
- block
- new version
- new
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
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)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种打补丁方法、生成补丁的方法及相关设备,电子设备在获取多个历史版本和多个新版本后,分别比对多个新版本和其各种对应的历史版本中的数据,查找到各个新版本中的匹配块和未匹配块,进而,基于该多个旧版本各自的版本信息、该多个新版本各自的块偏移描述表、公共块以及该多个新版本各自的剩余块,生成归一补丁。上述方法通过生成归一补丁可大大减少了补丁的数量,可以实现一个归一补丁对出现相同问题的一个或多个软件产品的多个历史版本的修复,无需考虑不同版本与补丁的对应的关系,易于管理补丁。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种打补丁方法、生成补丁的方法及相关设备。
背景技术
补丁技术是指软件在更新内容时,不需要重新下载完整的更新后的软件安装包,只需通过补丁更新本地机器上需要更新的程序代码和程序资源的技术。补丁技术广泛地应用于当前主流的系统平台上的各类应用程序(例如即时通讯应用程序、网络游戏)、系统软件,其中的系统平台包括IOS、Android等移动平台以及Windows等个人计算机平台。
然而,针对同一款软件,在不同的系统平台上的版本不同,当这些不同的版本出现同一个问题时,需要对不同系统平台上的版本分别制作补丁;或者,针对同一款软件,包括多个历史版本和当前版本,当这些版本都出现同一个问题时,需要对不同的版本分别制作补丁。这样,各个补丁和不同版本的修复对应关系复杂,难于管理。
发明内容
本发明实施例提供一种打补丁方法、生成补丁的方法及相关设备,通过生成归一补丁可大大减少了补丁的数量,可以实现一个归一补丁对出现相同问题的一个或多个软件产品的多个历史版本的修复,无需考虑不同版本与补丁的对应的关系,易于管理补丁。
第一方面,本申请提供了一种打补丁的方法,该方法包括:获取归一补丁;该归一补丁包括多个历史版本的版本信息、多个新版本的块偏移描述表以及多个新版本的未匹配块;历史版本与新版本一一对应,新版本为对应的历史版本在过修复问题后得到的版本;块偏移描述表包括新版本的匹配块和未匹配块分别在新版本中的位置信息;匹配块为新版本与历史版本均包含的数据块;未匹配块为新版本中包含且历史版本中不包含的数据块;在基于多个历史版本的版本信息判断多个历史版本包含当前版本时,从归一补丁中获取目标新版本的块偏移描述表,该目标新版本为当前版本对应的新版本;进一步地,按照目标新版本的块偏移描述表中的目标新版本的匹配块和未匹配块分别在目标新版本中的位置信息将目标新版本的匹配块和未匹配进行合并,生成目标新版本。
上述方法,可以实现一个归一补丁对出现相同问题的一个或多个软件产品的多个历史版本的修复,无需考虑不同版本与补丁的对应的关系,可大大减少了补丁的数量,易于管理补丁。
结合第一方面,在一种可能的实现中,新版本的未匹配块包括公共块和该新版本的剩余块,公共块为多个新版本的未匹配块中均包含的数据块,新版本的剩余块为新版本的未匹配块中除公共块外的数据块,新版本的未匹配块在新版本中的位置信息包括公共块的在新版本中的位置信息和新版本的剩余块在新版本中的位置信息;
此时,按照目标新版本的块偏移描述表中的所述目标新版本的匹配块和未匹配块分别在目标新版本中的位置信息将所述目标新版本的匹配块和未匹配进行合并,生成目标新版本,的一种具体实现方式可以是:
从当前版本中获取目标新版本的匹配块;
从归一补丁中获取公共块和目标新版本的剩余块;
按照目标新版本的块偏移描述表中的目标新版本的匹配块和剩余块分别在目标新版本中的位置信息、公共块在目标新版本中的位置信息,将目标新版本的匹配块、剩余块和公共块拼接,生成目标新版本。
上述方法中的归一补丁,具有更少的冗余内容,可以加快归一补丁的下载,减少归一补丁的占用空间,归一补丁中的新版本的块偏移描述表包括公共块、匹配块和剩余块在该新版本中的位置信息,以使得用户设备在打补丁的过程中,可以基于块偏移描述表拼接得到所需要的目标新版本。
可选地,块偏移描述表具体包括:新版本的匹配块的标识、公共块的标识和新版本的剩余块的标识;新版本的匹配块的标识、公共块的标识和新版本的剩余块的标识按照在新版本中的位置依次排列。
上述方法,通过顺序代替位置,可以减少块偏移描述表的占用空间。
进一步地,新版本的匹配块的标识为新版本的匹配块在历史版本中的偏移信息,公共块的标识为公共块在所述归一补丁中的位置信息,新版本的剩余块的标识为新版本的剩余块在所述归一补丁中的位置信息。
上述方法,通过位置来标识各个数据块,便于查找,提高查找效率。
结合第一方面,在一种可能的实现中,归一补丁还包括:多个新版本的块偏移描述表分别在归一补丁中的位置信息,以便于从归一补丁中查找到目标新版本的块偏移描述表。
结合第一方面,在一种可能的实现中,历史版本的版本信息包括历史版本的长度,该方法还包括:
电子是本获取当前版本的长度;进而,在多个历史版本的版本信息包含所述当前版本的长度时,判断多个历史版本包含当前版本。
上述方法,由于不同版本的长度相同的概率及其小,因此基于长度来识别版本,可以提高识别的准确度。
结合第一方面,在一种可能的实现中,在打补丁之后,还可以删除多个新版本的未匹配块中除目标新版本的未匹配块之外的未匹配块,以及删除多个新版本的块偏移描述表中除目标新版本的块偏移描述表之外的块偏移描述表,以减少不需要的补丁内容的占用吃存储空间。
第二方面,本申请还提供了一种生成补丁的方法,该方法包括:获取多个历史版本和多个新版本,历史版本与新版本一一对应,新版本为历史版本在过修复问题后得到的版本;将新版本与对应的历史版本中的数据进行比对,确定该新版本中的匹配块和未匹配块,其中,匹配块为新版本和对应的历史版本中均包含的数据块,未匹配块为新版本中存在且对应的历史版本中不包含的数据块;进而,基于该多个历史版本的版本信息、多个新版本的块偏移描述表以及多个新版本的未匹配块,生成归一补丁,该归一补丁用于对多个历史版本进行修复。
其中,一个新版本的块偏移描述表包括匹配块和未匹配块在该新版本中的位置信息。
可见,上述方法,通过归一补丁可大大减少了补丁的数量,可以实现一个归一补丁对出现相同问题的一个或多个软件产品的多个历史版本的修复,无需考虑不同版本与补丁的对应的关系,易于管理补丁。
结合第一方面,在一种可能的实现中,将新版本与对应的历史版本中的数据进行比对,确定该新版本中的匹配块和未匹配块,的一种具体实现可以是:
从该新版本中依次截取第一长度的数据块;将截取到数据块与对应的历史版本中的字节序列进行比对;若该历史版本包含与截取到的数据块相同的字节序列,则确定截取到的数据块为匹配块;若该历史版本不包含与截取到的数据块相同的字节序列,则确定截取到的数据块为未匹配块。
上述方法,提供了一种查找匹配块和未匹配块的方法,以第一长度为单位来查找,可以提高查找效率。
结合第一方面,在一种可能的实现中,在生成归一补丁之前,该方法还包括:
从多个新版本的未匹配块中查找相同的字节序列,得到公共块和多个新版本的剩余块,公共块为多个新版本的未匹配块中均包含的数据块,一个新版本的剩余块为该新版本的未匹配块中除公共块外的数据块;新版本的未匹配块在新版本中的位置信息包括公共块和剩余块在新版本中的位置信息;
此时,基于多个历史版本的版本信息、多个新版本的块偏移描述表以及多个新版本的未匹配块,生成归一补丁,的一种具体实现可以是:基于多个历史版本的版本信息、多个新版本的块偏移描述表、公共块以及多个新版本的剩余块,生成归一补丁。
上述方法,可以减少归一补丁的冗余内容,可以加快归一补丁的下载,减少归一补丁的占用空间,归一补丁中的新版本的块偏移描述表包括公共块、匹配块和剩余块在该新版本中的位置信息,以使得用户设备在打补丁的过程中,可以基于块偏移描述表拼接得到所需要的新版本。
可选地,多个新版本包括目标版本和版本集合,目标版本为多个新版本中的一个版本,版本集合包括多个新版本中除目标版本外的版本,从多个所述新版本的未匹配块中查找相同的数据块,得到公共块和多个剩余块,是一种具体实现可以是:
从目标版本的未匹配块中依次获取第二长度的数据块;将获取到数据块与版本集合中的各个版本的未匹配块中的字节序列进行比对;若版本集合的每个版本的未匹配块中均包含与该获取到的数据块相同的字节序列,则确定该获取到的数据块为公共块;若版本集合中存在至少一个版本的未匹配块不包含与该获取到的数据块相同的字节序列,则确定该获取到的数据块为所述目标版本的剩余块。
上述方法,提供了一种查找公共块和剩余块的方法,可以提高查找效率。
可选地,块偏移描述表具体包括:新版本的匹配块的标识、公共块的标识和新版本的剩余块的标识;新版本的匹配块的标识、公共块的标识和新版本的剩余块的标识按照在新版本中的位置依次排列。
上述方法,通过顺序代替位置,可以减少块偏移描述表的占用空间。
进一步地,新版本的匹配块的标识为新版本的匹配块在历史版本中的偏移信息,公共块的标识为公共块在归一补丁中的位置信息,新版本的剩余块的标识为新版本的剩余块在归一补丁中的位置信息。
上述方法,通过位置来标识各个数据块,便于查找,提高查找效率。
结合第一方面,在一种可能的实现中,归一补丁还包括:多个新版本的块偏移描述表分别在归一补丁中的位置信息,以便于确定块偏移描述表在归一补丁中的位置。
第三方面,本申请提供了一种电子设备,该电子设备包括:一个或多个处理器以及存储器,所述存储器用于存储数据和计算机指令,所述处理器用于调用所述存储器存储的数据和计算机指令以使得电子设备执行:
获取归一补丁;所述归一补丁包括多个历史版本的版本信息、多个新版本的块偏移描述表以及多个所述新版本的未匹配块;所述历史版本与所述新版本一一对应,所述新版本为所述历史版本在过修复问题后得到的版本;所述块偏移描述表包括所述新版本的匹配块和未匹配块分别在所述新版本中的位置信息;所述匹配块为所述新版本与所述历史版本均包含的数据块;所述未匹配块为所述新版本中包含且所述历史版本中不包含的数据块;
在基于多个所述历史版本的版本信息判断多个所述历史版本包含当前版本时,从所述归一补丁中获取目标新版本的块偏移描述表,所述目标新版本为所述当前版本对应的新版本;
按照所述目标新版本的块偏移描述表中的所述目标新版本的匹配块和未匹配块分别在所述目标新版本中的位置信息将所述目标新版本的匹配块和未匹配进行合并,生成所述目标新版本。
结合第三方面,在一种可能的实现中,所述新版本的未匹配块包括公共块和所述新版本的剩余块,所述公共块为多个所述新版本的未匹配块中均包含的数据块,所述新版本的剩余块为所述新版本的未匹配块中除所述公共块外的数据块,所述新版本的未匹配块在所述新版本中的位置信息包括所述公共块的在所述新版本中的位置信息和所述新版本的剩余块在所述新版本中的位置信息;所述处理器执行所述按照所述目标新版本的块偏移描述表中的所述目标新版本的匹配块和未匹配块分别在所述目标新版本中的位置信息将所述目标新版本的匹配块和未匹配进行合并,生成所述目标新版本,具体包括执行:
从所述当前版本中获取所述目标新版本的匹配块;
从所述归一补丁中获取所述公共块和所述目标新版本的剩余块;
按照所述目标新版本的块偏移描述表中的所述目标新版本的匹配块和剩余块分别在所述目标新版本中的位置信息、所述公共块在所述目标新版本中的位置信息,将所述目标新版本的匹配块、剩余块和所述公共块进行拼接,生成所述目标新版本。
结合第三方面,在一种可能的实现中,所述块偏移描述表具体包括:所述新版本的匹配块的标识、所述公共块的标识和所述新版本的剩余块的标识;所述新版本的匹配块的标识、所述公共块的标识和所述新版本的剩余块的标识按照在所述新版本中的位置依次排列。
结合第三方面,在一种可能的实现中,所述新版本的匹配块的标识为所述新版本的匹配块在所述历史版本中的偏移信息,所述公共块的标识为所述公共块在所述归一补丁中的位置信息,所述新版本的剩余块的标识为所述新版本的剩余块在所述归一补丁中的位置信息。
结合第三方面,在一种可能的实现中,所述归一补丁还包括:多个所述新版本的块偏移描述表分别在所述归一补丁中的位置信息。
结合第三方面,在一种可能的实现中,所述历史版本的版本信息包括所述历史版本的长度,所述处理器还用于执行:
获取所述当前版本的长度;
在多个所述历史版本的版本信息包含所述当前版本的长度时,判断多个所述历史版本包含当前版本。
结合第三方面,在一种可能的实现中,所述处理器还用于执行:
删除多个所述新版本的未匹配块中除所述目标新版本的未匹配块之外的未匹配块,以及删除多个所述新版本的块偏移描述表中除所述目标新版本的块偏移描述表之外的块偏移描述表。
第四方面,本申请提供了一种电子设备,该电子设备包括:一个或多个处理器以及存储器,所述存储器用于存储数据和计算机指令,所述处理器用于调用所述存储器存储的数据和计算机指令以使得所述电子设备执行:
获取多个历史版本和多个新版本,所述历史版本与所述新版本一一对应;所述新版本为所述历史版本在过修复问题后得到的版本;
将所述新版本与所述历史版本中的数据进行比对,确定所述新版本中的匹配块和未匹配块,其中,所述匹配块为所述新版本和所述历史版本中均包含的数据块,所述未匹配块为所述新版本中存在且所述历史版本中不包含的数据块;
基于多个所述历史版本的版本信息、多个所述新版本的块偏移描述表以及多个所述新版本的未匹配块,生成归一补丁,所述块偏移描述表包括所述匹配块和所述未匹配块在所述新版本中的位置信息,所述归一补丁用于对多个所述历史版本进行修复。
结合第四方面,在一种可能的实现中,所述处理器执行所述将所述新版本与所述历史版本中的数据进行比对,确定所述新版本中的匹配块和未匹配块,具体包括执行:
从所述新版本中依次截取第一长度的数据块;
将截取到数据块与所述历史版本中的字节序列进行比对;
若所述历史版本包含与所述截取到的数据块相同的字节序列,则确定所述截取到的数据块为所述匹配块;
若所述历史版本不包含与所述截取到的数据块相同的字节序列,则确定所述截取到的数据块为所述未匹配块。
结合第四方面,在一种可能的实现中,所述生成归一补丁之前,所述处理器还用于执行:
从多个所述新版本的未匹配块中查找相同的字节序列,得到公共块和多个所述新版本的剩余块,所述公共块为多个所述新版本的未匹配块中均包含的数据块,所述新版本的剩余块为所述新版本的未匹配块中除所述公共块外的数据块;
所述新版本的未匹配块在所述新版本中的位置信息包括所述公共块和所述剩余块在所述新版本中的位置信息;所述基于多个所述历史版本的版本信息、多个所述新版本的块偏移描述表以及多个所述新版本的未匹配块,生成归一补丁,具体包括:基于多个所述历史版本的版本信息、多个所述新版本的块偏移描述表、所述公共块以及多个所述新版本的剩余块,生成归一补丁。
结合第四方面,在一种可能的实现中,多个所述新版本包括目标版本和版本集合,所述目标版本为多个所述新版本中的一个版本,所述版本集合包括多个所述新版本中除所述目标版本外的版本,所述处理器执行所述从多个所述新版本的未匹配块中查找相同的数据块,得到公共块和多个剩余块,具体包括执行:
从所述目标版本的未匹配块中依次获取第二长度的数据块;
将获取到数据块与所述版本集合中的各个版本的未匹配块中的字节序列进行比对;
若所述版本集合的每个版本的未匹配块中均包含与所述获取到的数据块相同的字节序列,则确定所述获取到的数据块为公共块;
若所述版本集合中存在至少一个版本的未匹配块不包含与所述获取到的数据块相同的字节序列,则确定所述获取到的数据块为所述目标版本的剩余块。
结合第四方面,在一种可能的实现中,所述块偏移描述表具体包括:所述新版本的匹配块的标识、所述公共块的标识和所述新版本的剩余块的标识;所述新版本的匹配块的标识、所述公共块的标识和所述新版本的剩余块的标识按照在所述新版本中的位置依次排列。
结合第四方面,在一种可能的实现中,所述新版本的匹配块的标识为所述新版本的匹配块在所述历史版本中的偏移信息,所述公共块的标识为所述公共块在所述归一补丁中的位置信息,所述新版本的剩余块的标识为所述新版本的剩余块在所述归一补丁中的位置信息。
结合第四方面,在一种可能的实现中,所述归一补丁还包括:多个所述新版本的块偏移描述表分别在所述归一补丁中的位置信息。
第五方面,本申请提供了一种电子设备,该电子设备包括:一个或多个处理器以及存储器,所述存储器用于存储数据和计算机指令,所述处理器用于调用所述存储器存储的数据和计算机指令以使得所述电子设备执行上述第一方面或第一方面任意一种可能的实现中的方法。
第六方面,本申请提供了一种电子设备,该电子设备包括:一个或多个处理器以及存储器,所述存储器用于存储数据和计算机指令,所述处理器用于调用所述存储器存储的数据和计算机指令以使得所述电子设备执行上述第二方面或第二方面任意一种可能的实现中的方法。
第七方面,本申请提供了一种计算机可读存储介质,可读存储介质上存储有指令,当其在电子设备上运行时,使得电子设备执行上述第一方面或第一方面任意一种可能的实现中的方法。
第八方面,本申请提供了一种计算机可读存储介质,可读存储介质上存储有指令,当其在电子设备上运行时,使得电子设备执行上述第二方面或第二方面任意一种可能的实现中的方法。
第九方面,本申请提供了一种包含指令的计算机程序产品,当其在电子设备上运行时,使得电子设备执行上述第一方面或第一方面任意一种可能的实现中的方法。
第十方面,本申请提供了一种包含指令的计算机程序产品,当其在电子设备上运行时,使得电子设备执行上述第二方面或第二方面任意一种可能的实现中的方法。
可以理解地,上述第三至六方面提供的电子设备,第七、八方面提供的计算机可读存储介质分别用于执行上述第一方面、第二方面所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1A是本申请实施例提供的一种匹配块和未匹配块的示意性说明图;
图1B是本申请实施例提供的一种公共块和剩余块的示意性说明图;
图1C是本申请实施例提供的一种偏移信息的示意性说明图;
图2A-图2C是本申请实施例提供的一些补丁的应用场景的示意图;
图3A是本申请实施例提供的一种系统的示意图;
图3B是本申请实施例提供的一种电子设备的硬件的结构示意图;
图4A是本申请实施例提供的一种生成补丁的方法的流程示意图;
图4B是本申请实施例提供的另一种生成补丁的方法的流程示意图;
图5是本申请实施例提供的一种软件产品的多个历史版本和其分别对应的修改问题后的新版本的示例图;
图6A-图6B是本申请实施例提供的一种匹配块和未匹配块的查找原理示意图;
图7是本申请实施例提供的一种场景下各个版本的匹配块和未匹配块的示意图;
图8是本申请实施例提供的一种确定新版本对应的块偏移描述表的原理示意图;
图9A是本申请实施例提供的一种生成归一补丁的原理示意图;
图9B是本申请实施例提供的一种归一补丁的补丁头的示意图;
图9C是本申请实施例提供的一种各个新版本对应的块偏移描述表的生成过程示例图;
图9D是本申请实施例提供的一种归一补丁的示例图;
图10是本申请实施例提供的一种应用归一补丁修复版本的流程示意图;
图11是本申请实施例一种用户界面的示意图。
具体实施方式
本申请以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本申请中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
首先对本申请实施例中涉及的名词进行解释。
(1)软件产品:
软件产品是指向用户提供的计算机软件、信息系统或设备中嵌入的软件或在提供计算机信息系统集成、应用服务等技术服务时提供的计算机软件。本申请中“版本”是版本的软件产品的简写。软件产品均为二进制文件,其是由连续的二进制字节序列组成。
本申请中,将应用于一种硬件上的一种操作系统称为一个软件产品,例如,均应用于荣耀30TM上Android10.0和Android11.0属于两个软件产品,均应用于荣耀MagicBookX15TM上的windows10和Linux 5.10属于两个不同的软件产品;也将应用于一种硬件的一种操作系统上的一种应用程序成为一个软件产品,例如,应用于一种荣耀30TM的Android10.0平台上的微信7.0.0、微信7.0.3、微信8.0.1等均属于一个软件产品。
在软件产品出现问题后,需要制作补丁对其进行修复,进而可得到问题修复后的版本。本申请实施例中,将待修复的版本称为“历史版本”,将问题修复后的版本称为“新版本”。可以采用本申请提供的归一补丁进行修复的多个历史版本可以同属于同一软件产品,或者属于实现相同功能的不同软件产品。
(2)数据块:
数据块是一组按顺序连续排列在一起的记录,在本申请实施例中,数据块为连续的二进制字节序列。一个软件产品的一个版本是由包括一个或多个的数据块组成的。
(3)匹配块和未匹配块:
对于一对修复问题前后的两个版本(即为历史版本和新版本)来说,匹配块是历史版本和新版本的字节序列中均包含的数据块,也可以称为原块,即修复前后版本中不变的数据块。匹配块存在于历史版本中,也存在于新版本中。
对于一对修复问题前后的两个版本(即为历史版本和新版本)来说,未匹配块是新版本包含且其历史版本中不包含的数据块,也可以称为新块,即修复前后版本改变的数据块。未匹配块只存在于新版本中。
如图1A所示,历史版本A经过修复问题后得到新版本A1,新版本A1重的前两个数据快均在历史版本A中存在,为匹配块;第三个数据块在历史版本A中不存在,为未匹配块。
(4)公共块和剩余块:
公共块是多个新版本的未匹配块中相同的数据块。
一个新版本的剩余块是该新版本的未匹配块中除公共块外的数据块。
如图1B所示,多个新版本A1、B1和C1均存储在的数据块为公共块,出公共块外的为剩余块。
(5)偏移信息:
一个数据块的偏移信息用于指示该数据块在版本或者补丁中的位置,也可以用于标识数据块。如图1C所示的偏移信息的示意性说明图。数据块的偏移信息可以包括但不限于如下3种形式:1、在数据块的长度固定时,偏移信息可以是开头偏移,开头偏移是指以一个数据块的第一个字节相对于一个版本的整个字节序列中的第一个字节的偏移;2、偏移信息可以是开头偏移和结尾偏移,结尾偏移是指一个数据块的最后一个字节相对于一个版本的整个字节序列中的第一个字节的偏移;3、偏移信息可以是开头偏移和该数据块的长度。
下面介绍本申请实施例涉及的应用场景。
场景1:
请参阅图2A和图2B,图2A和图2B为本申请实施例涉及的一个应用场景的示意图。如图2A所示,在固定的硬件和操作系统平台上,例如型号为荣耀30TM的手机,其采用安卓操作系统,软件产品P可以具有不同时间发布的多个版本,如版本A、版本B和版本C等多个版本,版本C可以是最新发布主流版本,版本A和版本B可以较早发布的两个版本。当版本A、版本B和版本C都出现了同一问题Q时,需要针对每个版本分别制作补丁,如图2A中,对版本A制作补丁A,对版本B制作补丁B,对版本C制作补丁C。
如图2B,用户设备11中安装版本A,用户设备12中安装版本B,用户设备13中安装版本C。在用户设备需要安装补丁时,每个用户设备都需要从服务器20上下载其需要的补丁。例如,图2B中,用户设备11安装的版本A与服务器20中的中的补丁A的信息匹配上,可以从服务器20中下载补丁A,并进行安装;用户设备12安装的版本B与服务器20中中的补丁B的信息匹配上,可以从服务器20中下载补丁B,并进行安装;用户设备13安装的版本C与服务器20中的补丁C的信息匹配上,可以从服务器20中下载补丁C,并进行安装。
示例性的,软件产品P为通话应用程序(application,APP),在安卓系统平台上,通话APP包括版本1.0、版本2.0和版本3.0。在这三个版本上,当其都存在通话不稳定的问题,即问题Q为通话不稳定。此时,需要针对上述版本1.0、版本2.0和版本3.0分别制作补丁,以应对不同版本出现的问题Q。
可见,每个版本都需要一个补丁,软件产品随着时间通常拥有大量的版本多,当每个版本都需要补丁时,需要对大量补丁进行管理,且向用户设备下发补丁时,由于补丁多,版本多,容易出错,导致向用户设备发送不匹配的补丁,进而导致用户设备软件产品的升级失败。
场景2:
请参阅图2C,图2C为本申请实施例涉及的另一种应用场景的示意图,如图2C所示,在不同的硬件和/或操作系统平台上的同一功能软件实质为不同的软件产品,需要不同的产品。在图2C中,针对三个不同的系统平台上,发布了三个软件产品,系统平台A上使用软件产品A的版本A,系统平台B上使用软件产品B的版本B,系统平台C上使用软件产品C的版本C。
例如,微信TM,在不同的系统平台上,安卓平台、IOS平台和Windows平台上实质是不同的软件产品。当这三个系统平台上的三个版本都出现了同一个问题Q,需要针对每个版本制作其对应的补丁。
又例如,荣耀30TM、荣耀40TM和荣耀30proTM的手机若均运行Android 10.0的操作系统,由于每个型号手机的硬件的不同,当Android 10.0的操作系统作为软件产品出现问题需要修复时,针对这三个不同型号的手机,需要分别制作补丁。
可见,用户设备的硬件不同其需要补丁也不同,还需要管理补丁与硬件的对应关系。
然而,在上述制作补丁的方法,只能针对一个版本制作其对应的补丁,服务器需要管理不同版本的补丁,同一版本不同硬件的补丁,还需要配置各个版本的补丁的对应关系复杂,难于管理。
为便于补丁的管理和软件产品的更新,本申请实施例,补丁生成设备在获取多个历史版本和多个新版本后,分别比对多个新版本和其各种对应的历史版本中的数据,查找到各个新版本中的匹配块和未匹配块,进而,基于该多个旧版本各自的版本信息、该多个新版本各自的块偏移描述表、公共块以及该多个新版本各自的剩余块,生成归一补丁。该归一补丁可以实现对上述多个旧版本的修复。
用户设备在下载归一补丁后,在基于其补丁头中的多个所述历史版本的版本信息判断该多个历史版本包含当前版本时,从归一补丁中获取当前版本对应的新版本(也称目标新版本)的块偏移描述表,进而,按照目标新版本的块偏移描述表中的匹配块和未匹配块分别在目标新版本中的位置信息将目标新版本的匹配块和未匹配进行拼接,生成目标新版本。
可见,通过上述归一补丁可大大减少了补丁的数量,可以实现一个归一补丁对出现相同问题的一个或多个软件产品的多个历史版本的修复,无需考虑不同版本与补丁的对应的关系,易于管理补丁。
进一步地,为了减少归一补丁的冗余,还可以通过比对各个新版本中的未匹配块中的数据,得到公共块和该多个新版本各自的剩余块,此时,归一补丁中的多个新版本的未匹配块被替换为公共块和多个新版本的剩余块,以减少归一补丁的冗余内容,此时,新版本的块偏移描述表包括公共块、匹配块和剩余块在该新版本中的位置信息,以使得用户设备在打补丁的过程中,可以基于块偏移描述表拼接得到目标新版本。
请参阅图3A,图3A为本申请实施例提供的一种系统的示意图。如图3A所示,该系统包括:多个用户设备10、补丁生成设备20、补丁发布设备30等。
对应于上述场景1,多个用户设备10可以为具有相同的硬件且使用同一操作系统,安装同一个软件产品的不同版本,如图3A,用户设备UE1安装软件产品P的版本A、用户设备UE2安装软件产品P的版本B、用户设备UE3安装软件产品P的版本C。
对应于上述场景2,多个用户设备10的硬件和/或操作系统可以不同,安装同一个功能的软件产品的不同版本。例如,用户设备UE1使用Android系统,安装微信TM的版本A;用户设备UE2使用IOS系统,安装微信TM的版本B;用户设备UE3使用Windows系统,安装微信TM的版本C。
补丁生成设备20用于生成针对多个待修复的版本(即多个历史版本)的归一补丁,具体地:获取多个历史版本和该多个历史版本分别修改问题后编译出的版本(即多个新版本),分别比对多个新版本和其各种对应的历史版本中的数据,查找到各个新版本中的匹配块和未匹配块,进而,基于该多个旧版本各自的版本信息、该多个新版本各自的块偏移描述表、公共块以及该多个新版本各自的剩余块,生成归一补丁。其中,一个新版本的块偏移描述表描述了公共块、该新版本中的匹配块和剩余块在该新版本中的位置信息。该归一补丁可以实现对上述多个旧版本的修复。关于归一补丁的具体生成方法可以参见下述实施例1中的描述,这里不再赘述。
补丁生成设备20可以将生成的归一补丁发送至补丁发布设备30,由补丁发布设备30为用户提供归一补丁的下载。
在一些实施例中,用户设备10可以向补丁发布设备30发送针对归一化补丁的下载请求,补丁发布设备30响应于该下载请求,将归一化补丁发送至用户设备10。用户设备10接收到归一补丁后,可以对当前版本打补丁。具体地:用户设备10从归一化补丁中解析出适配其当前安装版本的内容(也称单补丁),并基于该单补丁对当前安装版本进行更新。应理解,本申请中为了区别于归一补丁,将仅用于修复一个版本的补丁称为“单补丁”,而,将可以用于修复多个版本的补丁称为“归一补丁”。
可选地,用户设备10在解析出其需要的单补丁后,还可以删除归一补丁中除该单补丁外的内容,以减少资源的占用。
关于用户设备10对当前版本打补丁的具体实现可以参见下述实施例2中的描述,这里不再赘述。
需要说明的是,上述补丁生成设备20和补丁发布设备30也可以是同一设备,这里不作限定。
上述用户设备10可以是智能电话(如,手机)、膝上型电脑(laptop computer)、个人电脑(personal computer,PC)、平板电脑、板式电脑、超级本、可佩戴装置(如,智能手环、智能手表、智能眼镜、头戴显示设备(head mount display,HMD)等)、增强现实(augmentedreality,AR)设备、混合现实(mixed reality,MR)设备、蜂窝电话(cellular phone)、个人数字助理(personal digitalassistant,PDA)、数字广播终端、车载单元(on board unit,OBU)等终端设备。
上述补丁生成设备20或补丁发布设备30可以是上述终端设备,也可以是服务器、云服务器等计算平台。
如图3B所示,图3B为一种电子设备的硬件的结构示意图,电子设备100,可以是上述图3A中的补丁生成设备20、补丁发布设备30或用户设备10,该电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口150,高清多媒体(High Definition Multimedia Interface,HDMI)接口151,电源管理模块140,通信模块160,显示屏170,音频模块180,扬声器183,麦克风182,耳机接口181,传感器模块190,按键130,指示器131,摄像头132等。其中传感器模块190可以包括压力传感器191,触摸传感器192,温度传感器193等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。例如,当补丁生成设备20或补丁发布设备30为服务器或云服务器等时,电子设备100可以不必包括上述显示屏170,音频模块180,扬声器183,麦克风182,耳机接口181,传感器模块190,按键130,指示器131,摄像头132等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber标识entity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器192,充电器,闪光灯,摄像头132等。例如:处理器110可以通过I2C接口耦合触摸传感器192,使处理器110与触摸传感器192通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块180耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块180可以通过I2S接口向通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块180与通信模块160的无线通信可以通过PCM总线接口耦合。在一些实施例中,音频模块180也可以通过PCM接口向通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与通信模块160。例如:处理器110通过UART接口与通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块180可以通过UART接口向无线通信模块传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏170,摄像头132等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头132通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏170通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头132,显示屏170,通信模块160,音频模块180,传感器模块190等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口150是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口150可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电源管理模块140接收电源的输入,为处理器110,内部存储器121,外部存储器,显示屏10,摄像头132,和通信模块160等供电。在其他一些实施例中,电源管理模块140也可以设置于处理器110中。
电子设备100的通信功能可以通过天线1,网线2,无线通信模块,调制解调处理器以及基带处理器等实现。
天线1用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
网线2用于有线网络的输入,通过网卡接口连接网络,网卡接口可以是RJ-45,BNC,AUI。
无线通信模块可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块经由天线接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线转为电磁波辐射出去。
电子设备100通过GPU,显示屏170,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏170和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏170用于显示图像,视频等。显示屏170包括显示面板。显示面板可以采用液晶显示屏(liqu标识crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏170,N为大于1的正整数。
本申请实施例中,显示面板可采用LED、LCD、OLED、AMOLED、FLED等实现,使得显示屏170。其中,该显示屏可以是一块屏幕,也可以是多块屏幕拼凑在一起组合成的显示屏,在此不作限定。
电子设备100可以通过ISP,摄像头132,视频编解码器,GPU,显示屏170以及应用处理器等实现拍摄功能。
ISP用于处理摄像头132反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头132中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-ox标识e-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头132,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备100可以通过音频模块180,扬声器183,麦克风182,耳机接口181,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块180用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块180还可以用于对音频信号编码和解码。在一些实施例中,音频模块180可以设置于处理器110中,或将音频模块180的部分功能模块设置于处理器110中。
扬声器183,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器183收听音乐,或收听通话。电子设备100可以包括1个或N个扬声器193,N为大于1的正整数。
麦克风182,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风182发声,将声音信号输入到麦克风182。电子设备100可以设置至少一个麦克风182。在另一些实施例中,电子设备100可以设置两个麦克风182,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风182,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口181用于连接有线耳机。耳机接口181可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器191用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器191可以设置于显示屏170。压力传感器191的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器191,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏170,电子设备100根据压力传感器191检测所述触摸操作强度。电子设备100也可以根据压力传感器191的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于联系人图标时,执行呼叫联系人的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于联系人图标时,执行编辑联系人信息的指令。
温度传感器193用于检测温度。在一些实施例中,电子设备100利用温度传感器193检测的温度,执行温度处理策略。例如,当温度传感器193上报的温度超过阈值,电子设备100执行降低位于温度传感器193附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电源模块加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电源模块140的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器192,也称“触控面板”。触摸传感器192可以设置于显示屏170,由触摸传感器192与显示屏170组成触摸屏,也称“触控屏”。触摸传感器192用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏170提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器192也可以设置于电子设备100的表面,与显示屏170所处的位置不同。
按键130包括开机键,音量键等。按键130可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
指示器131可以是指示灯,可以用于指示电源状态,网络情况,也可以用于指示消息,未接来电,通知等。
下面分别通过两个实施例来说明生成归一补丁的方法和通过归一补丁更新版本的方法。
实施例1
下面结合附图对本申请实施例提供的一种生成补丁的方法进行介绍。
请参阅图4A和图4B,为本申请实施例提供的两种生成补丁的方法的流程示意图,该方法可以由图3A中的补丁生成设备20执行,或由图3B中的电子设备100执行。以下实施例通过图3A中的补丁生成设备来执行该方法为例来说明,该方法可以包括但不限于以下步骤:
S1、获取多个历史版本和多个新版本,其中,历史版本和新版本一一对应,新版本为该新版本对应的历史版本修复问题后的版本。
上述修复问题得到的新版本,均是针对同一个问题的修复。
在一些实施例中,上述多个历史版本均属于同一个软件产品。如上述图2A中所述的情况;上述多个历史版本还可以属于不同产品,例如上述图2C中所描述的情况。
例如,以多个历史版本同属于软件产品P为例,如图5所示,软件产品P包括版本A、版本B、版本C。针对同一个问题Q,对历史版本A修改问题Q后,编译出新版本A1;对历史版本B修改问题Q后,编译出新版本B1;对历史版本C修改问题Q后,编译出新版本C1。
S2、比对新版本与其对应历史版本的数据,确定出新版本的匹配块和未匹配块。
在一些实施例中,以一个新版本中的匹配块和未匹配块的查找过程为例来说明。补丁生成设备对新版本的数据以第一长度进行划分,或分为多个数据块,进而,分别判断新版本中的各个数据块是否存在于其对应的历史版本中,若存在,则该数据块为匹配块,否则,该数据块为未匹配块。
在一种具体实现中,从新版本中依次获取一个数据块,将该数据块在历史版本中查找是否有与之相同的字节序列。若存在,则该数据块属于匹配块,将相同的字节序列记为匹配的字节序列,并使用该匹配到的字节序列在历史版本中的位置(如开头偏移)来标记该数据块。若不存在,则该数据块属于未匹配块。可选地,若新版本中连续的数据块分别匹配的字节序列在历史版本中也连续,则可以将该连续的数据块作为一个匹配块;同理,若新版本中连续的数据块均属于未匹配块,则可以将该连续的数据块作为一个未匹配块。由于对新版本的数据块和历史版本的字节序列是按照第一长度进行划分的,则开头偏移相差第一长度的数据块/字节序列就是连续的。
示例性的,如图6A所示,历史版本M包括64字节的数据,修复一个问题后的新版本N包括64字节的数据,第一长度为8字节。则补丁生成设备对新版本N的数据按照8字节进行划分,得到的多个等长的8个数据块,分别是数据块0:第1-8个字节,数据块8:第9-16个字节,数据块16:第17-24个字节,数据块24:第25-32个字节,数据块32:第33-40个字节,数据块40:第41-48个字节,数据块48:第49-56个字节和数据块56:第57-64个字节。其中,分别应用数据块在新版本N中的开头偏移来标记该数据块,数据块x中的x表示其第一个字节在新版本N中的开头偏移;应用字节序列在历史版本M中的开头偏移来标记该字节序列,字节序列y中的y表示其第一个字节在历史版本M中的开头偏移。其中,x,y为正数。
以图6A为例,假设新版本N与历史版本除标记的未匹配的字节的部分不同外,其余都一样,即数据块0、8、16、40、48、56分别与字节序列0、8、16、40、48、56匹配。那么,比对的结果为:
新版本N中属于匹配块的数据块包括:数据块0、数据块8、数据块16、数据块40、数据块48、数据块56。
新版本N中属于未匹配块的数据块包括:数据块24、数据块32。
进一步地,当数据块为匹配块时,可以用该数据块匹配的字节序列在历史版本M中的开头偏移来标识标记匹配块,以在打补丁时可以从历史版本读取出匹配块。
进一步地,将数据块0、8、16合并为一个匹配块,将数据块40、48、56合并为一个匹配块,数据块24、32合并为一个未匹配块。如图6B所示,匹配块包括两个,一个是数据块0、8和16组成的匹配块,可以标记为0-24(0偏移-16偏移+8字节);另一个是数据块40、48和56组成的匹配块,标记为40-64(40偏移-56偏移+8字节)。数据块24和数据块32组成的一个未匹配块,可以标记为24-40(24偏移--32偏移+8字节)。
示例性的,如图7所示,针对于历史版本A和其对应的新版本A1、历史版本B和其对应的新版本B1、历史版本C和其对应的新版本C1分别按照上述方法可以确定每对版本的匹配块和未匹配块。如图7所示,历史版本A和新版本A1的匹配块包括匹配块A01和匹配块A02,未匹配块包括未匹配块A;历史版本B和新版本B1的匹配块包括匹配块B01和匹配块B02,未匹配块包括未匹配块B;历史版本C和新版本C1的匹配块包括匹配块C01和匹配块C02,未匹配块包括未匹配块C。
S3、比对各个新版本的未匹配块,得到公共块和各个版本的剩余块。
补丁生成设备利用上述比对新版本和历史版本的方法,比对各个新版本的未匹配块,得到公共块和每个未匹配块的剩余块。其中,各个新版本的未匹配块中的相同的部分,称为公共块,公共块的数据是完全相同的;剩余块为未匹配块中除去公共块的部分。
示例性的,应理解,如上述的软件产品P,对于历史版本A、B和C,修改相同问题Q,他们的源代码改动基本相同,新版本A1、新版本B1和新版本C1分别相对于历史版本A、历史版本B和历史版本C变化的数据块(即未匹配块)不会有太大的差别,即新版本A1的未匹配块A、新版本B1的未匹配块B和新版本C1的未匹配块C之间的具有相同的部分。这是由两方面原因决定的,一是历史版本A、历史版本B和历史版本C的源代码相似度很高;二是他们是针对同一个共性问题Q分别对历史版本A、历史版本B和历史版本C的源代码进行的修改。
在一些实施例中,从多个新版本的未匹配块中查找公共块的一种实现可以是:从多个新版本中的任意选一个新版本(这里称为目标版本),目标版本的未匹配块可以划分为长度为第二长度的多个数据块,该第二长度可以小于或等于第一长度,也可以大于第一长度;将从目标版本中的一个数据块与该其它新版本中的各个版本的未匹配块中的字节序列进行比对;若其它新版本中的每个版本的未匹配块中均包含与该数据块相同的字节序列,则该数据块为公共块;若其它新版本中存在至少一个版本的未匹配块不包含与该数据块相同的字节序列,则该数据块为目标版本的剩余块。
S4、基于包括各个历史版本的版本信息的补丁头、各个新版本分别对应的块偏移描述表、公共块和各个新版本的剩余块生成归一补丁。其中,一个新版本对应的块偏移描述表包括其匹配块、公共块和剩余块分别在新版本中的位置信息。
下面对归一补丁各部分进行详细说明,其中,
(一)、补丁头。补丁头可以包括以下信息:
(1)该归一补丁可以修复的历史版本数量,例如3个,该数量的范围可以为1-255个,该信息(该补丁可以修复的一个软件产品的版本数量)所占用的空间为1字节。
(2)各个历史版本的信息。对于一个版本来说,该版本的信息包括版本信息和该版本对应的块偏移描述表在归一补丁中的位置。其中,历史版本的信息可以是该历史版本的标识,包括版本号和终端型号,也可以是历史版本占用空间的大小,还可以是版本号、终端型号及大小等中的多个或全部。应理解,通常各个版本的大小相同的概率很低,因此基于版本的大小来识别版本,可以提高识别的准确度。可选地,版本大小的信息可以占用4个字节,版本对应的块偏移描述表的位置信息可以占用4个字节。需要说明的是,在本申请中,历史版本对应的块偏移描述表也称为新版本的块偏移描述表。
以历史版本M为例,历史版本M的信息包括的占用空间的大小信息,例如1000字节,和历史版本M对应的块偏移描述表在归一补丁中的位置,例如50字节,“50”可以表示历史版本M对应的块偏移描述表从归一补丁的第50个字节开始。
(二)、公共块:参见上述S3中的描述,为各个新版本的未匹配块中的公共部分。公共块可以临界补丁头,位于补丁头的后面。
(三)、各个新版本的剩余块:参见上述S3中的描述,为一个新版本的未匹配块中去除公共块后的部分。各个新版本的剩余块可以依次位于公共块之后。
(四)、块偏移描述表:一个新版本的块偏移描述表包括该新版本的匹配块、剩余块以及公共块在新版本中的位置信息。
以历史版本M和其对应的新版本N为例来说明历史版本M对应的块偏移描述表,也描述为新版本N的块偏移描述表,包括匹配块在新版本N的位置信息和未匹配块在新版本N的位置信息。
在块偏移描述表的一种具体实现中,新版本N的块偏移描述表包括该新版本N的匹配块的标识、公共块的标识和新版本N的剩余块的标识,且,他们按照各自在新版本N中的位置依次排列。该方式,通过顺序代替位置,可以减少块偏移描述表的占用空间。其中,新版本N的匹配块的标识可以是该匹配块在历史版本M中的偏移信息;公共块的标识可以是该公共块在归一补丁中的位置信息,如偏移信息,或者开头偏移和其长度;新版本N的剩余块的标识可以是该剩余块在归一补丁中的位置信息,如偏移信息,或者开头偏移和其长度。
应理解,块偏移描述表还可以通过其他的方式来描述各个数据块的位置信息,本申请实施例对此不作限定。
示例性的,如图8所示,按照上述S2所描述的过程对版本M和版本N进行比对,确定历史版本M和新版本N的数据块有以下的匹配关系,M01-N02,M02-N03,M03-N01,M04-N0(n′-1),M05-N0n′,…,其中,Mi-Nj表示历史版本M的数据块Mi和新版本N中的数据块Nj相同,i为历史版本M中数据块的索引,j为新版本N中数据块的索引,n和n′为正整数,n和n′可以相等也可以不相等。N04是新版本N的未匹配块。
补丁生成设备将上述各个匹配块的标识、公共块的标识和未匹配块的标识与其各自在新版本中的位置组成版本M对应的块偏移描述表。示例性的,可以如图8中所示的形式,按照每个匹配块和每个未匹配块(包括公共块和剩余块)在新版本N中的位置顺序排列各个匹配块、公共块和剩余块的标识。其中,N01-N03、N(n′-1)、Nn′均为匹配块,其标识是各自在历史版本M中的位置信息,即N01的标识可以是M03在历史版本M中的偏移信息,以此类推,Nn′的标识可以是M05在历史版本M中的偏移信息。N04为未匹配块,其标识可以是N04在归一补丁中的偏移信息。在未匹配块N04被分为剩余块Na1和公共块Na2时,剩余块Na1的标识和公共块Na2的标识分别为其各自在归一补丁中的偏移信息。
在另一种实现中,可以不从各个新版本的未匹配块中提取的公共块,此时,归一补丁包括补丁头、各个新版本的未匹配块和块偏移描述表,其中,补丁头可以参见上述,各个版本的未匹配块可以依次位于补丁头后面。块偏移描述表包括匹配块和未匹配块在新版本中的位置,具体可以包括匹配块的标识和未匹配块的标识,且匹配块的标识和未匹配块的标识以其在新版本中的位置顺序排列。
需要说明的是,上述归一补丁中各个部分的位置仅为示例性说明,还可以以其他约定顺序排列,这里不作限定。
在一些实施例中,上述S3-S4不是必须的步骤,是为了减少归一补丁的数据冗余可执行的步骤。在另一种实现中,可以不查找各个新版本的未匹配块中公共块。参见图4B,该方法除包括上述步骤S1-S2外,还可以包括S5。
S5、基于包括各个历史版本的版本信息的补丁头、各个新版本分别对应的块偏移描述表和各个新版本的未匹配块生成归一补丁。
此时,一个新版本对应的块偏移描述表包括其匹配块和未匹配块在新版本中的位置信息。
示例性的,仍然以上述的软件产品P为例,对于历史版本A、历史版本B和历史版本C,修改相同问题Q,分别得到新版本A1、新版本B1和新版本C1,如图9A所示,图9A示出了针对历史版本A、历史版本B和历史版本C利用上述S1-S4所描述的方法生成归一补丁的过程。首先,利用S2描述的方法分别提取历史版本A和新版本A1、历史版本B和新版本B1、历史版本C和新版本C1的匹配块和未匹配块,如图9A中的匹配块A为版本A和版本A1的匹配块集合,未匹配块A为历史版本A和新版本A1的未匹配块集合;匹配块B为历史版本B和新版本B1的匹配块集合,未匹配块B为历史版本B和新版本B1的未匹配块集合;匹配块C为历史版本C和新版本C1的匹配块集合,未匹配块C为历史版本C和新版本C1的未匹配块集合。接着,确定匹配块A中每个匹配块在历史版本A中的偏移信息,记为匹配块A的偏移信息;确定匹配块B中每个匹配块在历史版本B中的偏移信息,记为匹配块B的偏移信息;确定匹配块C中每个匹配块在历史版本C中的偏移信息,记为匹配块C的偏移信息。对未匹配块A、未匹配块B和未匹配块C提取相同的公共块,记为块D,未匹配块A中除去块D的剩余块记为块E,未匹配块B中除去块D的剩余块记为块F,未匹配块C中除去块D的剩余块记为块G。以补丁头、新版本A的块偏移描述表、新版本B的块偏移描述表B、新版本C的块偏移描述表C、块D、块E、块F和块G组成针对修复历史版本A、历史版本B和历史版本C相同的问题的一个归一补丁。
其中,例如图9B所示,图9B为上述图9A中的归一补丁的补丁头的结构示意图,补丁头中包括该归一补丁可以修复的版本的数量3,历史版本A占用空间的大小信息(表示为DA)和历史版本A对应的块偏移描述表的位置(表示为WA),历史版本B占用空间的大小信息(表示为DB)和历史版本B对应的块偏移描述表B的位置(表示为WB),历史版本C占用空间的大小信息(表示为DC)和历史版本C对应的块偏移描述表C的位置(表示为WC)。
其中,块偏移描述表A中包括按照各个数据块在新版本A1中的位置依次排列的匹配块A的偏移信息、块D在归一补丁中的偏移信息和块E在归一补丁中的偏移信息;块偏移描述表B中包括按照各个数据块在新版本B1中的位置依次排列的匹配块B的偏移信息、块D在归一补丁中的偏移信息和块F归一补丁中的偏移信息;块偏移描述表C中包括按照各个数据块在新版本C1中的位置依次排列的匹配块C的偏移信息、块D在归一补丁中的偏移信息和块G在归一补丁中的偏移信息。图9B中仅仅为示意图,并未体现各个偏移信息的实际排列顺序。匹配块A的偏移信息为匹配块A中的每一个匹配块在历史版本A中的开头偏移。如图9A所示,块D、块E、块F和块G可以位于补丁头的之后,块D、块E、块F和块G在归一补丁中的偏移信息分别为块D、块E、块F和块G的在归一补丁中的开头偏移。
示例性的,仍然以上述的软件产品P为例,图9C和图9D示出了针对历史版本A、历史版本B和历史版本C利用上述S1-S4所描述的方法生成归一补丁的过程,其中,示例性的,历史版本A,历史版本B和历史版本C占用空间长度分别为0x0000 0300,0x0000 0600和0x00000450,为了能够更加直观阅读,以实际存储的数据和数据长度使用十六进制表示归一补丁。
图9C示出了各个数据块在历史版本和新版本中的位置(偏移信息)以及对应关系,数据块A01、A02、A03是新版本A1的匹配块,数据块B01、B02、B03是新版本B1的匹配块,数据块C01、C02、C03是新版本C1的匹配块,未匹配块A、未匹配块B、未匹配块C分别为新版本A1、B1和C1的未匹配块,数据块D(块D)为未匹配块A、未匹配块B和未匹配块C的公共块,数据块E(块E)、数据块F(块F)和数据块G(块G)为新版本A1、B1和C1的剩余块。
由于,在新版本A1中数据块的顺序为A01、块D、块E、A03和A02,则块偏移描述表A为依次排列的A01的标识、块D的标识、块E的标识、A03的标识和A02的标识。其中,A01、A03和A02为匹配块,其标识为各自在历史版本A中的位置;块D、块E为未匹配块,其标识为各自在归一补丁中的位置。
同理,在新版本B1中数据块的顺序为B01、块D、块F、B02和B03,由于B02和B03在历史版本B和新版本B1中相邻且顺序不变,可以合并成一个匹配块来描述,此时,块偏移描述表B为依次排列的B01的标识、块D的标识、块F的标识、B02和B03组合的标识。其中,B01、B02和B03为匹配块,其标识为各自在历史版本B中的位置,块D、块F为未匹配块,其标识为各自在归一补丁中的位置。
同理,在新版本C1中数据块的顺序为C01、块D、块G、C03和C02,则块偏移描述表C为依次排列的C01的标识、块D的标识、块G的标识、C03的标识和C02的标识。其中,C01、C03和C02为匹配块,其标识为各自在历史版本C中的位置;块D、块G为未匹配块,其标识为各自在归一补丁中的位置。其中,C01、C03和C02为匹配块,其标识为各自在历史版本C中的位置;块D、块G为未匹配块,其标识为各自在归一补丁中的位置。
应理解,图9C中各个版本中数据块的数量、长度、位置等仅为示例性说明,未匹配块A、未匹配块B、未匹配块C、块D、块E、块F、块G标注的位置仅用于指示其各自的长度。
如图9D所示为归一补丁的示例图,该归一补丁包括:依次排列的补丁头、块D、块E、块F、块G、块偏移描述表A、块偏移描述表B和块偏移描述表C。其中:
补丁头包括:
补丁修复版本数量,为3,十六进制表示为0x003。
历史版本A的长度,表示为0x0000 0300;块偏移描述表A在归一补丁中的位置,为补丁头长度+未匹配块D长度+未匹配块E长度+未匹配块F长度+未匹配块G长度=25+8+8+8+8=0x39。
历史版本B的长度,表示为0x0000 0600;块偏移描述表B在归一补丁中的位置,为补丁内部块偏移描述表A位置+偏移描述表A长度=25+8+8+8+8+40=0x61。
历史版本C的长度,表示为0x0000 0450,部块偏移描述表C在归一补丁中的位置,为补丁内部块偏移描述表B位置+偏移描述表B长度=25+8+8+8+8+40+32=0x81。
应理解,为方便描述,在该示例中,块D、块E、块F、块G的长度都为8字节,对于块D、块E、块F、块G的长度本申请实施例不作限定,也可以是其他任意长度。
块D、块E、块F、块G为新版本的公共块和各个新版本的剩余块,可参加上述图9A和9C中描述,这里不再赘述。
块偏移描述表A、块偏移描述表B和块偏移描述表C可以参见上述图9A和图9C中的相关描述。
如图9D所示,通过上述S1-S4的过程得到归一补丁的十六进制示意图。应理解,图中的数据仅为示例的十六进制,还可以是二进制、八进制、十进制等其他进制,对于数据的形式本申请实施例不作限定。
实施例2
下面介绍用户设备应用上述实施例1所描述的方法生成的归一补丁对安装的存在问题的版本进行修复的过程。
请参阅图10,图10为本申请实施例提供的一种应用归一补丁修复版本的流程示意图。该方法可以由上述图3A中的用户设备10或图3B中的电子设备100执行,如图10所示,该方法可以包括但不限于以下步骤:
S1001、用户设备接收归一补丁。
其中,归一补丁为应用上述实施例1所描述的方法生成的归一补丁。
在一些实施例中,归一补丁至少包括多个历史版本的版本信息、多个新版本的块偏移描述表以及多个新版本的未匹配块。其中,上述历史版本与新版本一一对应,新版本为其对应的历史版本在过修复问题后得到的版本;新版本的块偏移描述表包括该新版本的匹配块和未匹配块分别在新版本中的位置信息;匹配块为新版本与历史版本均包含的数据块;未匹配块为新版本中包含且历史版本中不包含的数据块。
可选地,一个新版本的未匹配块包括公共块和该新版本的剩余块。其中,公共块为多个新版本的未匹配块中均包含的数据块;一个新版本的剩余块为该新版本的未匹配块中除所述公共块外的数据块。此时,块偏移描述表包括该匹配块、公共块、剩余块分别在新版本中的位置信息。
可选地,归一补丁还可以包括:多个新版本的块偏移描述表分别在归一补丁中的位置信息。
可选地,归一补丁还可以包括:可修复的版本的数量,即上述多个历史版本的个数。
其中,上述多个历史版本的个数、多个历史版本的版本信息和多个新版本的块偏移描述表分别在归一补丁中的位置信息可以组成该归一补丁的补丁头。其中,一个历史版本的版本信息和该历史版本对应的块偏移描述表的组合也可以称为该历史版本的信息,如图9B所示。
关于上述归一补丁和归一补丁中的各个部分可以参见上述实施例1中相关描述,这里不再赘述。
在具体实现中,用户设备安装一个软件产品的一个版本,这里称为当前版本,当该软件产品的一些版本都出现了一个问题,利用上述图4A或图4B所述描述的方法生成的归一补丁,并可以发布在服务器上,用户设备从服务器上下载该归一补丁。
在用户设备下载归一补丁后,可以在当前界面显示用于指示是否更新当前应用的提示框1101a,如图11所示的用户界面,当用户选择“是”时,响应于该用户操作,用户设备执行S1002-S1004。
S1002、用户设备读取归一补丁的补丁头中,得到可以修复的版本的数量。
如上述图9B和图9D,补丁头的第一个字节可以表示该归一补丁可以修复的版本的数量。
可以修复的版本的数量可以用于指示步骤S1003中进行匹配查找的最多次数。
在一些实施例中,归一补丁中可以不包括可以修复的版本的数量,则用户设备无需执行S1002。
S1003、用户设备基于归一补丁确定当前版本对应的块偏移描述表。
具体地,用户设备按照补丁头中各个历史版本的信息进行匹配查找,确定当前版本对应的块偏移描述表。
其中,各个版本的信息可以包括各个历史版本占用空间的大小和其分别对应的块偏移描述表的在归一补丁中的位置信息,相关描述可以参见上述图4B的S4和图9B中的相关说明,此处不再赘述。
在一些具体的实施方式中,用户设备获取安装在用户设备上的当前版本所占用空间的大小,进而将当前版本占用空间的大小和补丁头中的依次排列的各个历史版本占用空间的大小进行比对查找,当查找到和用户设备当前版本的大小一致的历史版本时,说明上述多个历史版本包含当前版本,就读取该查找到的历史版本大小信息后连接的信息,即查找到的历史版本对应的块偏移描述表的位置信息,即为当前版本第一的块偏移描述表。进一步地,用户设备依据该当前版本对应的块偏移描述表的位置信息,从归一补丁中读取当前版本对应的块偏移描述表。
当未查找到与当前版本的占用空间的大小相同的历史版本时,则归一补丁无法修补当前版本,可以结束流程。
应理解,上述版本占用空间的大小也可以称为版本的长度。
S1004、用户设备基于当前版本、当前版本对应的块偏移描述表、当前版本对应的未匹配块修复当前版本,得到修复后的版本。
应理解,为描述方便,本申请中将当前版本对应的新版本,即修复后的版本,称为目标新版本;当前版本对应的块偏移描述表也称为目标新版本的块偏移描述表。
在S1004的一种具体实现中,可以包括如下过程:
(1)基于当前版本对应的块偏移描述表中描述的匹配块的标识(即匹配块在当前版本中位置),从该当前版本中获取匹配块。
(2)基于当前版本对应的块偏移描述表中描述的未匹配块的标识(即未匹配块在归一补丁中位置),从归一补丁中获取目标新版本的未匹配块。
(3)按照当前版本对应的块偏移描述表中描述的匹配块、未匹配块在目标新版本中的位置信息,将获取到的匹配块和未匹配块进行拼接,得到修复后的版本,即目标新版本。
需要强调的是,拼接的次序是匹配块、未匹配块在目标新版本中的位置的先后顺序。
在另一种具体实现中,未匹配块包括公共块和剩余块,S1004可以包括如下过程:
(1)基于当前版本对应的块偏移描述表中描述的匹配块的标识(即匹配块在当前版本中位置),从该当前版本中获取匹配块。
(2)基于当前版本对应的块偏移描述表中描述的剩余块的标识和公共块的标识(即剩余块、公共块分别在归一补丁中位置),从归一补丁中获取目标新版本的剩余块和公共块。
(3)按照当前版本对应的块偏移描述表中描述的匹配块、剩余块和公共块在目标新版本中的位置信息,将获取到的匹配块、剩余块和公共块进行拼接,得到修复后的版本,即目标新版本。
具体的,在一些实施例中,以用户设备的当前版本为历史版本M为例,其对应的块偏移描述表如图8所示。用户设备按照该块偏移描述表中描述的每个匹配块、公共块、剩余块的排列顺序,依次从历史版本M中读取匹配块M03、M01、M02,再从从归一补丁中依次读取剩余块Na1、公共块Na2,直至从历史版本M中读取匹配块M04和M05。按顺序读取的过程,即为上述各个数据块的按顺序拼接的过程,读取完块偏移描述表中的各个数据后块后,即得到修复后的版本,即目标新版本。
应理解,块偏移描述表还可以采用其他方式描述各个数据块的位置信息,图8仅为示例性说明。
示例性的,以应用图9C的一个软件产品包括历史版本A、历史版本B和历史版本C,生成的归一补丁,来修复历史版本A为例,来说明应用归一补丁修复版本的过程。
用户设备从服务器下载归一补丁到本地,读取补丁头中的第一个字节,该字节表示该归一补丁可以修复版本的数量,本示例为3。用户设备接着读取补丁头的第一个字节后的8字节,该8个字节为历史版本A的信息,先通过前4字节表示的历史版本A的大小,进行匹配查找,用户设备获取安装的当前版本的大小,获取到安装的版本的大小和补丁头中的版本A的大小相同,则确认安装的当前版本为历史版本A。应理解,当用户设备上安装的是历史版本C时,则需要匹配3次,因此补丁头中第一个字节表示的可以修复的版本的数量为最多匹配的次数,可以限制最多查找次数。在匹配到历史版本A后,读取补丁头中历史版本A的信息的后半部分4字节,找到“块偏移描述表A”的位置。用户设备基于该位置读取到块偏移描述表A,进而基于块偏移描述表A,从历史版本A中依次读取匹配块A01、从归一补丁中的依次读取块D和块E,在从历史版本A中读取匹配块A03和A02,进而,读取到的各个数据块拼接成新版本A1。
在一些实施例中,用户设备在S1004之后,还可以删除归一化补丁中多个新版本的未匹配块中除所述目标新版本的未匹配块之外的未匹配块,以及删除多个新版本的块偏移描述表中除目标新版本的块偏移描述表之外的块偏移描述表,得到适用于用户设备的单补丁,以进一步地,减少归一化补丁在用户设备上的占用空间。
应理解,归一补丁存储于磁盘、硬盘等外部存储器,打补丁的过程是将归一补丁中按块偏移描述表中描述的数据块的次序将当前版本中的匹配块和归一补丁中的目标新版本的公共块和剩余块依次读取到内存中的过程。可选地,用户设备在得到目标新版本后,可以将该目标新版本替换掉原来的版本(即上述当前版本),删除外部存储器中的归一补丁,以使下次启动软件产品时,不需要再使用归一补丁更新。
在一些实施例中,用户设备也可以在每次启动软件产品后,均执行上述S1002-S1004所示的方法;或者,也可以在得到适用于该用户的单补丁后,在每次启动软件产品后,通过该单补丁对当前版本进行更新。这视软件产品的情况而定,这里不作限定。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (17)
1.一种打补丁方法,其特征在于,包括:
获取归一补丁;所述归一补丁包括多个历史版本的版本信息、多个新版本的块偏移描述表以及所述多个新版本的未匹配块;所述历史版本与所述新版本一一对应,所述多个新版本为所述多个历史版本在修复相同问题后分别得到的版本;每个新版本的块偏移描述表包括所述每个新版本的匹配块和未匹配块分别在所述每个新版本中的位置信息;所述匹配块为所述每个新版本与所述每个新版本对应的历史版本均包含的数据块;所述未匹配块为所述每个新版本中包含且所述每个新版本对应的历史版本中不包含的数据块;
在基于所述多个历史版本的版本信息判断所述多个历史版本包含当前版本时,从所述归一补丁中获取目标新版本的块偏移描述表,所述目标新版本为所述当前版本对应的新版本;
按照所述目标新版本的块偏移描述表中的所述目标新版本的匹配块和未匹配块分别在所述目标新版本中的位置信息将所述目标新版本的匹配块和未匹配进行合并,生成所述目标新版本。
2.根据权利要求1所述的方法,其特征在于,所述每个新版本的未匹配块包括公共块和所述每个新版本的剩余块,所述公共块为所述多个新版本的未匹配块中均包含的数据块,所述每个新版本的剩余块为所述每个新版本的未匹配块中除所述公共块外的数据块,所述每个新版本的未匹配块在所述每个新版本中的位置信息包括所述公共块的在所述每个新版本中的位置信息和所述每个新版本的剩余块在所述每个新版本中的位置信息;所述按照所述目标新版本的块偏移描述表中的所述目标新版本的匹配块和未匹配块分别在所述目标新版本中的位置信息将所述目标新版本的匹配块和未匹配进行合并,生成所述目标新版本,具体包括:
从所述当前版本中获取所述目标新版本的匹配块;
从所述归一补丁中获取所述公共块和所述目标新版本的剩余块;
按照所述目标新版本的块偏移描述表中的所述目标新版本的匹配块和剩余块分别在所述目标新版本中的位置信息、所述公共块在所述目标新版本中的位置信息,将所述目标新版本的匹配块、剩余块和所述公共块进行拼接,生成所述目标新版本。
3.根据权利要求2所述的方法,其特征在于,所述每个新版本的块偏移描述表具体包括:所述每个新版本的匹配块的标识、所述公共块的标识和所述每个新版本的剩余块的标识;所述每个新版本的匹配块的标识、所述公共块的标识和所述每个新版本的剩余块的标识按照在所述每个新版本中的位置依次排列。
4.根据权利要求3所述的方法,其特征在于,所述每个新版本的匹配块的标识为所述每个新版本的匹配块在所述每个新版本对应的历史版本中的偏移信息,所述公共块的标识为所述公共块在所述归一补丁中的位置信息,所述每个新版本的剩余块的标识为所述每个新版本的剩余块在所述归一补丁中的位置信息。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述归一补丁还包括:所述多个新版本的块偏移描述表分别在所述归一补丁中的位置信息。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述每个新版本对应的历史版本的版本信息包括所述每个新版本对应的历史版本的长度,所述方法还包括:
获取所述当前版本的长度;
在所述多个历史版本的版本信息包含所述当前版本的长度时,判断所述多个历史版本包含当前版本。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
删除所述多个新版本的未匹配块中除所述目标新版本的未匹配块之外的未匹配块,以及删除所述多个新版本的块偏移描述表中除所述目标新版本的块偏移描述表之外的块偏移描述表。
8.一种生成补丁的方法,其特征在于,包括:
获取多个历史版本和多个新版本,所述历史版本与所述新版本一一对应;所述多个新版本为所述多个历史版本在修复相同问题后分别得到的版本;
将每个新版本与所述每个新版本对应的历史版本中的数据进行比对,确定所述每个新版本中的匹配块和未匹配块,其中,所述每个新版本的匹配块为所述每个新版本和所述每个新版本对应的历史版本中均包含的数据块,所述每个新版本的未匹配块为所述每个新版本中存在且所述每个新版本对应的历史版本中不包含的数据块;
基于所述多个历史版本的版本信息、所述多个新版本的块偏移描述表以及所述多个新版本的未匹配块,生成归一补丁,所述每个新版本的块偏移描述表包括所述每个新版本的匹配块和未匹配块在所述每个新版本中的位置信息,所述归一补丁用于对所述多个历史版本进行修复。
9.根据权利要求8所述的方法,其特征在于,所述将每个新版本与所述每个新版本对应的历史版本中的数据进行比对,确定所述每个新版本中的匹配块和未匹配块,具体包括:
从所述每个新版本中依次截取第一长度的数据块;
将截取到数据块与所述每个新版本对应的历史版本中的字节序列进行比对;
若所述每个新版本对应的历史版本包含与所述截取到的数据块相同的字节序列,则确定所述截取到的数据块为所述每个新版本的匹配块;
若所述每个新版本对应的历史版本不包含与所述截取到的数据块相同的字节序列,则确定所述截取到的数据块为所述每个新版本的未匹配块。
10.根据权利要求8或9所述的方法,其特征在于,所述生成归一补丁之前,所述方法还包括:
从所述多个新版本的未匹配块中查找相同的字节序列,得到公共块和所述每个新版本的剩余块,所述公共块为所述多个新版本的未匹配块中均包含的数据块,所述每个新版本的剩余块为所述每个新版本的未匹配块中除所述公共块外的数据块;
所述每个新版本的未匹配块在所述每个新版本中的位置信息包括所述公共块和所述每个新版本的剩余块在所述每个新版本中的位置信息;所述基于所述多个历史版本的版本信息、所述多个新版本的块偏移描述表以及所述多个新版本的未匹配块,生成归一补丁,具体包括:基于所述多个历史版本的版本信息、所述多个新版本的块偏移描述表、所述公共块以及所述每个新版本的剩余块,生成归一补丁。
11.根据权利要求10所述的方法,其特征在于,所述多个新版本包括目标版本和版本集合,所述目标版本为所述多个新版本中的一个版本,所述版本集合包括所述多个新版本中除所述目标版本外的版本,所述从所述多个新版本的未匹配块中查找相同的数据块,得到公共块和所述每个新版本的剩余块,具体包括:
从所述目标版本的未匹配块中依次获取第二长度的数据块;
将获取到数据块与所述版本集合中的各个版本的未匹配块中的字节序列进行比对;
若所述版本集合的每个版本的未匹配块中均包含与所述获取到的数据块相同的字节序列,则确定所述获取到的数据块为公共块;
若所述版本集合中存在至少一个版本的未匹配块不包含与所述获取到的数据块相同的字节序列,则确定所述获取到的数据块为所述目标版本的剩余块。
12.根据权利要求10所述的方法,其特征在于,所述每个新版本的块偏移描述表具体包括:所述每个新版本的匹配块的标识、所述公共块的标识和所述每个新版本的剩余块的标识;所述每个新版本的匹配块的标识、所述公共块的标识和所述每个新版本的剩余块的标识按照在所述每个新版本中的位置依次排列。
13.根据权利要求12所述的方法,其特征在于,所述每个新版本的匹配块的标识为所述每个新版本的匹配块在所述每个新版本对应的历史版本中的偏移信息,所述公共块的标识为所述公共块在所述归一补丁中的位置信息,所述每个新版本的剩余块的标识为所述每个新版本的剩余块在所述归一补丁中的位置信息。
14.根据权利要求8、9和11-13任一项所述的方法,其特征在于,所述归一补丁还包括:所述多个新版本的块偏移描述表分别在所述归一补丁中的位置信息。
15.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器用于存储数据和计算机指令,所述处理器用于调用所述存储器存储的数据和计算机指令以使得所述电子设备执行如权利要求1-7任一项所述的方法。
16.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器用于存储数据和计算机指令,所述处理器用于调用所述存储器存储的数据和计算机指令以使得所述电子设备执行如权利要求8-14任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1-14中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110832113.8A CN114461264B (zh) | 2021-07-22 | 2021-07-22 | 打补丁方法、生成补丁的方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110832113.8A CN114461264B (zh) | 2021-07-22 | 2021-07-22 | 打补丁方法、生成补丁的方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114461264A CN114461264A (zh) | 2022-05-10 |
CN114461264B true CN114461264B (zh) | 2023-01-10 |
Family
ID=81405535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110832113.8A Active CN114461264B (zh) | 2021-07-22 | 2021-07-22 | 打补丁方法、生成补丁的方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461264B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8438558B1 (en) * | 2009-03-27 | 2013-05-07 | Google Inc. | System and method of updating programs and data |
CN103514016A (zh) * | 2013-09-22 | 2014-01-15 | 上海华为技术有限公司 | 系统版本升级方法、装置和基站控制器 |
CN106528125A (zh) * | 2016-10-26 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据文件的增量更新方法和服务器、客户端以及系统 |
CN106716360A (zh) * | 2014-09-24 | 2017-05-24 | 甲骨文国际公司 | 支持多租户应用服务器环境中的补丁修补的系统和方法 |
CN111008034A (zh) * | 2019-12-02 | 2020-04-14 | 网易(杭州)网络有限公司 | 一种补丁生成方法及装置 |
CN112732312A (zh) * | 2021-02-09 | 2021-04-30 | 北京百度网讯科技有限公司 | 用于更新应用程序的方法及装置、电子设备和介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951279A (zh) * | 2017-02-27 | 2017-07-14 | 努比亚技术有限公司 | 应用的热修复装置及方法 |
CN112328303B (zh) * | 2020-09-29 | 2024-04-02 | 北京空间飞行器总体设计部 | 一种基于差异化算法的航天器软件在轨增量重构方法 |
-
2021
- 2021-07-22 CN CN202110832113.8A patent/CN114461264B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8438558B1 (en) * | 2009-03-27 | 2013-05-07 | Google Inc. | System and method of updating programs and data |
CN103514016A (zh) * | 2013-09-22 | 2014-01-15 | 上海华为技术有限公司 | 系统版本升级方法、装置和基站控制器 |
CN106716360A (zh) * | 2014-09-24 | 2017-05-24 | 甲骨文国际公司 | 支持多租户应用服务器环境中的补丁修补的系统和方法 |
CN106528125A (zh) * | 2016-10-26 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据文件的增量更新方法和服务器、客户端以及系统 |
CN111008034A (zh) * | 2019-12-02 | 2020-04-14 | 网易(杭州)网络有限公司 | 一种补丁生成方法及装置 |
CN112732312A (zh) * | 2021-02-09 | 2021-04-30 | 北京百度网讯科技有限公司 | 用于更新应用程序的方法及装置、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114461264A (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10452349B2 (en) | Electronic device and operation control method therefor | |
CN110633090B (zh) | 补丁方法、相关装置及系统 | |
CN109495871B (zh) | 蓝牙连接控制方法、电子装置及计算机可读存储介质 | |
CN106997302A (zh) | 固件升级方法、装置及音频播放设备 | |
CN110502184B (zh) | 一种存储数据的方法、读取数据的方法、装置及系统 | |
KR102137686B1 (ko) | 컨텐츠 무결성 제어 방법 및 그 전자 장치 | |
CN112817634A (zh) | Cota包下载方法及装置 | |
WO2015126051A1 (en) | Method and apparatus for synchronizing media data | |
CN113784331B (zh) | 更新用户身份识别模块卡系统数据的方法及装置 | |
CN116244008B (zh) | 应用启动方法、电子设备以及存储介质 | |
CN114461264B (zh) | 打补丁方法、生成补丁的方法及相关设备 | |
CN114816463A (zh) | 升级提示方法、终端设备及计算机可读存储介质 | |
CN111221544B (zh) | 一种预装应用软件的管理方法及终端 | |
WO2022174718A1 (zh) | 一种数据备份方法和电子设备 | |
CN116795435A (zh) | 兼容性管控方法及相关设备 | |
CN114116072A (zh) | 一种共享库的复用方法及电子设备 | |
CN113918246A (zh) | 功能控制方法、功能控制装置、存储介质与电子设备 | |
CN116048562B (zh) | 一种数据更新方法、电子设备及存储介质 | |
CN116055634B (zh) | 消息管理方法、终端设备及其介质 | |
CN114860293A (zh) | 电子设备及其系统升级方法和介质 | |
CN116048544B (zh) | 一种弹窗广告的处理方法、电子设备及可读存储介质 | |
WO2022068605A1 (zh) | 一种补丁复用方法、系统及电子设备 | |
WO2024072117A1 (ko) | 전자 장치 및 어플리케이션 간의 통신 방법 | |
WO2024010177A1 (ko) | 보안 회로의 애플릿을 갱신하기 위한 전자 장치 및 그의 동작 방법 | |
WO2022154273A1 (ko) | 데이터 백업을 지원하는 전자 장치 및 그 운용 방법 |
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 |