CN106484771B - 差异信息文件生成及应用方法、装置 - Google Patents

差异信息文件生成及应用方法、装置 Download PDF

Info

Publication number
CN106484771B
CN106484771B CN201610816016.9A CN201610816016A CN106484771B CN 106484771 B CN106484771 B CN 106484771B CN 201610816016 A CN201610816016 A CN 201610816016A CN 106484771 B CN106484771 B CN 106484771B
Authority
CN
China
Prior art keywords
data item
section
item
data
array
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
CN201610816016.9A
Other languages
English (en)
Other versions
CN106484771A (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 CN201610816016.9A priority Critical patent/CN106484771B/zh
Publication of CN106484771A publication Critical patent/CN106484771A/zh
Application granted granted Critical
Publication of CN106484771B publication Critical patent/CN106484771B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种差异信息文件生成及应用方法、装置,属于计算机技术领域。方法包括:获取原始安装包文件和升级安装包文件;对于原始安装包文件中的第i节,对比第i节在原始安装包文件中的数据项以及第i节在升级安装包文件中的数据项,得到第i节的差异信息,i的初始值为1;将第i节的差异信息添加至差异信息文件中;当i小于n时,则令i=i+1,重新执行对比步骤;当i等于n时,得到差异信息文件。本发明由于安装包文件中的数据按节组织,依序对原始安装包文件和升级安装包文件中同一个节的数据项进行对比,确定出各个节在两个文件之间的差异,优化了原始安装包文件和升级安装包文件之间的差异信息,减少了差异信息文件的大小。

Description

差异信息文件生成及应用方法、装置
技术领域
本发明涉及计算机技术领域,特别涉及一种差异信息文件生成及应用方法、装置。
背景技术
虚拟机可执行格式(英文:dalvik executable format,简称:Dex)文件是指安卓(英文:android)操作系统上的Java虚拟机可识别的描述一系列类及其相关数据的文件格式。
相关技术中在获取用于定义原始Dex文件和新Dex文件之间的差异信息的差异信息文件时,首先比较原始Dex文件和新Dex文件的二进制数据流,找到最长的未发生改变的二进制串,然后将其它发生改变的二进制串及其增删改操作作为两个文件的差异信息保存到差异信息文件中。在应用差异信息时,再通过差异信息文件中保存的差异信息重新生成新的Dex文件。
上述方式将二进制数据流中所有发生改变的二进制串均作为了差异信息,导致生成的差异信息存在大量冗余。
发明内容
为了解决现有技术中因对比原始Dex文件和新的Dex文件的二进制数据流,将二进制数据流中所有发生改变的二进制串均作为了差异信息,导致生成的差异信息存在大量冗余的问题,本发明实施例提供了一种差异信息文件生成及应用方法、装置。所述技术方案如下:
第一方面,提供了一种差异信息文件生成方法,所述方法包括:
获取原始安装包文件和升级安装包文件,所述升级安装包文件是原始安装包文件升级后的安装包文件,所述原始安装包文件和所述升级安装包文件均包括n个节,每个节中包括至少一个数据项;
对于所述原始安装包文件中的第i节,对比所述第i节在所述原始安装包文件中的数据项以及所述第i节在所述升级安装包文件中的数据项,得到所述第i节的差异信息,i的初始值为1;
将所述第i节的差异信息添加至差异信息文件中;
当i小于n时,则令i=i+1,重新执行对比所述第i节在所述原始安装包文件中的数据项以及所述第i节在所述升级安装包文件中的数据项的步骤;
当i等于n时,得到所述差异信息文件。
第二方面,提供了一种差异信息文件应用方法,所述方法包括:
获取原始安装包文件和差异信息文件,所述差异信息文件包含所述原始安装包文件和与所述原始安装包对应的升级安装包文件之间的差异信息,所述原始安装包文件包括n个节,每个节中包括至少一个数据项;
对于所述原始安装包文件中的第i原始节,根据所述第i原始节在所述原始安装包文件中的数据项、所述差异信息文件中所述第i原始节的差异信息,生成与所述第i原始节对应的第i升级节,i的初始值为1;
将所述第i升级节添加至所述升级安装包文件中;
当i小于n时,则令i=i+1,重新执行根据所述第i原始节在所述原始安装包文件中的数据项、所述差异信息文件中所述第i原始节的差异信息,生成与所述第i原始节对应的第i升级节的步骤;
当i等于n时,得到所述升级安装包文件。
第三方面,提供了一种差异信息文件生成装置,所述装置包括:
获取模块,用于获取原始安装包文件和升级安装包文件,所述升级安装包文件是原始安装包文件升级后的安装包文件,所述原始安装包文件和所述升级安装包文件均包括n个节,每个节中包括至少一个数据项;
对比模块,用于对于所述原始安装包文件中的第i节,对比所述第i节在所述原始安装包文件中的数据项以及所述第i节在所述升级安装包文件中的数据项,得到所述第i节的差异信息,i的初始值为1;
添加模块,用于将所述对比模块对比得到的所述第i节的差异信息添加至差异信息文件中;
所述对比模块,还用于当i小于n时,则令i=i+1,重新执行对比所述第i节在所述原始安装包文件中的数据项以及所述第i节在所述升级安装包文件中的数据项的步骤;当i等于n时,得到所述差异信息文件。
第四方面,提供了一种差异信息文件应用装置,所述装置包括:
获取模块,用于获取原始安装包文件和差异信息文件,所述差异信息文件包含所述原始安装包文件和与所述原始安装包对应的升级安装包文件之间的差异信息,所述原始安装包文件包括n个节,每个节中包括至少一个数据项;
生成模块,用于对于所述原始安装包文件中的第i原始节,根据所述第i原始节在所述原始安装包文件中的数据项、所述差异信息文件中所述第i原始节的差异信息,生成与所述第i原始节对应的第i升级节,i的初始值为1;
添加模块,用于将所述生成模块得到的所述第i升级节添加至所述升级安装包文件中;
所述生成模块,还用于当i小于n时,则令i=i+1,重新执行根据所述第i原始节在所述原始安装包文件中的数据项、所述差异信息文件中所述第i原始节的差异信息,生成与所述第i原始节对应的第i升级节的步骤;当i等于n时,得到所述升级安装包文件。
本发明实施例提供的技术方案带来的有益效果是:
通过将安装包文件中的数据按节组织,不同节之间的数据项通过索引号或文件偏移进行引用,对于每一节,对比该节在原始安装包文件和升级安装包文件中的差异信息,将该节的差异信息添加至差异信息文件中;由于安装包文件中的数据按节组织,依序对原始安装包文件和升级安装包文件中同一个节的数据项进行对比,确定出各个节在两个文件之间的差异,无需记录相同的数据,优化了原始安装包文件和升级安装包文件之间的差异信息,减少了差异信息文件的大小。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明部分实施例提供的安装包文件的结构示意图;
图2A是本发明一个实施例中提供的差异信息文件生成方法的流程图;
图2B是本发明一个实施例中提供的获取第i节的差异信息时的流程图;
图2C是本发明一个实施例中提供的节A和节B的结构以及引用关系的结构示意图;
图2D是本发明一个实施例中提供的节A所对应的第一数组和第二数组的示意图;
图2E是本发明一个实施例中提供的节B所对应的第一数组和第二数组的示意图;
图3A是本发明一个实施例中提供的差异信息文件应用方法的流程图;
图3B是本发明一个实施例中提供的获取第i升级节时的流程图;
图3C是本发明一个实施例中提供的模拟生成节A的新节点时的流程示意图;
图3D是本发明一个实施例中提供的模拟生成节B的新节点时的流程示意图;
图4是本发明一个实施例中提供的差异信息文件校验方法的流程图;
图5是本发明一个实施例中提供的差异信息文件生成装置的结构示意图;
图6是本发明一个实施例中提供的差异信息文件应用装置的结构示意图;
图7是本发明一个实施例中提供的服务器的结构示意图;
图8是本发明一个实施例中提供的终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本申请中,为了尽可能的减少差异信息文件的大小,将安装包文件中的数据按节(Section)进行了组织和划分。这里所讲的安装包是具有节和数据项组织方式的文件,比如按照节和数据项组织的Dex文件。
安装包文件的结构请参见图1所示,每个节包括至少一个数据项,每个数据项具备的属性包括索引号和文件偏移中的前一种或两种,索引号是对同一个节中的数据项进行的编号,文件偏移指示数据项引用的其他节的数据项,文件偏移中包括所引用的数据项的索引号。当一个节未引用其他节时,该节的数据项的文件偏移属性为空,也即,该节的数据项的属性不包含文件偏移属性。
在实际应用中,服务器在应用存在bug时,需要通过下发热补丁文件(差异信息文件)来修复。首先,服务器使用安装包补丁生成(DexPatchGenerator)逻辑对应用安装包的原始安装包文件和升级后的新的安装包文件进行对比,利用对比得到的差异信息生成差异信息文件;然后,由安装包补丁应用(DexPatchApplier)逻辑根据原始安装包文件和差异信息文件模拟一次新安装包文件的生成过程;最后,由安装包类比较(DexClassComparator)逻辑校验DexPatchGenerator逻辑和DexPatchApplier逻辑的正确性。
此后,服务器在编译生成热补丁文件后,通过版本管理系统的热补丁下发功能将该热补丁文件下发到用户的手机客户端上,此时手机客户端读取原始安装包中的原始安装包文件和热补丁文件,生成新安装包文件并使其生效,其中新安装包文件由手机上运行的DexPatchApplier逻辑负责生成。
服务器利用安装包补丁生成逻辑生成差异信息文件的过程可以参见图2A和图2B中的各个步骤。
图2A是本发明一个实施例中提供的差异信息文件生成方法的流程图,该差异信息文件生成应用于服务器中,该差异信息文件生成方法包括:
步骤210,获取原始安装包文件和升级安装包文件。
升级安装包文件是原始安装包文件升级后的安装包文件,原始安装包文件和升级安装包文件均包括n个节,每个节中包括至少一个数据项。
步骤220,对于原始安装包文件中的第i节,对比第i节在原始安装包文件中的数据项以及第i节在升级安装包文件中的数据项,得到第i节的差异信息。
i的初始值为1。
对于原始安装包文件中的第i节,对比第i节在原始安装包文件中的数据项以及该节在升级安装包文件中的数据项,得到第i节的差异信息。
当应用程序的线上版本(即原始安装包对应的版本)存在bug时,研发人员根据bug确定修复bug的修复逻辑,根据修复逻辑修正原始安装包文件,得到新安装包文件,这里将该新安装包文件记为升级安装包文件。
对于原始安装包文件中的第i节,原始安装包文件和升级安装包文件中均存在对应的数据项,因此可以对比第i节在原始安装包文件中的数据项以及第i节在升级安装包文件中的数据项,得到第i节的差异信息。
步骤230,将第i节的差异信息添加至差异信息文件中。
步骤240,当i小于n时,则令i=i+1,重新执行对比第i节在原始安装包文件中的数据项以及第i节在升级安装包文件中的数据项的步骤。
当i小于n时,也即原始安装包文件存在尚未处理的节时,获取原始安装包文件中需要处理的下一节,对获取到的该下一节,重复执行步骤220至步骤230的步骤。
步骤250,当i等于n时,得到差异信息文件。
当i等于n时,也即原始安装包文件不存在尚未处理的节时,表明原始安装包文件中所有的节均被处理过,此时则结束对比,这时差异信息文件即包含了各个具备差异的节的差异信息。
综上所述,本发明实施例提供的差异信息文件生成方法,通过将安装包文件中的数据按节组织,不同节之间的数据项通过索引号或文件偏移进行引用,对于每一节,对比该节在原始安装包文件和新安装包文件中的差异信息,将该节的差异信息添加至差异信息文件中;由于安装包文件中的数据按节组织,依序对原始安装包文件和新安装包文件中同一个节的数据项进行对比,确定出各个节在两个文件之间的差异,无需记录相同的数据,优化了原始安装包文件和新安装包文件之间的差异信息,减少了差异信息文件的大小。
在实际实现时,第i节的差异信息可以包括第i节的操作序列和第i节的修正序列。
第i节的操作序列可以包括第i节在原始安装包文件中被删除的数据项,和/或,第i节在升级安装包文件中增加的数据项。
其中,这里所讲的被删除的数据项位于原始安装包文件中的,但不位于升级安装包文件中;这里所讲的增加的数据项不位于原始安装包文件中的,但位于升级安装包文件中。
当第i节的数据项存在被删除的数据项或增加的数据项时,会导致第i节中排列在被删除的数据项或增加的数据项之后的其他数据项的索引号发生变化,因此还需要记录索引号变化的数据项的修正数据,以保证可以实现对引用第i节的其他节的数据项进行修正。
因此,第i节的修正序列包括第i节在原始安装包文件和升级安装包文件中相同数据项的修正数据。
这里所讲的数据项的修正数据限定了以下前一种或两种:数据项在原始安装包文件的索引号以及在升级安装包文件的索引号之间的对应关系,和,数据项在原始安装包文件的文件偏移以及在升级安装包文件的文件偏移之间的对应关系。
也就是说,当第i节不引用其他节时,该数据项的修正数据限定了该数据项在原始安装包文件的索引号以及在升级安装包文件的索引号之间的对应关系;而,当第i节引用了其他节时,该数据项的修正数据还限定了该数据项在原始安装包文件的文件偏移以及在升级安装包文件的文件偏移之间的对应关系。
上述步骤220在实际实现时,为了简化对比流程,可以将第i节在原始安装包文件中的数据项排序后添加至第一数组,将第i节在升级安装包文件中的数据项排序后添加至第二数组,然后对比第一数组和第二数组,将第一数组中被删除的数据项以及第二数组中增加的数据项添加至第i节的操作序列中,将利用第一数组和第二数组中相同的数据项生成的修正数据添加至第i节的第一修正序列中,将该操作序列和第一修正序列作为第i节的差异信息,其中,第一修正序列用于对引用第i节的其他节中的数据项进行修正。
可选的,在对数据项进行排序时,需要按照预定排序方式,使得第一数组的排序方式和第二数组的排序方式相同,以保证对比的准确性。一般来讲,对于同一节中的第一数据项和第二数据项,当第一数据项的索引号小于第二数据项的索引号时,第一数据项小于或等于第二数据项,对应的,预定排序方式可以包括:首先,按照数据项递增的顺序排列各个数据项;其次,在数据项相同时,按照数据项的索引号递增的顺序排列各个数据项。
也就是说,排序后的任两个相邻的数据项,在前数据项的索引号小于在后数据项的索引号,且在前数据项的值小于或等于在后数据项的值。
由于上述预定排序方式中需要根据索引号进行排序,因此若需要处理的第i节引用其他节时,第i节中的数据项包含文件偏移属性,因此需要所引用的其他节的修正序列修正第i节中的数据项,然后按照预定排序方式对修正后的数据项进行排序;而若需要处理的第i节未引用其他节时,可以直接对数据项按照该预定排序方式进行排序。
在原始安装包文件中第i节的数据项按序添加至第一数组,且升级安装包文件中第i节的数据项按序添加至第二数组后,则可以对比第一数组和第二数组,以得到两个数组之间的差异,在对比第一数组和第二数组时,可以参见如下图2B中所示的步骤。
图2B是本发明一个实施例中提供的获取第i节的差异信息时的流程图,服务器在获取第i节的差异信息时,包括以下步骤:
步骤221,从第一数组中读取第j数据项。
j的初始值为1。
在实际实现时,可以在第一数组定义第一指针,第一指针依序从第一数组的第一个数据项开始进行读取。
步骤222,从第二数组中读取第k数据项。
k的初始值为1。
在实际实现时,可以在第二数组定义第二指针,第二指针依序从第二数组的第一个数据项开始进行读取。
从第一数组中读取第j数据项和从第二数组中读取第k数据项的大小。
步骤223,在第一数组中的第j数据项小于第二数组中的第k数据项时,将第j数据项作为删除项添加至操作序列,令j=j+1,重复执行从第一数组中读取第j数据项的步骤。
在第一数组中的第j数据项小于第二数组中的第k数据项时,将第j数据项作为删除项存入操作序列,将j加1,也即将第一指针向后移动一位,指向第一数组中的第j+1数据项,然后将读取出的该第j+1数据项与第k数据项进行比较。
步骤224,在第一数组中的第j数据项大于第二数组中的第k数据项时,将第k数据项作为新增项添加至该操作序列,令k=k+1,重复执行从第二数组中读取第k数据项的步骤。
在第一数组中的第j数据项大于第二数组中的第k数据项时,将第k数据项作为新增项存入操作序列,将k加1,也即将第二指针向后移动一位,指向第二数组中的第k+1数据项,然后将读取出的该第k+1数据项与第j数据项的数据进行比较。
步骤225,在第一数组中的第j数据项等于第二数组中的第j个数据项时,根据第j数据项和第k数据项记录修正数据,将该修正数据添加至第i节的第一修正序列中,令j=j+1、k=k+1,重复执行该从该第一数组中读取第j数据项,从该第二数组中读取第k数据项的步骤。
在第一数组中的第j数据项等于第二数组中的第k数据项时,将第k数据项作为新增项存入操作序列,将k加1,也即将第二指针向后移动一位,指向第k+1数据项,然后将读取出的第k+1数据项与第j数据项的数据进行比较。
服务器在根据第j数据项和第k数据项记录修正数据时,当第i节中的数据项的属性不包括文件偏移时,记录第j数据项的索引号与该第k数据项的索引号对应;当第i节中的数据项的属性包括文件偏移时,记录第j数据项的索引号与第k数据项的索引号对应,记录第j数据项的文件偏移等价于第k数据项的文件偏移。
步骤226,当该第一数组中的数据项全部被读取完时,将该第二数组中剩余的数据项作为新增项添加至该操作序列中。
这里的操作序列为第i节的操作序列。
步骤227,当该第二数组中的数据项全部被读取完时,将该第一数组中剩余的数据项作为删除项添加至该操作序列中。
请参见图2C所示,在图2C的(1)中为原始安装包文件中的节A和节B的构成以及引用关系,图2C中的(2)中为升级安装包文件中的节A和节B的构成以及引用关系,原始安装包文件中的节A为原始节A,原始安装包文件中的节B为原始节B,升级安装包文件中的节A为升级节A,升级安装包文件中的节B为升级节B。
下面结合图2C、图2D和图2E对节A和节B的处理进行说明。
图2D是本发明一个实施例中提供的节A所对应的第一数组和第二数组的示意图,在图2D中,第一数组包含排序后的原始节A的数据项,第二数组包含排序后的升级节A的数据项,从第一数组的第一个数据项(索引号为0)以及第二数组的第一个数据项(索引号为0)进行对比,第一数组的第一个数据项和第二数组的第一个数据项相同,记录修正数据:原始节A中索引号0与升级节A中索引号0对应。
继续对比第一数组的第二个数据项(索引号为1)和第二数组的第二个数据项(索引号为1),此时第一数组的第二个数据项的数据b小于第二数组的第二个数据项的数据c,判定第一数组的第二个数据项小于第二数组的第二个数据项,将第一数组的第二个数据项认定为删除项增加至操作序列中。
继续读取第一数组的第三个数据项(索引号为2),将该第三个数据项与第二数组的第二个数据项(索引号为1)进行对比,两者的数值均为c,此时认为两者相同,记录修正数据:原始节A中索引号2与升级节A中索引号1对应。
继续读取第一数组的第四个数据项(索引号为3),和第二数组的第三个数据项(索引号为2),将两者进行对比,由于两者的数值均为d,此时认为两者相同,记录修正数据:原始节A中索引号3与升级节A中索引号2对应。
继续读取第一数组的第五个数据项(索引号为4),和第二数组的第四个数据项(索引号为3),将两者进行对比,由于两者的数值均为e,此时认为两者相同,记录修正数据:原始节A中索引号4与升级节A中索引号3对应。
继续读取第一数组的第六个数据项(索引号为5),和第二数组的第五个数据项(索引号为4),将两者进行对比,由于第一数组的第六个数据项的数值g大于第二数组的第五个数据项的数值f,此时表明第二数组的第五个数据项为新增项,将该新增项添加至操作序列。
由上述对比可知,对节A的处理过程中生成的操作序列为:删除b、索引号为1;新增f,索引号为4。
对节A的处理过程中生成的第一修正序列为:原始节A中的索引号2与升级节A中索引号1对应;原始节A中的索引号3与升级节A中索引号2对应;原始节A中的索引号4与升级节A中索引号3对应。
图2E是本发明一个实施例中提供的节B所对应的第一数组和第二数组的示意图,由于节B中的数据项存在文件偏移,因此读取原始节B时要根据节A的处理结果中的第一修正序列来进行修正,然后再存入第一数组并排序。然后再读取升级节B,同时也要根据第一修正序列来进行修正,再存入第二数组并排序。由于此时原始节B和升级节B的数据项没有差异,因此结束对比。
综上所述,本发明实施例按照相同的排序方式将节在原始安装包文件中的数据项以及节在升级安装包文件中的数据项进行了排序,为对比节在原始安装包文件和升级安装包文件中的差异提供了理论基础。
在获取到该节的操作序列后,由于修改的数据项的实现是删除原有的数据项,增加新的数据项,因此在操作序列中会存储有相邻的且索引号相同的删除项和新增项,此时可以将相邻的删除项和新增项替换为替换页,以减少操作序列的占用空间。
在实际实现时,步骤S1,按照预定排序方式对该节的操作序列中的数据项进行排序;步骤S2,遍历排序后的该操作序列,若相邻的两个数据项中在前数据项为删除项,在后数据项为新增项,且该相邻的两个数据项的索引号相同时,从该操作序列中删除该相邻的两个数据项,在删除的位置插入数据项的数据与该新增项的数据相同的替换项。
综上所述,本发明实施例确定出操作序列中前后相邻的且索引号相同的删除项和新增项,利用替换项替换操作序列中的删除项和新增项,因此减少了操作序列的存储空间。
服务器利用安装包补丁应用逻辑模拟生成升级安装包文件,或者终端利用安装包补丁应用逻辑生成升级安装包文件的过程可以参见图3A和图3B的各个步骤。
图3A是本发明一个实施例中提供的差异信息文件应用方法的流程图,该差异信息文件应用方法应用于服务器或终端中,以下以服务器为例进行举例说明,该差异信息文件应用方法包括:
步骤310,获取原始安装包文件和差异信息文件。
可选的,在步骤310之前,服务器还可以读取差异信息文件中记录的原始安装包的签名,当读取出的签名与原始安装包的签名相同时,则执行步骤310,否则输出报错信息。
差异信息文件包含原始安装包文件和与原始安装包对应的升级安装包文件之间的差异信息,原始安装包文件包括n个原始节。本申请中,为了便于区分,将位于原始安装包中的节记为原始节,将升级安装包文件中的节记为升级节。
步骤320,对于原始安装包文件中的第i原始节,根据第i原始节在原始安装包文件中的数据项、差异信息文件中第i原始节的差异信息,生成与第i原始节对应的第i升级节。
i的初始值为1。
步骤330,将第i升级节添加至升级安装包文件中。
步骤340,当i小于n时,则令i=i+1,重新执行根据第i原始节在原始安装包文件中的数据项、差异信息文件中第i原始节的差异信息,生成与第i原始节对应的第i升级节的步骤。
步骤350,当i等于n时,得到升级安装包文件。
综上所述,本发明实施例提供的差异信息文件应用方法,通过利用原始安装包文件以及与原始安装包文件和升级安装包文件对应的差异信息文件,生成与原始安装包文件对应的升级安装包文件,由于差异信息文件小于升级安装包的大小,因此节省了下载升级安装包的时间和流量。
服务器或终端在根据第i原始节在原始安装包文件中的数据项、差异信息文件中第i原始节的差异信息,生成与第i原始节对应的第i升级节时,可以参见图3B中的各个步骤。
图3B是本发明一个实施例中提供的获取第i升级节时的流程图,服务器或终端在获取第i升级节时,包括以下步骤:
步骤321,对于第i原始节中的第j数据项,读取原始安装包文件中第i原始节的第j数据项。
i和j的初始值为1。
步骤322,当第j数据项的索引号对应第一修正序列中的第一修正数据时,将第j个数据项的数据加入第i升级节,根据第一修正数据修正第i升级节中加入的第j数据项的属性,记录第二修正数据,将第二修正数据添加至第二修正序列中。
第i原始节的差异信息包括第i原始节的操作序列和第一修正序列,其中:
第i原始节的操作序列包括原始安装包文件中第i原始节被替换的数据项,和/或,原始安装包文件中第i原始节增加的数据项。
第i原始节的第一修正序列包括第i原始节在原始安装包文件和升级安装包文件中相同数据项的第一修正数据,数据项的第一修正数据限定了以下前一种或两种:数据项在所述原始安装包文件的索引号以及在升级安装包文件的索引号之间的对应关系,和,数据项在原始安装包文件的文件偏移以及在升级安装包文件的文件偏移之间的对应关系。
服务器在根据第一修正数据修正第i升级节中加入的第j数据项的属性时,当第i原始节中的数据项的属性不包括文件偏移时,根据第一修正数据修正第i升级节中加入的第j数据项的索引号属性;当第i原始节中的数据项的属性包括文件偏移时,根据第一修正数据修正第i升级节中加入的第j数据项的索引号属性和文件偏移属性。
当其他原始节引用第i原始节时,由于第i原始节数据项的属性被进行了修正,修正过程中会修改数据项的索引号和文件偏移,这会导致应用该第i原始节的其他节的属性也需要对应修正,因此第i原始节在修正后,需要记录修正数据,将修正数据作为第二修正数据,并将第二修正数据添加至第二修正序列中,以便于引用第i节的其他原始节可以根据第二修正序列对数据项进行修正。
该第二修正序列用于对引用第i原始节的其他节中的数据项进行修正。
当该数据项的索引号对应第i原始节的第一修正序列中的修正数据时,表明该数据项不为删除项也不为新增项或替换页,此时可以直接将该数据项加入第i原始节对应的第i升级节中。
每次向第i升级节中加入第j数据项的数据时,均在第i升级节中已存储的数据项的后面加入数据项。第j数据项的数据即为第j数据项本身的数据。
步骤323,当第j数据项的索引号对应第i升级节的操作序列中的新增项时,将该新增项的数据加入与第i升级节中。
新增项的数据即为新增项本身的数据。
步骤324,当第j数据项的索引号对应第i升级节的操作序列中的替换项时,将该替换项的数据加入与第i升级节中。
替换项的数据即为替换项本身的数据。
步骤325,当第i原始节存在尚未处理的数据项时,则令i=i+1,重新执行读取原始安装包文件中第i原始节的第j数据项的步骤。
步骤326,当第i原始节不存在尚未处理的数据项,且第i原始节的操作序列的数据项均被添加至第i升级节时,得到第i升级节。
步骤327,在得到该原始安装包文件中所有原始节的升级节时,根据所有升级节的新节生成与该原始安装包文件对应的升级安装包文件。
请参见图3C所示,操作序列中数据为b的数据项是删除项,数据是f的数据项是增加项,第一修正序列中的第一修正数据包括:原始节A的数据项索引号2与升级节A的数据项索引号1对应、原始节A的数据项索引号3与升级节A的数据项索引号2对应、原始节A的数据项索引号4与升级节A的数据项索引号3对应等。
在模拟生成升级节A的过程中,对于原始节A的第j数据项,如果第j数据项的索引号对应原始节A的操作序列中的删除项时,则不将第j数据项添加至升级节A中,比如数据为b、索引号为1的数据项。
如果第j数据项的索引号对应操作序列中的升级增项或替换项时,则将第j数据添加至升级节中,比如数据为f、索引号为5的数据项。
如果第j数据项的索引号对应第一修正序列中的修正数据,则将第j数据项添加至升级节中,比如,数据为c、索引号为2的数据项,数据为d、索引号为3的数据项以及数据为e、索引号为4的数据项,由于对应于第一修正数据的这些数据项被修正过,因此将这些数据项添加至升级节A之后,按照第一修正数据进行修正。
比如,在将原始节A中数据为c、索引号为2的数据项添加至升级节A中后,利用该数据项所对应的第一修正数据:原始节A的数据项索引2相当于升级节A的数据项索引1,将升级节A被添加的该数据项的索引号属性修正为1,并记录修正数据作为第二修正数据,将第二修正数据添加至第二修正序列。
还比如,在将原始节A中数据为d、索引号为3的数据项添加至升级节A中后,利用该数据项所对应的第一修正数据:原始节A的数据项索引3相当于升级节A的数据项索引2,将升级节A被添加的该数据项的索引号属性修正为2,并记录修正数据作为第二修正数据,将第二修正数据添加至第二修正序列。
请参见图3D所示,类似的,在模拟生成升级节B的过程中,对于原始节A的第j数据项,如果第j数据项的索引号对应原始节B的操作序列中的删除项时,则不将第j数据项添加至升级节B中。
如果第j数据项的索引号对应原始节B的操作序列中的新增项或替换项时,则将第j数据添项加至升级节B中。
如果第j数据项的索引号对应原始节B的第二修正序列中的修正数据时,则将第j数据项添加至升级节B中,利用所引用的原始节A的第二修正序列进行修正。
比如,数据为“引用节A第2项”、索引号为1的数据项,利用该数据项所引用的原始节A的第二修正数据:原始节A的数据项索引2相当于升级节A的数据项索引1,将升级节B被添加的该数据项的文件偏移属性修正为引用节A第1项,并记录修正数据。
综上所述,本发明实施例通过原始安装包文件以及利用安装包补丁生成逻辑得到的差异信息文件,模拟生成升级安装包文件,当服务器利用安装包补丁生成逻辑模拟生成升级安装包文件时,可以便于后续对该升级安装包文件正确性的校验;当终端利用安装包补丁生成逻辑生成升级安装包文件时,使终端在具备较小的差异信息文件时,即可根据原始安装包文件以及差异信息文件得到升级安装包文件,在保证终端成功升级的情况下,避免了终端下载升级后的数据量较大的安装包。
服务器利用安装包类比较逻辑进行校验的过程可以参见图4的各个步骤。
图4是本发明一个实施例中提供的差异信息文件校验方法的流程图,该差异信息文件校验方法应用于服务器中,该差异信息文件校验方法包括:
步骤410,对于第一升级安装包文件中的第i节,从第二升级安装包文件中读取第i节中尚未对比的第j数据项。
第一升级安装包文件是研发人员根据原始安装包文件存在的bug,将修改bug的逻辑进行编译后生成的。第二升级安装包文件是服务器根据安装包PatchApplier逻辑模拟生成的与原始安装包文件对应的升级安装包文件。
步骤420,对第j数据项中的各个属性进行对比。
服务器在对第j数据项中的各个属性进行对比时,对于第j数据项的每个需要对比的目标属性,获取目标属性的类型;若目标属性为非引用类型的属性(比如非索引号或非文件偏移)时,对从第一升级安装包文件中读取的第j数据项的目标属性和从第二升级安装包文件中读取的第j数据项中的目标属性进行对比。若目标属性为引用类型的属性(比如索引号或文件偏移),根据引用类型的属性的引用关系查找引用的原始数据项和升级数据项,递归的对比查找到的这两个数据项的属性,将对比结果作为这两个目标属性的对比结果。
步骤430,在对比的属性不同时,判定第一升级安装包文件和第二升级安装包文件不同,结束对比。
步骤440,在对比的属性均相同时,令j=j+1,重复执行对第j数据项中的各个属性进行对比的步骤。
步骤450,若第i节中的数据项均对比完毕,则令i=i+1,重复执行从第二升级安装包文件中读取第i节中尚未对比的第j数据项的步骤。
步骤460,当第一升级安装包文件中的所有节均被对比完毕,则判定第一升级安装包文件和第二升级安装包文件相同。
综上所述,本发明实施例通过对升级安装包文件和升级安装包文件进行验证,可以验证安装包补丁生成逻辑和安装包补丁应用逻辑的正确性。
图5是本发明一个实施例中提供的差异信息文件生成装置的结构示意图,该差异信息文件生成装置以软件、硬件或软硬件结合的方式实现成为服务器或服务器的一部分,该差异信息文件生成装置包括:获取模块510、对比模块520和添加模块530。
获取模块510至少用于实现步骤210的功能。
对比模块520至少用于实现步骤220、步骤240和步骤250中至少一个步骤的功能。
添加模块530至少用于实现步骤230的功能。
可选的,对比模块520可以包括第一添加单元、第二添加单元和对比单元。
第一添加单元、第二添加单元和对比单元分别用于实现步骤220、步骤240和步骤250中至少一个步骤的相应功能。
可选的,对比单元还可以用于实现步骤221至步骤227中至少一个步骤的功能。
可选的,该差异信息文件生成装置还可以包括排序模块和替换模块。
排序模块至少用于实现步骤S1的功能。
替换模块至少用于实现步骤S2的功能。
综上所述,本发明实施例提供的差异信息文件生成装置,通过将安装包文件中的数据按节组织,不同节之间的数据项通过索引号或文件偏移进行引用,对于每一节,对比该节在原始安装包文件和新安装包文件中的差异信息,将该节的差异信息添加至差异信息文件中;由于安装包文件中的数据按节组织,依序对原始安装包文件和新安装包文件中同一个节的数据项进行对比,确定出各个节在两个文件之间的差异,无需记录相同的数据,优化了原始安装包文件和新安装包文件之间的差异信息,减少了差异信息文件的大小。
图6是本发明一个实施例中提供的差异信息文件应用装置的结构示意图,该差异信息文件生成装置以软件、硬件或软硬件结合的方式实现成为服务器或服务器的一部分,该差异信息文件应用装置包括:获取模块610、生成模块620和添加模块630。
获取模块610至少用于实现步骤310的功能。
生成模块620至少用于实现步骤320、步骤340和步骤350中任一步骤的功能。
添加模块630至少用于实现步骤330的功能。
可选的,生成模块620可以包括读取单元、第一添加单元、第二添加单元、第三添加单元和生成单元。
读取单元至少用于实现步骤321、步骤325和步骤326中至少一个步骤的功能。
第一添加单元至少用于实现步骤322的功能。
第二添加单元至少用于实现步骤323的功能。
第三添加单元至少用于实现步骤324的功能。
生成单元至少用于实现步骤327的功能。
综上所述,本发明实施例提供的差异信息文件应用装置,通过利用原始安装包文件以及与原始安装包文件和升级安装包文件对应的差异信息文件,生成与原始安装包文件对应的升级安装包文件,由于差异信息文件小于升级安装包的大小,因此节省了下载升级安装包的时间和流量。
需要说明的是:上述实施例中提供的差异信息文件生成及应用装置在生成和使用差异信息文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器及终端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的差异信息文件生成装置与差异信息文件生成方法实施例属于同一构思,上述实施例提供的差异信息文件应用装置与差异信息文件应用方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图7是本发明一个实施例中提供的服务器的结构示意图。该服务器可以用于实现上述各个实施例中的差异信息文件生成方法以及差异信息文件应用方法。具体来讲:
服务器700包括中央处理单元(英文:central processing unit,简称:CPU)701、包括随机存取存储器(英文:random-access memory,简称:RAM)702和只读存储器(英文:read only memory,简称:ROM)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出(英文:input/output,简称:I/O)系统706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。
基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中显示器708和输入设备709都通过连接到系统总线705的输入/输出控制器710连接到中央处理单元701。基本输入/输出系统706还可以包括输入/输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入/输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读寄存器(英文:erasable programmable read only memory,简称:EPROM)、带电可擦写可编程只读存储器(英文:electrically erasable programmableread-only,简称:EEPROM)、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。
根据本发明的各种实施例,服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行,用于实现上下文所涉及的服务器的功能。
图8是本发明一个实施例中提供的终端的结构示意图,该终端800用于实施上述实施例提供的差异信息文件应用方法。本发明中的终端800可以包括一个或多个如下组成部分:用于执行计算机程序指令以完成各种流程和方法的处理器,用于信息和存储程序指令随机接入存储器(RAM)和只读存储器(ROM),用于存储数据和信息的存储器,I/O设备,界面,天线等。具体来讲:
终端800可以包括RF(Radio Frequency,射频)电路810、存储器820、输入单元830、显示单元840、传感器850、音频电路860、WiFi(wireless fidelity,无线保真)模块870、处理器880、电源882、摄像头890等部件。本领域技术人员可以理解,图8中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图8对终端800的各个构成部件进行具体的介绍:
RF电路810可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器880处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路810还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobilecommunication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband CodeDivision Multiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器820可用于存储软件程序以及模块,处理器880通过运行存储在存储器820的软件程序以及模块,从而执行终端800的各种功能应用以及数据处理。存储器820可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端800的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元830可用于接收输入的数字或字符信息,以及产生与终端800的用户设置以及功能控制有关的键信号输入。具体地,输入单元830可包括触控面板831以及其他输入设备832。触控面板831,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板831上或在触控面板831附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板831可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器880,并能接收处理器880发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板831。除了触控面板831,输入单元830还可以包括其他输入设备832。具体地,其他输入设备832可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元840可用于显示由用户输入的信息或提供给用户的信息以及终端800的各种菜单。显示单元840可包括显示面板841,可选的,可以采用LCD(Liquid CrystalDisplay,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板841。进一步的,触控面板831可覆盖显示面板841,当触控面板831检测到在其上或附近的触摸操作后,传送给处理器880以确定触摸事件的类型,随后处理器880根据触摸事件的类型在显示面板841上提供相应的视觉输出。虽然在图8中,触控面板831与显示面板841是作为两个独立的部件来实现终端800的输入和输入功能,但是在某些实施例中,可以将触控面板831与显示面板841集成而实现终端800的输入和输出功能。
终端800还可包括至少一种传感器850,比如陀螺仪传感器、磁感应传感器、光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板841的亮度,接近传感器可在终端800移动到耳边时,关闭显示面板841和/或背光。作为运动传感器的一种,加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端800还可配置的气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路860、扬声器861,传声器862可提供用户与终端800之间的音频接口。音频电路860可将接收到的音频数据转换后的电信号,传输到扬声器861,由扬声器861转换为声音信号输出;另一方面,传声器862将收集的声音信号转换为电信号,由音频电路860接收后转换为音频数据,再将音频数据输出处理器880处理后,经RF电路810以发送给比如另一终端,或者将音频数据输出至存储器820以便进一步处理。
WiFi属于短距离无线传输技术,终端800通过WiFi模块870可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了WiFi模块870,但是可以理解的是,其并不属于终端800的必须构成,完全可以根据需要在不改变公开的本质的范围内而省略。
处理器880是终端800的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器820内的软件程序和/或模块,以及调用存储在存储器820内的数据,执行终端800的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器880可包括一个或多个处理单元;优选的,处理器880可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器880中。
终端800还包括给各个部件供电的电源882(比如电池),优选的,电源可以通过电源管理系统与处理器882逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
摄像头890一般由镜头、图像传感器、接口、数字信号处理器、CPU、显示屏幕等组成。其中,镜头固定在图像传感器的上方,可以通过手动调节镜头来改变聚焦;图像传感器相当于传统相机的“胶卷”,是摄像头采集图像的心脏;接口用于把摄像头利用排线、板对板连接器、弹簧式连接方式与终端主板连接,将采集的图像发送给所述存储器820;数字信号处理器通过数学运算对采集的图像进行处理,将采集的模拟图像转换为数字图像并通过接口发送给存储器820。
尽管未示出,终端800还可以包括蓝牙模块等,在此不再赘述。
终端800除了包括一个或者多个处理器880,还包括有存储器,以及一个或者多个程序,其中一个或者多个程序存储于存储器中,并被配置成由一个或者多个处理器执行,用于实现上下文所涉及的终端的功能。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种差异信息文件生成方法,其特征在于,所述方法包括:
获取原始安装包文件和升级安装包文件,所述升级安装包文件是原始安装包文件升级后的安装包文件,所述原始安装包文件和所述升级安装包文件均包括n个节,每个节中包括至少一个数据项;每个数据项具备的属性包括索引号和文件偏移中的前一种或两种,所述文件偏移指示对应的数据项引用的其他节的数据项;
当所述原始安装包文件中的第i节中的数据项的属性包括文件偏移时,利用所述第i节所引用的节的修正序列对所述第i节在所述原始安装包文件和所述升级安装包文件中的所有数据项进行修正,将所述原始安装包文件中修正后的数据项按照预定排序方式存入第一数组,将所述升级安装包文件中修正后的数据项按照所述预定排序方式存入第二数组,i的初始值为1;
当所述第i节中的数据项的属性不包括文件偏移时,将所述原始安装包文件中的数据项按照所述预定排序方式存入所述第一数组,将所述升级安装包文件中的数据项按照所述预定排序方式存入所述第二数组;
对比所述第一数组和所述第二数组,将所述第一数组中被删除的数据项以及所述第二数组中增加的数据项添加至所述第i节的操作序列中,将利用所述第一数组和所述第二数组中相同数据项生成的修正数据添加至所述第i节的修正序列中;
从所述第一数组中读取第j数据项,从所述第二数组中读取第k数据项,j和k的初始值均为1;
在所述第一数组中的第j数据项小于所述第二数组中的第k数据项时,将所述第j数据项作为删除项添加至所述第i节的操作序列,令j=j+1,重复执行所述从所述第一数组中读取第j数据项的步骤;
在所述第一数组中的第j数据项大于所述第二数组中的第k数据项时,将所述第k数据项作为新增项添加至所述第i节的操作序列,令k=k+1,重复执行从所述第二数组中读取第k数据项的步骤;
在所述第一数组中的第j数据项等于所述第二数组中的第k数据项时,根据所述第j数据项和所述第k数据项记录修正数据,将所述修正数据添加至所述第i节的修正序列中,令j=j+1、k=k+1,重复执行从所述第一数组中读取第j数据项,从所述第二数组中读取第k数据项的步骤,所述第i节的修正序列用于对引用所述第i节的其他节中的数据项进行修正;所述修正数据限定了以下前一种或两种:对应的数据项在所述原始安装包文件的索引号以及在所述升级安装包文件的索引号之间的对应关系,和,对应的数据项在所述原始安装包文件的文件偏移以及在所述升级安装包文件的文件偏移之间的对应关系;
当所述第一数组中的数据项全部被读取完时,将所述第二数组中剩余的数据项作为新增项添加至所述第i节的操作序列中;
当所述第二数组中的数据项全部被读取完时,将所述第一数组中剩余的数据项作为删除项添加至所述第i节的操作序列中;
将所述第i节的操作序列和所述第i节的修正序列作为所述第i节的差异信息;
将所述第i节的差异信息添加至差异信息文件中;
当i小于n时,则令i=i+1,重新执行对比所述第i节在所述原始安装包文件中的数据项以及所述第i节在所述升级安装包文件中的数据项的步骤;
当i等于n时,得到所述差异信息文件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第j数据项和所述第k数据项记录修正数据,包括:
当所述第i节中的数据项的属性不包括文件偏移时,记录所述第j数据项的索引号与所述第k数据项的索引号对应;
当所述第i节中的数据项的属性包括文件偏移时,记录所述第j数据项的索引号与所述第k数据项的索引号对应,记录所述第j数据项的文件偏移与所述第k数据项的文件偏移对应。
3.根据权利要求1所述的方法,其特征在于,在所述将所述第一数组中被删除的数据项以及所述第二数组中新增的数据项添加至所述第i节的操作序列中之后,所述方法还包括:
按照所述预定排序方式对所述操作序列中的数据项进行排序;
遍历排序后的所述操作序列,若相邻的两个数据项中在前数据项为删除项,在后数据项为新增项,且所述相邻的两个数据项的索引号相同时,从所述操作序列中删除所述相邻的两个数据项,在删除的位置插入数值与所述新增项相同的替换项。
4.根据权利要求1所述的方法,其特征在于,所述预定排序方式包括:
按照数据项递增的顺序排列各个数据项;
在数据项相同时,按照数据项的索引号递增的顺序排列各个数据项;
其中,对于数据项中的第一数据项和第二数据项,当所述第一数据项的索引号小于所述第二数据项的索引号,所述第一数据项小于或等于所述第二数据项。
5.一种差异信息文件应用方法,其特征在于,所述方法包括:
获取原始安装包文件和差异信息文件,所述差异信息文件包含所述原始安装包文件和与所述原始安装包对应的升级安装包文件之间的差异信息,所述原始安装包文件包括n个节,每个节中包括至少一个数据项;每个数据项具备的属性包括索引号和文件偏移中的前一种或两种,所述文件偏移指示对应的数据项引用的其他节的数据项;
读取所述原始安装包文件中的第i原始节中的第j数据项,i、j的初始值为1;
当所述第j数据项的索引号对应第一修正序列中的第一修正数据时,将所述第j数据项的数据加入第i升级节,根据所述第i原始节的第一修正数据修正所述第i升级节中加入的所述第j数据项的属性,记录第二修正数据,将所述第二修正数据添加至第二修正序列中,所述第二修正序列用于对引用所述第i原始节的其他原始节中的数据项进行修正;所述差异信息文件中包含所述第i原始节的差异信息,所述第i原始节的差异信息包括所述第i原始节的操作序列和所述第一修正序列;所述第i原始节的操作序列包括所述原始安装包文件中所述第i原始节被替换的数据项,和/或,所述原始安装包文件中所述第i原始节增加的数据项;所述第i原始节的第一修正序列包括所述第i原始节在所述原始安装包文件和所述升级安装包文件中相同数据项的第一修正数据,所述数据项的第一修正数据限定了以下前一种或两种:所述数据项在所述原始安装包文件的索引号以及在所述升级安装包文件的索引号之间的对应关系,和,所述数据项在所述原始安装包文件的文件偏移以及在所述升级安装包文件的文件偏移之间的对应关系;
当所述第j数据项的索引号对应所述第i原始节的操作序列中的新增项时,将所述新增项的数据加入与所述第i升级节中;
当所述第j数据项的索引号对应所述操作序列中的替换项时,将所述替换项的数据加入与所述第i升级节中;
当所述第i原始节存在尚未处理的数据项时,则令i=i+1,重新执行读取所述原始安装包文件中所述第i原始节的所述第j数据项的步骤;
当所述第i原始节不存在尚未处理的数据项,且所述第i原始节的操作序列的数据项均被添加至所述第i升级节时,得到所述第i升级节;
将所述第i升级节添加至所述升级安装包文件中;
当i小于n时,则令i=i+1,重新执行根据所述第i原始节在所述原始安装包文件中的数据项、所述差异信息文件中所述第i原始节的差异信息,生成与所述第i原始节对应的第i升级节的步骤;
当i等于n时,得到所述升级安装包文件。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一修正数据修正所述第i升级节中加入的所述第j数据项的属性,包括:
当所述第i原始节中的数据项的属性不包括文件偏移时,根据所述第一修正数据修正所述第i升级节中加入的所述第j数据项的索引号属性;
当所述第i原始节中的数据项的属性包括文件偏移时,根据所述第一修正数据修正所述第i升级节中加入的所述第j数据项的索引号属性和文件偏移属性。
7.根据权利要求5所述的方法,其特征在于,所述记录第二修正数据,包括:
当所述第j数据项的属性不包括文件偏移时,记录所述第j数据项在所述第i原始节中的索引号与在所述第i升级节的索引号对应;
当所述第j数据项的属性包括文件偏移时,记录所述第j数据项在所述第i原始节中的索引号与在所述第i升级节的索引号对应,且记录第j数据项在所述第i原始节中的文件偏移与在所述第i升级节的文件偏移对应。
8.一种差异信息文件生成装置,其特征在于,所述装置包括:
获取模块,用于获取原始安装包文件和升级安装包文件,所述升级安装包文件是原始安装包文件升级后的安装包文件,所述原始安装包文件和所述升级安装包文件均包括n个节,每个节中包括至少一个数据项;每个数据项具备的属性包括索引号和文件偏移中的前一种或两种,所述文件偏移指示对应的数据项引用的其他节的数据项;
对比模块,用于对于所述原始安装包文件中的第i节,对比所述第i节在所述原始安装包文件中的数据项以及所述第i节在所述升级安装包文件中的数据项,得到所述第i节的差异信息,i的初始值为1;所述第i节的差异信息包括所述第i节的操作序列和所述第i节的修正序列;所述第i节的操作序列包括所述原始安装包文件中所述第i节被删除的数据项,和/或,所述升级安装包文件中所述第i节增加的数据项;所述第i节的修正序列包括所述第i节在所述原始安装包文件和所述升级安装包文件中相同数据项的修正数据;所述数据项的修正数据限定了以下前一种或两种:所述数据项在所述原始安装包文件的索引号以及在所述升级安装包文件的索引号之间的对应关系,和,所述数据项在所述原始安装包文件的文件偏移以及在所述升级安装包文件的文件偏移之间的对应关系;
添加模块,用于将所述对比模块对比得到的所述第i节的差异信息添加至差异信息文件中;
所述对比模块,还用于当i小于n时,则令i=i+1,重新执行对比所述第i节在所述原始安装包文件中的数据项以及所述第i节在所述升级安装包文件中的数据项的步骤;当i等于n时,得到所述差异信息文件;
其中,所述对比模块,包括:
第一添加单元,用于当所述第i节中的数据项的属性包括文件偏移时,利用所述第i节所引用的节的修正序列对所述第i节在所述原始安装包文件和所述升级安装包文件中的所有数据项进行修正,将所述原始安装包文件中修正后的数据项按照预定排序方式存入第一数组,将所述升级安装包文件中修正后的数据项按照所述预定排序方式存入第二数组;
第二添加单元,用于当所述第i节中的数据项的属性不包括文件偏移时,将所述原始安装包文件中的数据项按照所述预定排序方式存入所述第一数组,将所述升级安装包文件中的数据项按照所述预定排序方式存入所述第二数组;
对比单元,用于对比所述第一数组和所述第二数组,将所述第一数组中被删除的数据项以及所述第二数组中增加的数据项添加至所述第i节的操作序列中,将利用所述第一数组和所述第二数组中相同数据项生成的修正数据添加至所述第i节的修正序列中,将所述第i节的操作序列和所述第i节的修正序列作为所述第i节的差异信息,
其中,所述第i节的修正序列用于对引用所述第i节的其他节中的数据项进行修正;
所述对比单元,具体用于:
从所述第一数组中读取第j数据项,从所述第二数组中读取第k数据项,j和k的初始值均为1;
在所述第一数组中的第j数据项小于所述第二数组中的第k数据项时,将所述第j数据项作为删除项添加至所述操作序列,令j=j+1,重复执行所述从所述第一数组中读取第j数据项的步骤;
在所述第一数组中的第j数据项大于所述第二数组中的第k数据项时,将所述第k数据项作为新增项添加至所述操作序列,令k=k+1,重复执行从所述第二数组中读取第k数据项的步骤;
在所述第一数组中的第j数据项等于所述第二数组中的第k数据项时,根据所述第j数据项和所述第k数据项记录修正数据,将所述修正数据添加至所述第i节的修正序列中,令j=j+1、k=k+1,重复执行从所述第一数组中读取第j数据项,从所述第二数组中读取第k数据项的步骤;
当所述第一数组中的数据项全部被读取完时,将所述第二数组中剩余的数据项作为新增项添加至所述操作序列中;
当所述第二数组中的数据项全部被读取完时,将所述第一数组中剩余的数据项作为删除项添加至所述操作序列中。
9.根据权利要求8所述的装置,其特征在于,所述对比单元,还用于:
当所述第i节中的数据项的属性不包括文件偏移时,记录所述第j数据项的索引号与所述第k数据项的索引号对应;
当所述第i节中的数据项的属性包括文件偏移时,记录所述第j数据项的索引号与所述第k数据项的索引号对应,记录所述第j数据项的文件偏移与所述第k数据项的文件偏移对应。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
排序模块,用于按照所述预定排序方式对所述操作序列中的数据项进行排序;
替换模块,用于遍历所述排序模块排序后的所述操作序列,若相邻的两个数据项中在前数据项为删除项,在后数据项为新增项,且所述相邻的两个数据项的索引号相同时,从所述操作序列中删除所述相邻的两个数据项,在删除的位置插入数值与所述新增项相同的替换项。
11.根据权利要求8所述的装置,其特征在于,所述预定排序方式包括:
按照数据项递增的顺序排列各个数据项;
在数据项相同时,按照数据项的索引号递增的顺序排列各个数据项;
其中,对于数据项中的第一数据项和第二数据项,当所述第一数据项的索引号小于所述第二数据项的索引号,所述第一数据项小于或等于所述第二数据项。
12.一种差异信息文件应用装置,其特征在于,所述装置包括:
获取模块,用于获取原始安装包文件和差异信息文件,所述差异信息文件包含所述原始安装包文件和与所述原始安装包对应的升级安装包文件之间的差异信息,所述原始安装包文件包括n个节,每个节中包括至少一个数据项;每个数据项具备的属性包括索引号和文件偏移中的前一种或两种,所述文件偏移指示对应的数据项引用的其他节的数据项;
生成模块,用于对于所述原始安装包文件中的第i原始节,根据所述第i原始节在所述原始安装包文件中的数据项、所述差异信息文件中所述第i原始节的差异信息,生成与所述第i原始节对应的第i升级节,i的初始值为1;所述第i原始节的差异信息包括所述第i原始节的操作序列和第一修正序列;所述第i原始节的操作序列包括所述原始安装包文件中所述第i原始节被替换的数据项,和/或,所述原始安装包文件中所述第i原始节增加的数据项;所述第i原始节的第一修正序列包括所述第i原始节在所述原始安装包文件和所述升级安装包文件中相同数据项的第一修正数据,所述数据项的第一修正数据限定了以下前一种或两种:所述数据项在所述原始安装包文件的索引号以及在所述升级安装包文件的索引号之间的对应关系,和,所述数据项在所述原始安装包文件的文件偏移以及在所述升级安装包文件的文件偏移之间的对应关系;
添加模块,用于将所述生成模块得到的所述第i升级节添加至所述升级安装包文件中;
所述生成模块,还用于当i小于n时,则令i=i+1,重新执行根据所述第i原始节在所述原始安装包文件中的数据项、所述差异信息文件中所述第i原始节的差异信息,生成与所述第i原始节对应的第i升级节的步骤;当i等于n时,得到所述升级安装包文件;
其中,所述生成模块,包括:
读取单元,用于对于所述第i原始节中的第j数据项,读取所述原始安装包文件中所述第i原始节的所述第j数据项;
第一添加单元,用于当所述第j数据项的索引号对应所述第一修正序列中的第一修正数据时,将所述第j数据项的数据加入所述第i升级节,根据所述第一修正数据修正所述第i升级节中加入的所述第j数据项的属性,记录第二修正数据,将所述第二修正数据添加至第二修正序列中,所述第二修正序列用于对引用所述第i原始节的其他原始节中的数据项进行修正,j的初始值为1;
第二添加单元,用于当所述第j数据项的索引号对应所述操作序列中的新增项时,将所述新增项的数据加入与所述第i升级节中;
第三添加单元,用于当所述第j数据项的索引号对应所述操作序列中的替换项时,将所述替换项的数据加入与所述第i升级节中;
所述读取单元,还用于当所述第i原始节存在尚未处理的数据项时,则令i=i+1,重新执行读取所述原始安装包文件中所述第i原始节的所述第j数据项的步骤;当所述第i原始节不存在尚未处理的数据项,且所述第i原始节的操作序列的数据项均被添加至所述第i升级节时,得到所述第i升级节;
生成单元,用于在得到所述原始安装包文件中所有原始节的升级节时,根据所有升级节生成与所述原始安装包文件对应的升级安装包文件。
13.根据权利要求12所述的装置,其特征在于,所述第一添加单元,还用于:
当所述第i原始节中的数据项的属性不包括文件偏移时,根据所述第一修正数据修正所述第i升级节中加入的所述第j数据项的索引号属性;
当所述第i原始节中的数据项的属性包括文件偏移时,根据所述第一修正数据修正所述第i升级节中加入的所述第j数据项的索引号属性和文件偏移属性。
14.根据权利要求12所述的装置,其特征在于,所述第一添加单元,还用于:
当所述第j数据项的属性不包括文件偏移时,记录所述第j数据项在所述第i原始节中的索引号与在所述第i升级节的索引号对应;
当所述第j数据项的属性包括文件偏移时,记录所述第j数据项在所述第i原始节中的索引号与在所述第i升级节的索引号对应,且记录第j数据项在所述第i原始节中的文件偏移与在所述第i升级节的文件偏移对应。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有一个或者多个程序,所述一个或者多个程序由处理器执行,以实现如权利要求1至4任一所述的差异信息文件生成方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有一个或者多个程序,所述一个或者多个程序由处理器执行,以实现如权利要求5至7任一所述的差异信息文件应用方法。
CN201610816016.9A 2016-09-09 2016-09-09 差异信息文件生成及应用方法、装置 Active CN106484771B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610816016.9A CN106484771B (zh) 2016-09-09 2016-09-09 差异信息文件生成及应用方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610816016.9A CN106484771B (zh) 2016-09-09 2016-09-09 差异信息文件生成及应用方法、装置

Publications (2)

Publication Number Publication Date
CN106484771A CN106484771A (zh) 2017-03-08
CN106484771B true CN106484771B (zh) 2018-09-04

Family

ID=58273665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610816016.9A Active CN106484771B (zh) 2016-09-09 2016-09-09 差异信息文件生成及应用方法、装置

Country Status (1)

Country Link
CN (1) CN106484771B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108399071B (zh) * 2018-01-19 2021-07-20 五八有限公司 应用程序安装包大小的处理方法、装置、设备和存储介质
CN111090982A (zh) * 2018-10-24 2020-05-01 迈普通信技术股份有限公司 文本比较方法、装置、电子设备及计算机可读存储介质
CN111124475B (zh) * 2018-10-31 2023-12-08 伊姆西Ip控股有限责任公司 存储管理的方法、电子设备和计算机可读存储介质
CN112433750A (zh) * 2020-12-17 2021-03-02 潍柴动力股份有限公司 车载终端应用程序升级方法、装置、设备、介质及产品
CN112988193B (zh) * 2021-03-26 2023-04-07 深圳壹账通创配科技有限公司 代码更新识别方法、装置、计算机设备及可读存储介质

Also Published As

Publication number Publication date
CN106484771A (zh) 2017-03-08

Similar Documents

Publication Publication Date Title
CN106484771B (zh) 差异信息文件生成及应用方法、装置
CN105404585B (zh) 获取代码覆盖率的方法及装置
CN103279288B (zh) 数据传输方法、装置和终端设备
CN108305296A (zh) 图像描述生成方法、模型训练方法、设备和存储介质
CN108874866A (zh) 数据导入管理方法、装置、移动终端和存储介质
CN104794396B (zh) 跨站式脚本漏洞检测方法及装置
CN106502906B (zh) 一种测试应用程序的方法和装置
CN107943683B (zh) 一种测试脚本生成方法、装置、电子设备及存储介质
CN103472756A (zh) 一种实现人工智能的方法、服务器和设备
CN103634294A (zh) 信息验证方法和装置
CN107958365B (zh) 物料信息变更方法、装置、存储介质及电子设备
CN108228230A (zh) Ufs固件的升级方法、终端及计算机可读存储介质
CN107329781A (zh) 软件热修复方法、终端、系统及计算机可读存储介质
CN106708734A (zh) 软件异常检测方法及装置
CN103631580B (zh) 一种生成主题图标的方法和装置
CN108073495A (zh) 应用程序崩溃原因的定位方法及装置
CN105022616A (zh) 一种生成网页页面的方法及装置
CN104298686B (zh) 修改服务器配置文件的方法和装置
CN104063409A (zh) 一种数据库的字段增加方法和系统
CN110058850A (zh) 一种应用的开发方法、装置以及存储介质
CN106203228A (zh) 二维码信息传输方法、装置以及设备
CN110210605A (zh) 硬件算子匹配方法及相关产品
CN110378107A (zh) 一种安装包检测的方法及相关装置
CN107908407A (zh) 编译方法、装置及终端设备
CN107219951A (zh) 触控屏控制方法、装置、存储介质及终端设备

Legal Events

Date Code Title Description
C06 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