应用的更新包生成方法、装置和应用的更新方法、装置技术领域
本发明涉及计算机技术领域,具体涉及应用的更新包生成方法、装置和应用的更
新方法、装置。
背景技术
随着用户需求的变化,以及对漏洞的修复,应用程序的版本是在不断更新的。下面
示出了现有技术中一种常见的更新包制作方法:制作新版本的完整安装包APK,在应用更新
时,直接安装该APK,替换该安卓设备上安装的原APK。这种方式的缺点是更新包是完整的
APK,数据量较大,因而在获取更新包时的数据传输量较大,并且执行更新操作时消耗的资
源也较大。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上
述问题的应用的更新包生成方法、装置和应用的更新方法、装置。
依据本发明的一个方面,提供了一种应用的更新包生成方法,包括:
获取待更新应用的第一版本的完整安装包APK和第二版本的完整APK;所述第一版
本是所述第二版本的高版本;
将所述第一版本的完整APK中的所有文件与所述第二版本的完整APK中的所有文
件进行对比,得到至少一个目标文件;所述目标文件的类型包括如下中的至少一种:替换类
型,新增类型,删除类型;
根据各目标文件的类型,执行与该类型对应的更新包制作操作,得到更新包。
可选地,所述将所述第一版本的完整APK中的所有文件与所述第二版本的完整APK
中的所有文件进行对比,得到至少一个目标文件包括:
将所述第一版本的完整APK与所述第二版本的完整APK中的所有文件名相同的文
件进行对比;
如果存在不一致的文件,则将所述第一版本和所述第二版本中的相应文件均记为
替换类型的目标文件。
可选地,将所述第一版本的完整APK与所述第二版本的完整APK中的所有文件名相
同的文件进行对比包括:
对所述第一版本的完整APK与所述第二版本的完整APK中的所有文件名相同的文
件,分别获取各文件的crc属性值;
将所述第一版本的完整APK与所述第二版本的完整APK中的所有文件名相同的文
件的crc属性值进行对比。
可选地,所述将所述第一版本的完整APK中的所有文件与所述第二版本的完整APK
中的所有文件进行对比,得到至少一个目标文件包括:
若一个文件存在于第一版本的完整APK中,且该文件不存在于第二版本的完整APK
中,则将该文件记为新增类型的目标文件。
可选地,所述将所述第一版本的完整APK中的所有文件与所述第二版本的完整APK
中的所有文件进行对比,得到至少一个目标文件包括:
若一个文件存在于第二版本的完整APK中,且该文件不存在于第一版本的完整APK
中,则将该文件记为删除类型的目标文件。
可选地,所述根据待执行更新操作的文件的类型,执行与该类型对应的更新包制
作操作包括:
对替换类型的目标文件,将所有目标文件分别从各自的APK中解压出来,计算文件
名相同的目标文件间的差异,将计算结果加入更新包,以使所述更新包在安装时,根据所述
计算结果对第二版本的APK中相应的目标文件进行替换;
对新增类型的目标文件,将第一版本的APK中的目标文件加入更新包,并在更新包
中标记对该文件执行添加操作,以使所述更新包在安装时,将相应的目标文件添加到第二
版本的APK中;
对删除类型的目标文件,在更新包中标记对该文件执行删除操作,以使所述更新
包在安装时,将相应的目标文件从第二版本的APK中删除。
可选地,所述计算文件名相同的目标文件间的差异包括:
使用bsdiff算法计算文件名相同的目标文件间的差异。
可选地,该方法还包括:
将得到的更新包、第一版本的版本信息及第二版本的版本信息对应保存。
依据本发明的另一方面,提供了一种应用的更新方法,包括:
获取待更新应用的更新包;
对所述更新包进行解析,确定至少一个目标文件和与目标文件的类型对应的更新
操作;所述目标文件的类型包括如下中的至少一种:替换类型,新增类型,删除类型;
对待更新应用的当前版本的完整安装包APK执行与目标文件的类型对应的更新操
作,得到待更新版本的完整APK;
安装所述待更新版本的完整APK。
可选地,所述对待更新应用的当前版本的完整安装包APK执行与目标文件的类型
对应的更新操作,得到待更新版本的完整APK包括:
当所述目标文件为替换类型时,从所述更新包中提取根据待更新版本和当前版本
中目标文件差异计算得到的计算结果,对当前版本的APK中相应的目标文件进行替换;
当所述目标文件为新增类型时,从所述更新包中提取所述目标文件,将其添加到
当前版本的APK中;
当所述目标文件为删除类型时,从当前版本的APK中删除所述目标文件。
可选地,所述计算结果是使用bsdiff算法对待更新版本和当前版本中文件名相同
的目标文件间的差异进行计算得到的。
可选地,所述获取待更新应用的更新包包括:
获取与待更新应用当前版本的版本信息和待更新版本的版本信息相对应的更新
包。
依据本发明的又一方面,提供了一种应用的更新包生成装置,包括:
APK获取单元,适于获取待更新应用的第一版本的完整安装包APK和第二版本的完
整APK;所述第一版本是所述第二版本的高版本;
对比单元,适于将所述第一版本的完整APK中的所有文件与所述第二版本的完整
APK中的所有文件进行对比,得到至少一个目标文件;所述目标文件的类型包括如下中的至
少一种:替换类型,新增类型,删除类型;
制作单元,适于根据各目标文件的类型,执行与该类型对应的更新包制作操作,得
到更新包。
可选地,所述对比单元,适于将所述第一版本的完整APK与所述第二版本的完整
APK中的所有文件名相同的文件进行对比;如果存在不一致的文件,则将所述第一版本和所
述第二版本中的相应文件均记为替换类型的目标文件。
可选地,所述对比单元,适于对所述第一版本的完整APK与所述第二版本的完整
APK中的所有文件名相同的文件,分别获取各文件的crc属性值;将所述第一版本的完整APK
与所述第二版本的完整APK中的所有文件名相同的文件的crc属性值进行对比。
可选地,所述对比单元,适于在一个文件存在于第一版本的完整APK中,且该文件
不存在于第二版本的完整APK中时,将该文件记为新增类型的目标文件。
可选地,所述对比单元,适于在一个文件存在于第二版本的完整APK中,且该文件
不存在于第一版本的完整APK中时,将该文件记为删除类型的目标文件。
可选地,所述制作单元,适于对替换类型的目标文件,将所有目标文件分别从各自
的APK中解压出来,计算文件名相同的目标文件间的差异,将计算结果加入更新包,以使所
述更新包在安装时,根据所述计算结果对第二版本的APK中相应的目标文件进行替换;以及
适于对新增类型的目标文件,将第一版本的APK中的目标文件加入更新包,并在更新包中标
记对该文件执行添加操作,以使所述更新包在安装时,将相应的目标文件添加到第二版本
的APK中;以及适于对删除类型的目标文件,在更新包中标记对该文件执行删除操作,以使
所述更新包在安装时,将相应的目标文件从第二版本的APK中删除。
可选地,所述制作单元,适于使用bsdiff算法计算文件名相同的目标文件间的差
异。
可选地,该装置还包括:存储单元,适于将得到的更新包、第一版本的版本信息及
第二版本的版本信息对应保存。
依据本发明的再一方面,提供了一种应用的更新装置,包括:
更新包获取单元,适于获取待更新应用的更新包;
更新包解析单元,适于对所述更新包进行解析,确定至少一个目标文件和与目标
文件的类型对应的更新操作;所述目标文件的类型包括如下中的至少一种:替换类型,新增
类型,删除类型;
安装包修改单元,适于对待更新应用的当前版本的完整安装包APK执行与目标文
件的类型对应的更新操作,得到待更新版本的完整APK;
安装单元,适于安装所述待更新版本的完整APK。
可选地,所述安装包修改单元,适于在所述目标文件为替换类型时,从所述更新包
中提取根据待更新版本和当前版本中目标文件差异计算得到的计算结果,对当前版本的
APK中相应的目标文件进行替换;以及适于在所述目标文件为新增类型时,从所述更新包中
提取所述目标文件,将其添加到当前版本的APK中;以及适于在所述目标文件为删除类型
时,从当前版本的APK中删除所述目标文件。
可选地,所述计算结果是使用bsdiff算法对待更新版本和当前版本中文件名相同
的目标文件间的差异进行计算得到的。
可选地,所述更新包获取单元,适于获取与待更新应用当前版本的版本信息和待
更新版本的版本信息相对应的更新包。
由上述可知,本发明的技术方案,通过对比第一版本的完整安装包APK与第二版本
的完整APK中的所有文件,将其中的差异文件作为目标文件,再进一步根据各目标文件的类
型,执行与该类型对应的更新包制作操作,得到更新包。该技术方案通过文件比对的方式,
大大减小了更新包的数据量,使得用户在对应用进行更新时,消耗的数据流量更小,在更新
时消耗的系统资源也较少。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,
而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够
更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通
技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明
的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种应用的更新包生成方法的流程示意图;
图2示出了根据本发明一个实施例的一种应用的更新方法的流程示意图;
图3示出了根据本发明一个实施例的一种应用的更新包生成装置的结构示意图;
图4示出了根据本发明一个实施例的一种应用的更新装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开
的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例
所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围
完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种应用的更新包生成方法的流程示意图,
如图1所示,该方法包括:
步骤S110,获取待更新应用的第一版本的完整APK和第二版本的完整APK,第一版
本是第二版本的高版本。例如,第一版本为1.1版本,第二版本为1.0版本。
步骤S120,将第一版本的完整APK中的所有文件与第二版本的完整APK中的所有文
件进行对比,得到至少一个目标文件;目标文件的类型包括如下中的至少一种:替换类型,
新增类型,删除类型。例如,将存在差异的文件作为目标文件。
步骤S130,根据各目标文件的类型,执行与该类型对应的更新包制作操作,得到更
新包。
可见,图1所示的方法,通过对比第一版本的完整安装包APK与第二版本的完整APK
中的所有文件,将其中的差异文件作为目标文件,再进一步根据各目标文件的类型,执行与
该类型对应的更新包制作操作,得到更新包。该技术方案通过文件比对的方式,大大减小了
更新包的数据量,使得用户在对应用进行更新时,消耗的数据流量更小,在更新时消耗的系
统资源也较少。
在本发明的一个实施例中,图1所示的方法中,将第一版本的完整APK中的所有文
件与第二版本的完整APK中的所有文件进行对比,得到至少一个目标文件包括:将第一版本
的完整APK与第二版本的完整APK中的所有文件名相同的文件进行对比;如果存在不一致的
文件,则将第一版本和第二版本中的相应文件均记为替换类型的目标文件。
例如在1.0版本的APK中存在文件icon.GIF,在1.1版本中对该文件进行了替换,但
仍将其命名为icon.GIF。这两个文件的文件名虽然相同,但实际上是不同的,因此在将APK
由1.0版本更新至1.1版本时,需要对1.0版本的APK文件中的icon.GIF进行替换。因此在本
实施例中,将新旧两个版本中所有文件名相同的文件一一对应地进行对比,如果一致,那么
不进行任何处理;如果不一致,那么就将两个文件都记为替换类型的目标文件。
在如何判断两个文件是否一致的问题上,本发明给出了一种准确而便捷的判断方
法:在本发明的一个实施例中,上述方法中,将第一版本的完整APK与第二版本的完整APK中
的所有文件名相同的文件进行对比包括:对第一版本的完整APK与第二版本的完整APK中的
所有文件名相同的文件,分别获取各文件的crc属性值;将第一版本的完整APK与第二版本
的完整APK中的所有文件名相同的文件的crc属性值进行对比。
APK是一种特殊zip格式的压缩包,在APK中,每个文件都存在一个独一无二的crc
属性值。crc属性值是根据CRC(Cyclic Redundancy Code,循环冗余校验)算法生成的,一般
而言,crc属性值可以用作APK的完整性校验,即判断APK是否被修改过。在本实施例中利用
了文件修改后crc属性值发生改变的特点,对新旧版本中文件名相同的文件,首先从各自的
APK中读取文件的crc属性值,之后对比crc属性值是否相同,就可以快速准确地判断新旧版
本中的同名文件是否为相同的文件。
在本发明的一个实施例中,上述方法中,将第一版本的完整APK中的所有文件与第
二版本的完整APK中的所有文件进行对比,得到至少一个目标文件包括:若一个文件存在于
第一版本的完整APK中,且该文件不存在于第二版本的完整APK中,则将该文件记为新增类
型的目标文件。
在本发明的一个实施例中,上述方法中,将第一版本的完整APK中的所有文件与第
二版本的完整APK中的所有文件进行对比,得到至少一个目标文件包括:若一个文件存在于
第二版本的完整APK中,且该文件不存在于第一版本的完整APK中,则将该文件记为删除类
型的目标文件。
上面两个实施例示出了更新包制作过程中可能出现的两种情况:新版本中新增了
文件,或删除了原本存在于旧版本中的文件。在上面的实施例中分别将其标记为新增类型
和删除类型的目标文件。
如前文所述,本发明的实施例中可能存在替换、新增和删除类型的目标文件。而每
种类型的文件都有与其对应的更新包制作操作,下面给出了一些示例:
在本发明的一个实施例中,上述方法中,根据待执行更新操作的文件的类型,执行
与该类型对应的更新包制作操作包括:对替换类型的目标文件,将所有目标文件分别从各
自的APK中解压出来,计算文件名相同的目标文件间的差异,将计算结果加入更新包,以使
更新包在安装时,根据计算结果对第二版本的APK中相应的目标文件进行替换;对新增类型
的目标文件,将第一版本的APK中的目标文件加入更新包,并在更新包中标记对该文件执行
添加操作,以使更新包在安装时,将相应的目标文件添加到第二版本的APK中;对删除类型
的目标文件,在更新包中标记对该文件执行删除操作,以使更新包在安装时,将相应的目标
文件从第二版本的APK中删除。
对于替换类型的文件,为了减少更新包的数据量,并不是将新版本中的目标文件
直接加入到更新包中,而是计算其与旧版本中相应目标文件的差异,这个计算结果的大小
通常是小于新版本中目标文件的大小的。为了执行计算,需要先将目标文件进行解压。在本
发明的一个实施例中,计算文件名相同的目标文件间的差异包括:使用bsdiff算法计算文
件名相同的目标文件间的差异。bsdiff算法是一种二级制差分算法,可以计算出两个目标
文件间的差异。
对于删除类型的目标文件,在更新包中标记对该文件执行删除操作,例如仅标记
对a、b、c三个文件执行删除操作,而不需要将这三个文件放入更新包。对于新增类型的目标
文件,则是将第一版本的APK中的目标文件加入更新包,这样直接将压缩内容加入到更新包
中,也减小了更新包的数据量。
由于可能执行的操作类型有三种,可以分别将其标记为操作0、1、2,这样在更新包
中声明为哪个文件执行哪种操作也更为简单,当然,也需要在更新包中写入调用相应操作
的具体代码。
在本发明的一个实施例中,上述方法还包括:将得到的更新包、第一版本的版本信
息及第二版本的版本信息对应保存。
对于一个应用而言,其版本的数量可能是较多的,并且无法控制每个安卓终端上
安装的应用都是次新的版本。例如,最新的版本是1.3,但是需要更新的版本是1.0,1.1,
1.2。因此根据上述实施例,需要分别制作将1.0版本更新到1.3版本的更新包、将1.1版本更
新到1.3版本的更新包和将1.2版本更新到1.3版本的更新包。在更新时,需要先获取当前安
卓设备上安装的版本(例如1.0),然后选择相应的更新包(将1.0版本更新到1.3版本的更新
包)。这样就需要在更新包的保存时,将得到的更新包、第一版本的版本信息及第二版本的
版本信息对应保存,还可以对新旧版本的版本信息进行序列化的处理。
图2示出了根据本发明一个实施例的一种应用的更新方法的流程示意图,如图2所
示,该方法包括:
步骤S210,获取待更新应用的更新包;
步骤S220,对更新包进行解析,确定至少一个目标文件和与目标文件的类型对应
的更新操作;目标文件的类型包括如下中的至少一种:替换类型,新增类型,删除类型。
步骤S230,对待更新应用的当前版本的完整安装包APK执行与目标文件的类型对
应的更新操作,得到待更新版本的完整APK。
步骤S240,安装待更新版本的完整APK。
可见,图2所示的方法中的更新包可以是通过前述实施例中应用更新包的生成方
法生成的,因而在安装更新包时,还需要获取到安装了当前待更新的应用的智能终端中,待
更新应用的当前版本的完整APK。这些APK通常保存在系统目录下,需要一定的权限进行获
取。之后可以根据对更新包的解析,待更新应用的当前版本的完整APK执行更新操作,也就
是对该APK进行修改,得到待更新版本的完整APK。例如,待更新应用的当前版本为1.0,待更
新版本为1.1,那么获取到1.0-1.1版本的更新包,就可以实现图2所示的方法了。因此在本
发明的一个实施例中,获取待更新应用的更新包包括:获取与待更新应用当前版本的版本
信息和待更新版本的版本信息相对应的更新包。具体地,可以在更新时,获取待更新应用当
前版本的版本信息,发送至更新服务器,由服务器根据待更新应用当前版本的版本信息和
待更新版本的版本信息(通常为最新版本的版本信息),下发相应的更新包。
在本发明的一个实施例中,上述方法中,对待更新应用的当前版本的完整安装包
APK执行与目标文件的类型对应的更新操作,得到待更新版本的完整APK包括:当目标文件
为替换类型时,从更新包中提取根据待更新版本和当前版本中目标文件差异计算得到的计
算结果,对当前版本的APK中相应的目标文件进行替换;当目标文件为新增类型时,从更新
包中提取目标文件,将其添加到当前版本的APK中;当目标文件为删除类型时,从当前版本
的APK中删除目标文件。具体地,计算结果是使用bsdiff算法对待更新版本和当前版本中文
件名相同的目标文件间的差异进行计算得到的。
如果利用bsdiff对两个不同版本的APK进行计算,也可以得到两个版本的差异并
据此制作更新包,但其在安装时所消耗的资源是大于本实施例中所采取的方法的。
图3示出了根据本发明一个实施例的一种安卓应用的更新包制作装置的结构示意
图,如图3所示,安卓应用的更新包制作装置300包括:
APK获取单元310,适于获取待更新应用的第一版本的完整安装包APK和第二版本
的完整APK。
对比单元320,适于将第一版本的完整APK中的所有文件与第二版本的完整APK中
的所有文件进行对比,得到至少一个目标文件。
制作单元330,适于根据各目标文件的类型,执行与该类型对应的更新包制作操
作,得到更新包。
可见,图3所示的装置,通过各单元的相互配合,对比第一版本的完整安装包APK与
第二版本的完整APK中的所有文件,将其中的差异文件作为目标文件,再进一步根据各目标
文件的类型,执行与该类型对应的更新包制作操作,得到更新包。该技术方案通过文件比对
的方式,大大减小了更新包的数据量,使得用户在对应用进行更新时,消耗的数据流量更
小,在更新时消耗的系统资源也较少。
在本发明的一个实施例中,图3所示的装置中,对比单元320,适于将第一版本的完
整APK与第二版本的完整APK中的所有文件名相同的文件进行对比;如果存在不一致的文
件,则将第一版本和第二版本中的相应文件均记为替换类型的目标文件。
例如在1.0版本的APK中存在文件icon.GIF,在1.1版本中对该文件进行了替换,但
仍将其命名为icon.GIF。这两个文件的文件名虽然相同,但实际上是不同的,因此在将APK
由1.0版本更新至1.1版本时,需要对1.0版本的APK文件中的icon.GIF进行替换。因此在本
实施例中,将新旧两个版本中所有文件名相同的文件一一对应地进行对比,如果一致,那么
不进行任何处理;如果不一致,那么就将两个文件都记为替换类型的目标文件。
在如何判断两个文件是否一致的问题上,本发明给出了一种准确而便捷的判断方
法:在本发明的一个实施例中,上述装置中,对比单元320,适于对第一版本的完整APK与第
二版本的完整APK中的所有文件名相同的文件,分别获取各文件的crc属性值;将第一版本
的完整APK与第二版本的完整APK中的所有文件名相同的文件的crc属性值进行对比。
APK是一种特殊zip格式的压缩包,在APK中,每个文件都存在一个独一无二的crc
属性值。crc属性值是根据CRC(Cyclic Redundancy Code,循环冗余校验)算法生成的,一般
而言,crc属性值可以用作APK的完整性校验,即判断APK是否被修改过。在本实施例中利用
了文件修改后crc属性值发生改变的特点,对新旧版本中文件名相同的文件,首先从各自的
APK中读取文件的crc属性值,之后对比crc属性值是否相同,就可以快速准确地判断新旧版
本中的同名文件是否为相同的文件。
在本发明的一个实施例中,图3所示的装置中,对比单元320,适于在一个文件存在
于第一版本的完整APK中,且该文件不存在于第二版本的完整APK中时,将该文件记为新增
类型的目标文件。
在本发明的一个实施例中,图3所示的装置中,对比单元320,适于在一个文件存在
于第二版本的完整APK中,且该文件不存在于第一版本的完整APK中时,将该文件记为删除
类型的目标文件。
上面两个实施例示出了更新包制作过程中可能出现的两种情况:新版本中新增了
文件,或删除了原本存在于旧版本中的文件。在上面的实施例中分别将其标记为新增类型
和删除类型的目标文件。
如前文所述,本发明的实施例中可能存在替换、新增和删除类型的目标文件。而每
种类型的文件都有与其对应的更新包制作操作,下面给出了一些示例:
在本发明的一个实施例中,上述装置中,制作单元330,适于对替换类型的目标文
件,将所有目标文件分别从各自的APK中解压出来,计算文件名相同的目标文件间的差异,
将计算结果加入更新包,以使更新包在安装时,根据计算结果对第二版本的APK中相应的目
标文件进行替换;以及适于对新增类型的目标文件,将第一版本的APK中的目标文件加入更
新包,并在更新包中标记对该文件执行添加操作,以使更新包在安装时,将相应的目标文件
添加到第二版本的APK中;以及适于对删除类型的目标文件,在更新包中标记对该文件执行
删除操作,以使更新包在安装时,将相应的目标文件从第二版本的APK中删除。
对于替换类型的文件,为了减少更新包的数据量,并不是将新版本中的目标文件
直接加入到更新包中,而是计算其与旧版本中相应目标文件的差异,这个计算结果的大小
通常是小于新版本中目标文件的大小的。为了执行计算,需要先将目标文件进行解压。在本
发明的一个实施例中,上述装置中,制作单元330,适于使用bsdiff算法计算文件名相同的
目标文件间的差异。使用bsdiff算法计算文件名相同的目标文件间的差异。bsdiff算法是
一种二级制差分算法,可以计算出两个目标文件间的差异。
对于删除类型的目标文件,在更新包中标记对该文件执行删除操作,例如仅标记
对a、b、c三个文件执行删除操作,而不需要将这三个文件放入更新包。对于新增类型的目标
文件,则是将第一版本的APK中的目标文件加入更新包,这样直接将压缩内容加入到更新包
中,也减小了更新包的数据量。
由于可能执行的操作类型有三种,可以分别将其标记为操作0、1、2,这样在更新包
中声明为哪个文件执行哪种操作也更为简单,当然,也需要在更新包中写入调用相应操作
的具体代码。
在本发明的一个实施例中,图3所示的装置还包括:存储单元340,适于将得到的更
新包、第一版本的版本信息及第二版本的版本信息对应保存。
图4示出了根据本发明一个实施例的一种应用的更新装置的结构示意图,如图4所
示,应用的更新装置400包括:
更新包获取单元410,适于获取待更新应用的更新包。
更新包解析单元420,适于对更新包进行解析,确定至少一个目标文件和与目标文
件的类型对应的更新操作;目标文件的类型包括如下中的至少一种:替换类型,新增类型,
删除类型;
安装包修改单元430,适于对待更新应用的当前版本的完整安装包APK执行与目标
文件的类型对应的更新操作,得到待更新版本的完整APK;
安装单元440,适于安装待更新版本的完整APK。
可见,图4所示的装置中的更新包可以是通过前述实施例中应用更新包的生成装
置生成的,因而在安装更新包时,还需要获取到安装了当前待更新的应用的智能终端中,待
更新应用的当前版本的完整APK。这些APK通常保存在系统目录下,需要一定的权限进行获
取。之后可以根据对更新包的解析,待更新应用的当前版本的完整APK执行更新操作,也就
是对该APK进行修改,得到待更新版本的完整APK。例如,待更新应用的当前版本为1.0,待更
新版本为1.1,那么需要获取到1.0-1.1版本的更新包。因此在本发明的一个实施例中,更新
包获取单元,适于获取与待更新应用当前版本的版本信息和待更新版本的版本信息相对应
的更新包。具体地,可以在更新时,获取待更新应用当前版本的版本信息,发送至更新服务
器,由服务器根据待更新应用当前版本的版本信息和待更新版本的版本信息(通常为最新
版本的版本信息),下发相应的更新包。
在本发明的一个实施例中,上述装置中,安装包修改单元430,适于在目标文件为
替换类型时,从更新包中提取根据待更新版本和当前版本中目标文件差异计算得到的计算
结果,对当前版本的APK中相应的目标文件进行替换;以及适于在目标文件为新增类型时,
从更新包中提取目标文件,将其添加到当前版本的APK中;以及适于在目标文件为删除类型
时,从当前版本的APK中删除目标文件。具体地,计算结果是使用bsdiff算法对待更新版本
和当前版本中文件名相同的目标文件间的差异进行计算得到的。
如果利用bsdiff对两个不同版本的APK进行计算,也可以得到两个版本的差异并
据此制作更新包,但其在安装时所消耗的资源是大于本实施例中所采取的方法的。
综上所述,本发明的技术方案,通过对比第一版本的完整安装包APK与第二版本的
完整APK中的所有文件,将其中的差异文件作为目标文件,再进一步根据各目标文件的类
型,执行与该类型对应的更新包制作操作,得到更新包。该技术方案通过文件比对的方式,
大大减小了更新包的数据量,使得用户在对应用进行更新时,消耗的数据流量更小,在更新
时消耗的系统资源也较少。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。
各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求
的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种
编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发
明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施
例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构
和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在
上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施
例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保
护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面
的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,
遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身
都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地
改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单
元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或
子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何
组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任
何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权
利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代
替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例
中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的
范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任
意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行
的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用
微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的安卓应用的更新包制作装
置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述
的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这
样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的
形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他
形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领
域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,
不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未
列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的
元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实
现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项
来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名
称。
本发明的实施例公开了A1、一种应用的更新包生成方法,其中,该方法包括:
获取待更新应用的第一版本的完整安装包APK和第二版本的完整APK;所述第一版
本是所述第二版本的高版本;
将所述第一版本的完整APK中的所有文件与所述第二版本的完整APK中的所有文
件进行对比,得到至少一个目标文件;所述目标文件的类型包括如下中的至少一种:替换类
型,新增类型,删除类型;
根据各目标文件的类型,执行与该类型对应的更新包制作操作,得到更新包。
A2、如A1所述的方法,其中,所述将所述第一版本的完整APK中的所有文件与所述
第二版本的完整APK中的所有文件进行对比,得到至少一个目标文件包括:
将所述第一版本的完整APK与所述第二版本的完整APK中的所有文件名相同的文
件进行对比;
如果存在不一致的文件,则将所述第一版本和所述第二版本中的相应文件均记为
替换类型的目标文件。
A3、如A2所述的方法,其中,将所述第一版本的完整APK与所述第二版本的完整APK
中的所有文件名相同的文件进行对比包括:
对所述第一版本的完整APK与所述第二版本的完整APK中的所有文件名相同的文
件,分别获取各文件的crc属性值;
将所述第一版本的完整APK与所述第二版本的完整APK中的所有文件名相同的文
件的crc属性值进行对比。
A4、如A1所述的方法,其中,所述将所述第一版本的完整APK中的所有文件与所述
第二版本的完整APK中的所有文件进行对比,得到至少一个目标文件包括:
若一个文件存在于第一版本的完整APK中,且该文件不存在于第二版本的完整APK
中,则将该文件记为新增类型的目标文件。
A5、如A1所述的方法,其中,所述将所述第一版本的完整APK中的所有文件与所述
第二版本的完整APK中的所有文件进行对比,得到至少一个目标文件包括:
若一个文件存在于第二版本的完整APK中,且该文件不存在于第一版本的完整APK
中,则将该文件记为删除类型的目标文件。
A6、如A2-A5中任一项所述的方法,其中,所述根据待执行更新操作的文件的类型,
执行与该类型对应的更新包制作操作包括:
对替换类型的目标文件,将所有目标文件分别从各自的APK中解压出来,计算文件
名相同的目标文件间的差异,将计算结果加入更新包,以使所述更新包在安装时,根据所述
计算结果对第二版本的APK中相应的目标文件进行替换;
对新增类型的目标文件,将第一版本的APK中的目标文件加入更新包,并在更新包
中标记对该文件执行添加操作,以使所述更新包在安装时,将相应的目标文件添加到第二
版本的APK中;
对删除类型的目标文件,在更新包中标记对该文件执行删除操作,以使所述更新
包在安装时,将相应的目标文件从第二版本的APK中删除。
A7、如A6所述的方法,其中,所述计算文件名相同的目标文件间的差异包括:
使用bsdiff算法计算文件名相同的目标文件间的差异。
A8、如A1所述的方法,其中,该方法还包括:
将得到的更新包、第一版本的版本信息及第二版本的版本信息对应保存。
本发明的实施例还公开了B9、一种应用的更新方法,其中,该方法包括:
获取待更新应用的更新包;
对所述更新包进行解析,确定至少一个目标文件和与目标文件的类型对应的更新
操作;所述目标文件的类型包括如下中的至少一种:替换类型,新增类型,删除类型;
对待更新应用的当前版本的完整安装包APK执行与目标文件的类型对应的更新操
作,得到待更新版本的完整APK;
安装所述待更新版本的完整APK。
B10、如B9所述的方法,其中,所述对待更新应用的当前版本的完整安装包APK执行
与目标文件的类型对应的更新操作,得到待更新版本的完整APK包括:
当所述目标文件为替换类型时,从所述更新包中提取根据待更新版本和当前版本
中目标文件差异计算得到的计算结果,对当前版本的APK中相应的目标文件进行替换;
当所述目标文件为新增类型时,从所述更新包中提取所述目标文件,将其添加到
当前版本的APK中;
当所述目标文件为删除类型时,从当前版本的APK中删除所述目标文件。
B11、如B10所述的方法,其中,所述计算结果是使用bsdiff算法对待更新版本和当
前版本中文件名相同的目标文件间的差异进行计算得到的。
B12、如B9所述的方法,其中,所述获取待更新应用的更新包包括:
获取与待更新应用当前版本的版本信息和待更新版本的版本信息相对应的更新
包。
本发明的实施例还公开了C13、一种应用的更新包生成装置,其中,该装置包括:
APK获取单元,适于获取待更新应用的第一版本的完整安装包APK和第二版本的完
整APK;所述第一版本是所述第二版本的高版本;
对比单元,适于将所述第一版本的完整APK中的所有文件与所述第二版本的完整
APK中的所有文件进行对比,得到至少一个目标文件;所述目标文件的类型包括如下中的至
少一种:替换类型,新增类型,删除类型;
制作单元,适于根据各目标文件的类型,执行与该类型对应的更新包制作操作,得
到更新包。
C14、如C13所述的装置,其中,
所述对比单元,适于将所述第一版本的完整APK与所述第二版本的完整APK中的所
有文件名相同的文件进行对比;如果存在不一致的文件,则将所述第一版本和所述第二版
本中的相应文件均记为替换类型的目标文件。
C15、如C14所述的装置,其中,
所述对比单元,适于对所述第一版本的完整APK与所述第二版本的完整APK中的所
有文件名相同的文件,分别获取各文件的crc属性值;将所述第一版本的完整APK与所述第
二版本的完整APK中的所有文件名相同的文件的crc属性值进行对比。
C16、如C13所述的装置,其中,
所述对比单元,适于在一个文件存在于第一版本的完整APK中,且该文件不存在于
第二版本的完整APK中时,将该文件记为新增类型的目标文件。
C17、如C13所述的装置,其中,
所述对比单元,适于在一个文件存在于第二版本的完整APK中,且该文件不存在于
第一版本的完整APK中时,将该文件记为删除类型的目标文件。
C18、如C13-C17中任一项所述的装置,其中,
所述制作单元,适于对替换类型的目标文件,将所有目标文件分别从各自的APK中
解压出来,计算文件名相同的目标文件间的差异,将计算结果加入更新包,以使所述更新包
在安装时,根据所述计算结果对第二版本的APK中相应的目标文件进行替换;以及适于对新
增类型的目标文件,将第一版本的APK中的目标文件加入更新包,并在更新包中标记对该文
件执行添加操作,以使所述更新包在安装时,将相应的目标文件添加到第二版本的APK中;
以及适于对删除类型的目标文件,在更新包中标记对该文件执行删除操作,以使所述更新
包在安装时,将相应的目标文件从第二版本的APK中删除。
C19、如C18所述的装置,其中,
所述制作单元,适于使用bsdiff算法计算文件名相同的目标文件间的差异。
C20、如C13所述的装置,其中,该装置还包括:
存储单元,适于将得到的更新包、第一版本的版本信息及第二版本的版本信息对
应保存。
本发明的实施例还公开了D21、一种应用的更新装置,其中,该装置包括:
更新包获取单元,适于获取待更新应用的更新包;
更新包解析单元,适于对所述更新包进行解析,确定至少一个目标文件和与目标
文件的类型对应的更新操作;所述目标文件的类型包括如下中的至少一种:替换类型,新增
类型,删除类型;
安装包修改单元,适于对待更新应用的当前版本的完整安装包APK执行与目标文
件的类型对应的更新操作,得到待更新版本的完整APK;
安装单元,适于安装所述待更新版本的完整APK。
D22、如D21所述的装置,其中,
所述安装包修改单元,适于在所述目标文件为替换类型时,从所述更新包中提取
根据待更新版本和当前版本中目标文件差异计算得到的计算结果,对当前版本的APK中相
应的目标文件进行替换;以及适于在所述目标文件为新增类型时,从所述更新包中提取所
述目标文件,将其添加到当前版本的APK中;以及适于在所述目标文件为删除类型时,从当
前版本的APK中删除所述目标文件。
D23、如D22所述的装置,其中,所述计算结果是使用bsdiff算法对待更新版本和当
前版本中文件名相同的目标文件间的差异进行计算得到的。
D24、如D21所述的方法,其中,
所述更新包获取单元,适于获取与待更新应用当前版本的版本信息和待更新版本
的版本信息相对应的更新包。