软件升级的方法、装置、系统以及介质制造方法及图纸

技术编号:27493128 阅读:25 留言:0更新日期:2021-03-02 18:13
本发明专利技术提供了一种软件升级的方法、装置、系统以及介质。所述方法包括:读取新软件包与旧软件包的文件目录;遍历新软件包与旧软件包的文件目录,并且比较新软件包的文件目录中的新文件与旧软件包的文件目录中的旧文件,以生成包含新文件与旧文件之间的差分内容的补丁文件;以及基于补丁文件和旧软件包,对软件进行升级。本发明专利技术的上述方法能够使软件的更新过程的效率更高且更稳定,从而提升用户更新的体验。验。验。

【技术实现步骤摘要】
软件升级的方法、装置、系统以及介质


[0001]本专利技术涉及一种软件升级的方法、装置、系统以及介质。

技术介绍

[0002]在移动应用开发领域中,软件的更新相比传统桌面端的软件更新会频繁很多。因此,用户使用中,会花费相当大的网络流量在软件更新上。对于移动端软件的更新,通常是由软件开发商提供新版本的软件,供用户在线下载到本地后安装使用。为了节省流量,通常会对新版本的安装包和用户手机中当前版本的安装包进行差分处理,从而生成补丁包。这个补丁包的大小小于完整的安装包。用户下载该补丁包到本地后,使用补丁包和用于本地的安装包重新生成一个新版本的安装包以供安装软件。这样可以达到节省流量的目的。
[0003]例如,已知一种现有的软件升级的方法。此方法利用了安卓应用安装包apk文件中的META-INF目录下的MANIFEST.MF文件中的SHA1摘要信息,来确定新老版本安装包中文件的差异部分。将这部分生成为更新文件下发,最终实现了安卓应用的增量更新。
[0004]然而,上述现有的软件升级的方法存在以下问题:
[0005](1)该技术使用apk文件中的MANIFEST.MF里的SHA1摘要来对比新老安装包的差异。但是,MANIFEST.MF文件并不包含一个安装包里的全部文件的信息,从而造成了该技术并不能保证使用该技术生成的安装包和真实的新版安装包在功能上完全一致,甚至可能会造成功能不可用。
[0006]例如,安卓apk文件按渠道分发时,一个通常使用的技术是,在apk文件打包签名完成后,根据要分发的渠道在META-INF文件夹中写入一个0字节的空文件。根据不同的渠道,该文件命名不同。安卓应用启动时,可以在程序内读取到该空文件,并根据文件名来获取渠道信息。在这种情况下,该技术方案无法正确处理META-INF中的空文件,会造成使用空文件方案实现的功能出现异常。
[0007]此外,MANIFEST.MF中不包含文件夹信息。如果在安装包的文件目录结构中出现空文件夹的情况,则通常无法正确处理以保证合成包和新包完全一致。此时,如果软件代码中有逻辑涉及到这些空文件夹,就可能造成合成包的功能异常。
[0008]以上说明该现有的软件升级方法在适用性和可用性方面存在缺陷。
[0009](2)另外,该现有技术并没有针对新老安装包中有更新的文件进行差分对比,而是直接将新版本中的对应文件直接写入了更新包中,这会造成更新包体积变大,增量更新效果不好,没有很好的实现节省流量的目的。

技术实现思路

