CN111008034A - 一种补丁生成方法及装置 - Google Patents
一种补丁生成方法及装置 Download PDFInfo
- Publication number
- CN111008034A CN111008034A CN201911215410.7A CN201911215410A CN111008034A CN 111008034 A CN111008034 A CN 111008034A CN 201911215410 A CN201911215410 A CN 201911215410A CN 111008034 A CN111008034 A CN 111008034A
- Authority
- CN
- China
- Prior art keywords
- resource file
- version
- resource
- file
- current version
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004422 calculation algorithm Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal 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)
- Stored Programmes (AREA)
Abstract
本申请提供了一种补丁生成方法及装置,首先获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁;其次,确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;最后,基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁。与现有技术相比,本申请能够利用目标历史版本的补丁生成当前版本的补丁,避免将应用程序新版本的每个资源文件与所有版本对应资源文件进行对比,有效降低资源消耗,提高生成补丁的效率。
Description
技术领域
本申请涉及计算机技术领域,尤其是涉及一种补丁生成方法及装置。
背景技术
为了提升应用程序的稳定性及安全性、实现更多的功能以及修复出现的问题,需要不断地对应用程序的资源文件进行更新。在现有技术中,通常将需要更改或新增的资源文件存入补丁中,通过补丁,将不同版本的应用程序升级至补丁对应的版本。随着更新的资源文件越来越多,补丁的大小也越来越大,而新安装应用程序的客户端需要将所有补丁全部下载,需要较长的时间及较多的资源。因此,在补丁文件的大小达到一定阈值时,会发布一个新版本的应用程序,供用户下载使用。然而,有很多用户选择不下载新版本的应用程序,而是仍使用旧版本的应用程序,市面上会出现多个不同版本的应用程序同时使用的情况,基于此,新发布的补丁就需要能够同时满足所有版本的更新需求。
目前,基于上述情况,在生成补丁时需要将应用程序新版本的每个资源文件与所有版本对应资源文件进行对比,而一个应用程序中资源文件的数量很大,通常能够达到数十万个,生成一个补丁需要消耗大量的时间与运算资源。
发明内容
有鉴于此,本申请的目的在于提供一种补丁生成方法及装置,能够利用目标历史版本的补丁生成当前版本的补丁,避免将应用程序新版本的每个资源文件与所有版本对应资源文件进行对比,有效降低资源消耗,提高生成补丁的效率。
第一方面,本申请实施例提供一种补丁生成方法,包括:
获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;
确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;
基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。
在一种可能的实施方式中,所述第一差异资源文件中包括:
所述第一差异资源文件对应的文件路径;以及,所述当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件、删除的资源文件、和修改的资源文件中的至少一种。
在一种可能的实施方式中,所述基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,包括:
将所述第一差异资源文件中所述新增的资源文件和/或修改的资源文件,增量更新到所述当前版本对应的补丁中,和/或,将所述第一差异资源文件中所述删除的资源文件,从所述当前版本对应的补丁中删除。
在一种可能的实施方式中,当无法获取所述目标历史版本对应的补丁,或所述目标历史版本对应的补丁不存在时,所述方法还包括:
确定当前版本与每个其他版本的资源文件之间的第二差异资源文件;
根据所述第二差异资源文件,生成所述当前版本对应的补丁。
在一种可能的实施方式中,所述确定当前版本与每个其他版本的资源文件之间的第二差异资源文件,包括:
确定当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值;
根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件。
在一种可能的实施方式中,所述根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件,包括:
针对当前版本的每个资源文件,将该资源文件的MD5值与每个文件名与该资源文件相同的其他版本的资源文件的MD5值进行对比;
若存在MD5值与该资源文件的MD5值不同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
若不存在文件名与该资源文件相同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
将储存在所述预设目录中的所有资源文件作为第二差异资源文件。
第二方面,本申请实施例还提供一种补丁生成装置,包括:
获取模块,用于获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;
确定模块,用于确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;
第一生成模块,用于基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。
在一种可能的实施方式中,所述第一差异资源文件中包括:
所述第一差异资源文件对应的文件路径;以及,所述当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件、删除的资源文件、和修改的资源文件中的至少一种。
在一种可能的实施方式中,所述第一生成模块具体用于:
将所述第一差异资源文件中所述新增的资源文件和/或修改的资源文件,增量更新到所述当前版本对应的补丁中,和/或,将所述第一差异资源文件中所述删除的资源文件,从所述当前版本对应的补丁中删除。
在一种可能的实施方式中,所述装置还包括第二生成模块,所述第二生成模块用于:
当无法获取所述目标历史版本对应的补丁,或所述目标历史版本对应的补丁不存在时,确定当前版本与每个其他版本的资源文件之间的第二差异资源文件;
根据所述第二差异资源文件,生成所述当前版本对应的补丁。
在一种可能的实施方式中,所述第二生成模块包括:
第一确定单元,用于确定当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值;
第二确定单元,用于根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件。
在一种可能的实施方式中,所述第二确定单元具体用于:
针对当前版本的每个资源文件,将该资源文件的MD5值与每个文件名与该资源文件相同的其他版本的资源文件的MD5值进行对比;
若存在MD5值与该资源文件的MD5值不同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
若不存在文件名与该资源文件相同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
将储存在所述预设目录中的所有资源文件作为第二差异资源文件。
第三方面,本申请实施例还提供一种电子设备,包括存储介质、与存储介质通信的处理器和总线。存储介质存储有处理器可执行的机器可读指令。当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行所述机器可读指令,可以执行以下操作:
获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;
确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;
基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。
在一种可能的实施方式中,所述第一差异资源文件中包括:
所述第一差异资源文件对应的文件路径;以及,所述当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件、删除的资源文件、和修改的资源文件中的至少一种。
在一种可能的实施方式中,处理器执行所述机器可读指令时,可以执行以下操作:
将所述第一差异资源文件中所述新增的资源文件和/或修改的资源文件,增量更新到所述当前版本对应的补丁中,和/或,将所述第一差异资源文件中所述删除的资源文件,从所述当前版本对应的补丁中删除。
在一种可能的实施方式中,当无法获取所述目标历史版本对应的补丁,或所述目标历史版本对应的补丁不存在时,处理器执行所述机器可读指令时,可以执行以下操作:
确定当前版本与每个其他版本的资源文件之间的第二差异资源文件;
根据所述第二差异资源文件,生成所述当前版本对应的补丁。
在一种可能的实施方式中,处理器执行所述机器可读指令时,可以执行以下操作:
确定当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值;
根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件。
在一种可能的实施方式中,处理器执行所述机器可读指令时,可以执行以下操作:
针对当前版本的每个资源文件,将该资源文件的MD5值与每个文件名与该资源文件相同的其他版本的资源文件的MD5值进行对比;
若存在MD5值与该资源文件的MD5值不同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
若不存在文件名与该资源文件相同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
将储存在所述预设目录中的所有资源文件作为第二差异资源文件。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的补丁生成方法的步骤。
本申请实施例提供的补丁生成方法及装置,获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。与现有技术相比,本申请能够利用目标历史版本的补丁生成当前版本的补丁,避免将应用程序新版本的每个资源文件与所有版本对应资源文件进行对比,有效降低资源消耗,提高生成补丁的效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种补丁生成方法的流程图;
图2示出了本申请实施例所提供的另一种补丁生成方法的流程图;
图3示出了本申请实施例所提供的另一种补丁生成方法的流程图;
图4示出了本申请实施例所提供的一种补丁生成装置的结构示意图;
图5示出了本申请实施例所提供的另一种补丁生成装置的结构示意图;
图6示出了本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
经研究发现,现有的补丁生成方法,在生成补丁时需要将应用程序新版本的每个资源文件与所有版本对应资源文件进行对比,而一个应用程序中资源文件的数量很大,通常能够达到数十万个,生成一个补丁需要消耗大量的时间与运算资源。
基于此,本申请实施例提供了一种补丁生成方法,以降低资源消耗,提高生成补丁的效率。
请参阅图1,图1为本申请实施例所提供的一种补丁生成方法的流程图。如图1中所示,本申请实施例提供的补丁生成方法,包括:
S101、获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁。
其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件。相对于其他版本,当前版本的资源文件是最新的,生成补丁的目的是为了将其他版本的资源文件更新至与当前版本的资源文件一致,以使目标应用程序得到更新、优化,进而让目标应用程序能够实现原本无法实现的功能,如修复错误、提升安全性等。
该步骤中,可以从数据库中,获取目标历史版本的资源文件及其对应的补丁,目标历史版本对应的补丁中包括了目标历史版本之前的版本升级至目标历史版本所需要的资源文件。
具体的,上述数据库可以是版本管理系统SVN的数据库,该数据库中能够储存目标应用程序所有版本的资源文件,以及所有版本对应的补丁。
S102、确定当前版本与目标历史版本的资源文件之间的第一差异资源文件。
该步骤中,在获取当前版本与目标历史版本的资源文件后,可以将两个版本的资源文件进行对比,由于两者为同一目标应用程序的不同版本,具有相同功能的资源文件在整体资源文件中的文件路径、文件名等信息基本一致,不一致的内容即为将目标历史版本的资源文件更新至当前版本所需的第一差异资源文件。
具体的,可以通过SVN系统的diff指令,确定两个版本之间的第一差异资源文件。这样,可以避免遍历两个版本的资源文件的目录结构,提高确定第一差异资源文件的速度。
其中,资源文件的类型可以是图片、音频、视频、文字资源,或者其他可以在计算机中展示的内容等等,能够被专门的程序接口所读取,并在应用程序中根据需要向用户展示;第一差异资源文件可以包括至少一个资源文件。
S103、基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁。
其中,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。
该步骤中,可以将第一差异资源文件按照其对应的文件目录,增量更新到目标历史版本对应的补丁当中,由于目标历史版本对应的补丁中包括能够将目标历史版本之前任一版本资源文件更新至目标历史版本资源文件的差异资源文件,因此,得到的当前版本对应的补丁,也能够将目标历史版本之前的任一版本更新至当前版本,这样,可以省去与每个其他版本对比的步骤,直接利用目标历史版本对应的补丁,生成当前版本对应的补丁,减少了大量的生成时间,节约大量计算资源。
进一步的,在生成当前版本对应的补丁后,可以将其与当前版本的版本号一起储存进数据库中,以便于后续生成补丁时使用。
在一种可能的实施方式中,所述第一差异资源文件中包括:
所述第一差异资源文件对应的文件路径;以及,所述当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件、删除的资源文件、和修改的资源文件中的至少一种。
其中,所述当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件,可以是当前版本中存在,且目标历史版本中不存在的资源文件。
具体的,若一当前版本的资源文件的文件名为“Client.exe”,文件路径为“/app/client/”,且目标历史版本的资源文件的“/app/client/”文件路径中不存在名为“Client.exe”文件,则可以确定,当前版本的资源文件中的“Client.exe”文件是当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件;若当前版本的资源文件中不存在名为“Client.exe”、文件路径为“/app/client/”的文件,而目标历史版本的资源文件中存在,则可以确定,名为“Client.exe”、文件路径为“/app/client/”的文件,是当前版本的资源文件相对于所述目标历史版本的资源文件,删除的资源文件。
相似的,若一当前版本的资源文件的文件名为“Client.exe”,文件路径为“/app/client/”,且目标历史版本的资源文件的“/app/client/”文件路径中存在名为“Client.exe”的文件,但该文件中的内容与当前版本的资源文件中的同名文件不完全相同,则可以确定,当前版本的资源文件中的“Client.exe”文件是当前版本的资源文件相对于所述目标历史版本的资源文件,修改的资源文件。
在一种可能的实施方式中,所述基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,包括:
将所述第一差异资源文件中所述新增的资源文件和/或修改的资源文件,增量更新到所述当前版本对应的补丁中,和/或,将所述第一差异资源文件中所述删除的资源文件,从所述当前版本对应的补丁中删除。
该步骤中,可以按照每个第一差异资源文件的文件路径,将新增的第一差异文件添加到目标历史版本对应的补丁中,对于目标历史版本对应的补丁中不存在该文件路径的第一差异资源文件,可以先在目标历史版本对应的补丁中新增该路径,然后再将该第一差异资源文件添加进去;对于修改的第一差异资源文件,可以将目标历史版本对应的补丁中的资源文件,替换为与其对应的第一差异资源文件;对于删除的第一差异资源文件,则直接将其在目标历史版本对应的补丁中对应的资源文件删除。
在一种可能的实施方式中,当无法获取所述目标历史版本对应的补丁,或所述目标历史版本对应的补丁不存在时,所述方法还包括:
确定当前版本与每个其他版本的资源文件之间的第二差异资源文件;
根据所述第二差异资源文件,生成所述当前版本对应的补丁。
该步骤中,在确定当前版本每个其他版本的资源文件之间的第二差异资源文件后,可以将第二差异资源文件按照其对应的文件目录,进行资源压缩、脚本编码及加密,打包生成单一的补丁文件,并将其与其对应的版本号储存进入数据库中。
这里,无法获取到目标历史版本对应的补丁的原因,可以是数据库中未储存目标历史版本对应的补丁,而当目标历史版本是目标应用程序的第一个版本时,由于不存在目标历史版本之前的版本,则目标历史版本对应的补丁也不存在。
在一种可能的实施方式中,所述确定当前版本与每个其他版本的资源文件之间的第二差异资源文件,包括:
确定当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值;
根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件。
其中,MD5信息摘要算法,是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),可以用于确保信息传输完整一致。这里,可以通过计算两个版本中相同路径相同名称的两个资源文件的MD5值,再将两个MD5值进行对比,若不完全相同,则可以确定这两个资源文件之间存在差异,并将其确定为第二差异资源文件。
与第一差异资源文件相似,第二差异资源文件同样可以包括至少一个资源文件,其类型同样可以为图片、音频、视频、文字资源,或者其他可以在计算机中展示的内容等等;第二差异资源文件中也包括所述第二差异资源文件对应的文件路径;以及,所述当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件、删除的资源文件、和修改的资源文件中的至少一种。
在一种可能的实施方式中,所述根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件,包括:
针对当前版本的每个资源文件,将该资源文件的MD5值与每个文件名与该资源文件相同的其他版本的资源文件的MD5值进行对比;
若存在MD5值与该资源文件的MD5值不同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
若不存在文件名与该资源文件相同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
将储存在所述预设目录中的所有资源文件作为第二差异资源文件。
该步骤中,对于相较于目标历史版本删除的资源文件,由于当前版本的资源文件中并不存在该资源文件,则可以确定当前版本中该资源文件对应的MD5值的文件为0;相应的,对于相较于目标历史版本新增的资源文件,则可以确定目标历史版本中该资源文件对应的MD5值为0,这样,即使存在不同时出现在两个版本中的资源文件,也能够通过计算MD5值的方式,确定两个版本之间的差异资源文件。
进一步的,对于删除的资源文件,可以为该资源文件赋予一个删除标签,并将其按照其对应的文件路径,存放在预设目录中,在补丁安装时,安装程序能够根据其携带的删除标签,将目标历史版本中的该资源文件删除。
请参阅图2,图2为本申请另一实施例提供的补丁生成方法的流程图。如图2中所示,本申请实施例提供的补丁生成方法,包括:
S201:确定要生成补丁的版本,一般为最新版本(也即上述当前版本)。
S202:找出上一个补丁包及其版本(即上述目标历史版本,此处选择当前版本的前一个版本)。
S203:使用svn工具的diff命令,指定—summarize参数,输出新增/修改/删除的差异文件或目录路径列表。
S204:确定差异文件的类型,类型包括新增、修改、删除中的至少一项。
S205:针对新增/修改的文件,将这些路径或文件检出到本地,并存放入预设目录DIFF内。
S206:将DIFF内的文件增量添加到上一个版本的补丁包内,此过程会覆盖掉旧补丁内同名的文件。
S207:针对被删除的文件,在步骤S206中得到补丁包内,删除掉路径被标记为删除的文件或者目录。
S208:生成当前版本的补丁,并记录其版本。
请参阅图3,图3为本申请另一实施例提供的补丁生成方法的流程图。如图3中所示,本申请实施例提供的补丁生成方法,包括:
S301:确定要生成补丁的版本,一般为最新版本(也即上述当前版本)。
S302:将该版本的资源文件完整的检出到本地。
S303:遍历该版本的资源文件的目录,按照目录顺序确定每个资源文件是否进行过检测。
S304:若没有进行过检测,则生成该资源文件的MD5值。
S305:将步骤S304生成的MD5值,与历史记录的各版本内、同名文件的MD5值一一比对,直到发现不同或者对比结束。
S306:若该资源文件是新增/修改的文件,则将其放入DIFF目录内,并继续步骤S303。
S307:若该资源文件是未修改过的文件(MD5值相同),则继续步骤S303。
S308:当步骤S303执行完成后,将DIFF目录内的资源压缩、脚本编码、加密后,打包成单一的补丁文件,并记录版本。
本申请实施例提供的补丁生成方法,首先获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;其次,确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;最后,基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。与现有技术相比,本申请能够利用目标历史版本的补丁生成当前版本的补丁,避免将应用程序新版本的每个资源文件与所有版本对应资源文件进行对比,有效降低资源消耗,提高生成补丁的效率。
请参阅图4、图5,图4为本申请实施例所提供的一种补丁生成装置的结构示意图,图5为本申请实施例所提供的另一种补丁生成装置的结构示意图。如图4中所示,所述补丁生成装置400包括:
获取模块410,用于获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;
确定模块420,用于确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;
第一生成模块430,用于基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。
在一种可能的实施方式中,所述第一差异资源文件中包括:
所述第一差异资源文件对应的文件路径;以及,所述当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件、删除的资源文件、和修改的资源文件中的至少一种。
在一种可能的实施方式中,所述第一生成模块430具体用于:
将所述第一差异资源文件中所述新增的资源文件和/或修改的资源文件,增量更新到所述当前版本对应的补丁中,和/或,将所述第一差异资源文件中所述删除的资源文件,从所述当前版本对应的补丁中删除。
如图5所示,所述补丁生成装置500包括:获取模块510、确定模块520、第一生成模块530以及第二生成模块540,所述第二生成模块540用于:
当无法获取所述目标历史版本对应的补丁,或所述目标历史版本对应的补丁不存在时,确定当前版本与每个其他版本的资源文件之间的第二差异资源文件;
根据所述第二差异资源文件,生成所述当前版本对应的补丁。
在一种可能的实施方式中,所述第二生成模块540包括:
第一确定单元541,用于确定当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值;
第二确定单元542,用于根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件。
在一种可能的实施方式中,所述第二确定单元542具体用于:
针对当前版本的每个资源文件,将该资源文件的MD5值与每个文件名与该资源文件相同的其他版本的资源文件的MD5值进行对比;
若存在MD5值与该资源文件的MD5值不同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
若不存在文件名与该资源文件相同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
将储存在所述预设目录中的所有资源文件作为第二差异资源文件。
本申请实施例提供的补丁生成装置,首先获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;其次,确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;最后,基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。与现有技术相比,本申请能够利用目标历史版本的补丁生成当前版本的补丁,避免将应用程序新版本的每个资源文件与所有版本对应资源文件进行对比,有效降低资源消耗,提高生成补丁的效率。
请参阅图6,图6为本申请实施例所提供的一种电子设备的结构示意图。如图6中所示,所述电子设备600包括处理器610、存储器620和总线630。
所述存储器620存储有所述处理器610可执行的机器可读指令,当电子设备600运行时,所述处理器610与所述存储器620之间通过总线630通信,所述机器可读指令被所述处理器610执行时,可以执行以下操作:
获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;
确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;
基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。
在一种可能的实施方式中,所述第一差异资源文件中包括:
所述第一差异资源文件对应的文件路径;以及,所述当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件、删除的资源文件、和修改的资源文件中的至少一种。
在一种可能的实施方式中,处理器610执行所述机器可读指令时,可以执行以下操作:
将所述第一差异资源文件中所述新增的资源文件和/或修改的资源文件,增量更新到所述当前版本对应的补丁中,和/或,将所述第一差异资源文件中所述删除的资源文件,从所述当前版本对应的补丁中删除。
在一种可能的实施方式中,当无法获取所述目标历史版本对应的补丁,或所述目标历史版本对应的补丁不存在时,处理器610执行所述机器可读指令时,可以执行以下操作:
确定当前版本与每个其他版本的资源文件之间的第二差异资源文件;
根据所述第二差异资源文件,生成所述当前版本对应的补丁。
在一种可能的实施方式中,处理器610执行所述机器可读指令时,可以执行以下操作:
确定当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值;
根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件。
在一种可能的实施方式中,处理器610执行所述机器可读指令时,可以执行以下操作:
针对当前版本的每个资源文件,将该资源文件的MD5值与每个文件名与该资源文件相同的其他版本的资源文件的MD5值进行对比;
若存在MD5值与该资源文件的MD5值不同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
若不存在文件名与该资源文件相同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
将储存在所述预设目录中的所有资源文件作为第二差异资源文件。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1以及图2所示方法实施例中的xx方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种补丁生成方法,其特征在于,所述方法包括:
获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;
确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;
基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。
2.根据权利要求1所述的方法,其特征在于,所述第一差异资源文件中包括:
所述第一差异资源文件对应的文件路径;以及,所述当前版本的资源文件相对于所述目标历史版本的资源文件,新增的资源文件、删除的资源文件、和修改的资源文件中的至少一种。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,包括:
将所述第一差异资源文件中所述新增的资源文件和/或修改的资源文件,增量更新到所述当前版本对应的补丁中,和/或,将所述第一差异资源文件中所述删除的资源文件,从所述当前版本对应的补丁中删除。
4.根据权利要求1所述的方法,其特征在于,当无法获取所述目标历史版本对应的补丁,或所述目标历史版本对应的补丁不存在时,所述方法还包括:
确定当前版本与每个其他版本的资源文件之间的第二差异资源文件;
根据所述第二差异资源文件,生成所述当前版本对应的补丁。
5.根据权利要求4所述的方法,其特征在于,所述确定当前版本与每个其他版本的资源文件之间的第二差异资源文件,包括:
确定当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值;
根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件。
6.根据权利要求5所述的方法,其特征在于,所述根据所述当前版本与每个其他版本的每个资源文件的消息摘要算法MD5值,确定所述第二差异资源文件,包括:
针对当前版本的每个资源文件,将该资源文件的MD5值与每个文件名与该资源文件相同的其他版本的资源文件的MD5值进行对比;
若存在MD5值与该资源文件的MD5值不同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
若不存在文件名与该资源文件相同的、其他版本的资源文件,则将该资源文件按照该资源文件的文件路径,储存在预设目录中;
将储存在所述预设目录中的所有资源文件作为第二差异资源文件。
7.一种补丁生成装置,其特征在于,所述装置包括:
获取模块,用于获取目标应用程序在当前版本和目标历史版本的资源文件,以及所述目标应用程序在所述目标历史版本对应的补丁,其中,所述目标历史版本为所述当前版本之前的任一版本,所述目标历史版本对应的补丁用于将目标应用程序在目标历史版本之前的任一版本的资源文件更新为目标历史版本的资源文件;
确定模块,用于确定当前版本与目标历史版本的资源文件之间的第一差异资源文件;
第一生成模块,用于基于所述第一差异资源文件,以及所述目标历史版本对应的补丁,生成所述当前版本对应的补丁,所述当前版本对应的补丁用于将目标应用程序在当前版本之前的任一版本的资源文件更新为当前版本的资源文件。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括第二生成模块,所述第二生成模块用于:
当无法获取所述目标历史版本对应的补丁,或所述目标历史版本对应的补丁不存在时,确定当前版本与每个其他版本的资源文件之间的第二差异资源文件;
根据所述第二差异资源文件,生成所述当前版本对应的补丁。
9.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至6任一所述的补丁生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至6任一所述的补丁生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911215410.7A CN111008034B (zh) | 2019-12-02 | 2019-12-02 | 一种补丁生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911215410.7A CN111008034B (zh) | 2019-12-02 | 2019-12-02 | 一种补丁生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111008034A true CN111008034A (zh) | 2020-04-14 |
CN111008034B CN111008034B (zh) | 2023-11-24 |
Family
ID=70113410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911215410.7A Active CN111008034B (zh) | 2019-12-02 | 2019-12-02 | 一种补丁生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111008034B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111562929A (zh) * | 2020-04-29 | 2020-08-21 | 米哈游科技(上海)有限公司 | 补丁文件的生成方法、装置、设备及存储介质 |
CN112657196A (zh) * | 2020-12-21 | 2021-04-16 | 北京像素软件科技股份有限公司 | 资源更新方法、装置、计算机设备和可读存储介质 |
CN113590237A (zh) * | 2020-04-30 | 2021-11-02 | 安徽华米信息科技有限公司 | 资源更新方法、装置及设备 |
CN114443109A (zh) * | 2021-07-19 | 2022-05-06 | 荣耀终端有限公司 | 补丁修复方法、电子设备及存储介质 |
CN114461264A (zh) * | 2021-07-22 | 2022-05-10 | 荣耀终端有限公司 | 打补丁方法、生成补丁的方法及相关设备 |
WO2023213093A1 (zh) * | 2022-05-05 | 2023-11-09 | 苏州元脑智能科技有限公司 | 代码更新方法、装置、电子设备和计算机非易失性可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239309A (zh) * | 2017-06-06 | 2017-10-10 | 网易(杭州)网络有限公司 | 补丁生成方法及装置、更新方法、电子设备、存储介质 |
US20190155598A1 (en) * | 2017-11-17 | 2019-05-23 | Apple Inc. | Techniques for updating a file using a multi-version patch file |
CN110262827A (zh) * | 2019-05-20 | 2019-09-20 | 北京三快在线科技有限公司 | 增量更新的方法、装置、存储介质以及电子设备 |
-
2019
- 2019-12-02 CN CN201911215410.7A patent/CN111008034B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239309A (zh) * | 2017-06-06 | 2017-10-10 | 网易(杭州)网络有限公司 | 补丁生成方法及装置、更新方法、电子设备、存储介质 |
US20190155598A1 (en) * | 2017-11-17 | 2019-05-23 | Apple Inc. | Techniques for updating a file using a multi-version patch file |
CN110262827A (zh) * | 2019-05-20 | 2019-09-20 | 北京三快在线科技有限公司 | 增量更新的方法、装置、存储介质以及电子设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111562929A (zh) * | 2020-04-29 | 2020-08-21 | 米哈游科技(上海)有限公司 | 补丁文件的生成方法、装置、设备及存储介质 |
CN113590237A (zh) * | 2020-04-30 | 2021-11-02 | 安徽华米信息科技有限公司 | 资源更新方法、装置及设备 |
CN112657196A (zh) * | 2020-12-21 | 2021-04-16 | 北京像素软件科技股份有限公司 | 资源更新方法、装置、计算机设备和可读存储介质 |
CN114443109A (zh) * | 2021-07-19 | 2022-05-06 | 荣耀终端有限公司 | 补丁修复方法、电子设备及存储介质 |
CN114443109B (zh) * | 2021-07-19 | 2023-08-22 | 荣耀终端有限公司 | 补丁修复方法、电子设备及存储介质 |
CN114461264A (zh) * | 2021-07-22 | 2022-05-10 | 荣耀终端有限公司 | 打补丁方法、生成补丁的方法及相关设备 |
CN114461264B (zh) * | 2021-07-22 | 2023-01-10 | 荣耀终端有限公司 | 打补丁方法、生成补丁的方法及相关设备 |
WO2023213093A1 (zh) * | 2022-05-05 | 2023-11-09 | 苏州元脑智能科技有限公司 | 代码更新方法、装置、电子设备和计算机非易失性可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111008034B (zh) | 2023-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111008034B (zh) | 一种补丁生成方法及装置 | |
US20110145807A1 (en) | Method and device for updating a computer application | |
CN106843978B (zh) | 一种sdk接入方法及系统 | |
CN105786538B (zh) | 基于安卓系统的软件升级方法和装置 | |
CN110928497B (zh) | 一种元数据处理方法、装置、设备及可读存储介质 | |
US12067122B2 (en) | Detecting added functionality in open source package | |
CN109309725B (zh) | 应用下载和更新方法、装置、计算机设备及存储介质 | |
CN113326058A (zh) | 一种应用的版本更新方法、装置、设备及介质 | |
CN112579202B (zh) | Windows系统的服务性程序编辑方法、装置、设备及存储介质 | |
CN111538523A (zh) | 差分升级方法、设备及存储介质 | |
CN106155723B (zh) | 业务应用程序的升级方法和装置、终端和计算机存储介质 | |
CN115543429A (zh) | 项目环境的搭建方法、电子设备及计算机可读存储介质 | |
CN113961226B (zh) | 一种软件开发工具包修复方法、终端、服务器及设备 | |
CN117667173A (zh) | 一种安全增量升级方法、装置、电子设备及存储介质 | |
CN109766084B (zh) | 支付应用的定制开发方法、装置、计算机设备和存储介质 | |
JP5943753B2 (ja) | 仮想マシン管理システム、仮想マシン管理方法およびプログラム | |
CN111046389A (zh) | 固件组件安全更新的方法以及用以实施的携行计算机站 | |
JP7222428B2 (ja) | 検証情報作成システム、検証情報作成方法、および、検証情報作成プログラム | |
CN114153457A (zh) | 应用程序安装文件生成方法、装置及存储介质 | |
CN113220314A (zh) | App资源加载及apk生成方法、装置、设备及介质 | |
CN111427607A (zh) | 配置文件修复方法、设备及计算机可读存储介质 | |
JP7171339B2 (ja) | 情報処理装置、情報処理装置の制御方法、及び、プログラム | |
CN112765608A (zh) | 目标apk源代码获取方法、电子设备和介质 | |
CN113741913A (zh) | 图片配置方法、装置、系统和存储介质 | |
CN108345461B (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 |