[0010]针对以上问题,本专利技术提供一种软件升级的方法、装置、系统以及介质,能够使软件的更新过程的效率更高且更稳定,从而提升用户更新的体验。
[0011]根据本专利技术的一方面,提供一种软件升级的方法,包括:
[0012]读取新软件包与旧软件包的文件目录;
[0013]遍历所述新软件包与所述旧软件包的文件目录,并且比较所述新软件包的文件目录中的新文件与所述旧软件包的文件目录中的旧文件,以生成包含所述新文件与所述旧文件之间的差分内容的补丁文件;以及
[0014]基于所述补丁文件和所述旧软件包,对软件进行升级。
[0015]优选地,通过使用bsdiff生成所述新文件与所述旧文件之间的所述差分内容。
[0016]优选地,所述补丁文件还包含所述新文件和所述旧文件中的空文件夹信息以及META-INF中的0字节文件信息。
[0017]优选地,所述补丁文件还包含:表示文件在所述旧软件包中存在而在所述新软件包中不存在的文件删除信息,和/或表示文件在所述新软件包中存在而在所述旧软件包中不存在的文件新增信息。
[0018]优选地,所述补丁文件包括:长度信息区、控制信息区和数据区,
[0019]所述长度信息区存储所述控制信息区的长度信息,
[0020]所述控制信息区定义所述数据区的划分,
[0021]所述数据区存储所述新文件与所述旧文件之间的所述差分内容。
[0022]优选地,所述新文件的摘要信息记录在所述补丁文件的所述控制信息区中。
[0023]优选地,通过将所述补丁文件与所述旧软件包进行合成,生成与所述新软件包一致的软件升级包,以对软件进行升级。
[0024]根据本专利技术的另一方面,提供一种软件升级的装置,包括:
[0025]读取单元,读取新软件包与旧软件包的文件目录;
[0026]比较单元,遍历所述新软件包与所述旧软件包的文件目录,并且比较所述新软件包的文件目录中的新文件与所述旧软件包的文件目录中的旧文件,以生成包含所述新文件与所述旧文件之间的差分内容的补丁文件;以及
[0027]升级单元,基于所述补丁文件和所述旧软件包,对所述软件进行升级。
[0028]根据本专利技术的另一方面,提供一种软件升级的系统,包括:
[0029]一个或多个处理器;以及
[0030]存储装置,用于存储一个或多个程序,
[0031]当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如以上方面所述的软件升级的方法。
[0032]根据本专利技术的另一方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如以上方面所述的软件升级的方法。
[0033]专利技术的有益效果
[0034]相比在现有技术中直接对软件包整体进行差分比对,本专利技术对软件包内的文件进行比较,从而减少了升级过程的整体时间,并且使最终生成的差分文件较小。因此,能够以更少的流量下载增量升级包,使软件升级的过程的效率更高且更稳定,从而提升了用户更新软件时的体验。
附图说明
[0035]此处所说明的附图用来提供对本专利技术的进一步理解,构成本专利技术的一部分,但其说明仅用于解释本专利技术,并不构成对本专利技术的不当限定。
[0036]图1示出根据本专利技术的一优选实施例的软件升级的方法。
[0037]图2示例性地示出了新安装包和旧安装包的文件目录结构。
[0038]图3示例性地示出了补丁文件的格式结构。
[0039]图4示出根据本专利技术的一优选实施例的软件升级的装置。
具体实施方式
[0040]以下基于实施例对本专利技术进行描述,但是本专利技术并不仅仅限于这些实施例。在下文对本专利技术的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本专利技术。为了避免混淆本专利技术的实质,公知的方法、过程、流程、元件并没有详细叙述。
[0041]结合图1-3说明本专利技术的软件升级的方法。图1示出根据本专利技术的一优选实施例的软件升级的方法。图2示例性地示出了新安装包和旧安装包的文件目录结构。图3示例性地示出了补丁文件的格式结构。
[0042]本专利技术提供了一种软件升级的方法。如图1所示,本专利技术的一实施例的软件升级的方法包括:读取新软件包与旧软件包的文件目录(步骤S1);遍历新软件包与旧软件包的文件目录,比较新软件包的文件目录中的新文件与旧软件包本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件升级的方法,包括:读取新软件包与旧软件包的文件目录;遍历所述新软件包与所述旧软件包的文件目录,并且比较所述新软件包的文件目录中的新文件与所述旧软件包的文件目录中的旧文件,以生成包含所述新文件与所述旧文件之间的差分内容的补丁文件;以及基于所述补丁文件和所述旧软件包,对软件进行升级。2.根据权利要求1所述的软件升级的方法,其中,通过使用bsdiff生成所述新文件与所述旧文件之间的所述差分内容。3.根据权利要求1或2所述的软件升级的方法,其中,所述补丁文件还包含所述新文件和所述旧文件中的空文件夹信息以及META-INF中的0字节文件信息。4.根据权利要求1-3的任一项所述的软件升级的方法,其中,所述补丁文件还包含:表示文件在所述旧软件包中存在而在所述新软件包中不存在的文件删除信息,和/或表示文件在所述新软件包中存在而在所述旧软件包中不存在的文件新增信息。5.根据权利要求1-4的任一项所述的软件升级的方法,其中,所述补丁文件包括:长度信息区、控制信息区和数据区,所述长度信息区存储所述控制信息区的长度信息,所述控制信息区定义所述数据区的划分,所述数据区存...

【专利技术属性】
技术研发人员:陈泽峰彭坚
申请(专利权)人:北京一亩田新农网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1