CN105740016B - 应用程序的增量发布方法和装置、升级方法和装置 - Google Patents

应用程序的增量发布方法和装置、升级方法和装置 Download PDF

Info

Publication number
CN105740016B
CN105740016B CN201610059619.9A CN201610059619A CN105740016B CN 105740016 B CN105740016 B CN 105740016B CN 201610059619 A CN201610059619 A CN 201610059619A CN 105740016 B CN105740016 B CN 105740016B
Authority
CN
China
Prior art keywords
installation package
version installation
file
files
application program
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
CN201610059619.9A
Other languages
English (en)
Other versions
CN105740016A (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 CN201610059619.9A priority Critical patent/CN105740016B/zh
Publication of CN105740016A publication Critical patent/CN105740016A/zh
Application granted granted Critical
Publication of CN105740016B publication Critical patent/CN105740016B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

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

应用程序的增量发布方法和装置、升级方法和装置
技术领域
本发明涉及软件升级领域,特别是涉及一种应用程序的增量发布方法和装置、升级方法和装置。
背景技术
随着网络技术和移动终端的发展,用户通过移动终端连接网络,从事各种网络活动,为此需要下载各种各样的应用程序安装包,并安装该应用程序安装包。当应用程序存在更新时,需要下载更新的数据,更新的数据即增量,对增量进行更新。传统的应用程序更新方法是将直接使用bsdiff算法计算应用程序安装包(如apk,Android Package)的增量包,然而apk中打包的文件,在打包前的一个比特的修改,也会导致该文件打包到apk后的压缩数据完全变化,导致整个apk直接应用bsdiff算法,得到的增量包比较大,浪费了用户下载流量。
发明内容
基于此,有必要针对传统的应用程序的增量包比较大,浪费用户流量的问题,提供一种应用程序的增量发布方法和装置,能节省用户升级流量。
此外,还有必要提供一种应用程序的增量升级方法和装置,能节省用户升级流量。
一种应用程序的增量发布方法,包括以下步骤:
获取应用程序的第一版本安装包和第二版本安装包;
比较应用程序的第一版本安装包中的文件和第二版本安装包中的文件,得到新增文件和变化文件的列表;
将变化文件进行差分计算得到第一差分数据;
采用二进制流方式打开应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包;
将第三版本安装包与第二版本安装包进行差分计算得到第二差分数据;
将新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件打包成增量升级包;
发布所述增量升级包。
一种应用程序的增量发布装置,其特征在于,包括:
获取模块,用于获取应用程序的第一版本安装包和第二版本安装包;
比较模块,用于比较应用程序的第一版本安装包中的文件和第二版本安装包中的文件,得到新增文件和变化文件的列表;
差分模块,用于将变化文件进行差分计算得到第一差分数据;
添加模块,用于采用二进制流方式打开应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包;
所述差分模块还用于将第三版本安装包与第二版本安装包进行差分计算得到第二差分数据;
打包模块,用于将新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件打包成增量升级包;
发布模块,用于发布所述增量升级包。
上述应用程序的增量发布方法和装置,将第一版本安装包和第二版本安装包中文件进行比较得到新增文件和变化文件,计算得到变化文件的第一差分数据,采用二进制流方式打开第一版本安装包,将新增文件和变化文件加入到第一版本安装包,生成第三版本安装包,计算第三版本安装包和第二版本安装包的第二差分数据,将新增文件和变化文件列表、第一差分数据、第二差分数据和新增文件打包成增量升级包,不需要下载完整的第二版本安装包,终端根据增量升级包即可得到正式发布版本的第二版本安装包,节省用户升级流量。
一种应用程序的增量升级方法,包括以下步骤:
根据更新提示下载增量升级包;
解压所述增量升级包得到新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件;
获取本地的应用程序的第一版本安装包中变化文件,将第一版本安装包中的变化文件与第一差分数据进行还原计算得到所述应用程序的第二版本安装包中变化文件;
采用二进制流方式打开本地的应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包;
将所述第三版本安装包和第二差分数据进行差分计算得到第二版本安装包。
一种应用程序的增量升级装置,包括:
下载模块,用于根据更新提示下载增量升级包;
解压模块,用于解压所述增量升级包得到新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件;
还原模块,用于获取本地的应用程序的第一版本安装包中变化文件,将第一版本安装包中的变化文件与第一差分数据进行还原计算得到所述应用程序的第二版本安装包中变化文件;
生成模块,用于采用二进制流方式打开本地的应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包;
处理模块,用于将所述第三版本安装包和第二差分数据进行差分计算得到第二版本安装包。
上述应用程序的增量升级方法和装置,下载增量升级包后,解压增量升级包得到新增文件和变化文件列表、第一差分数据、第二差分数据和新增文件,根据第一差分数据和第一版本安装包的变化文件还原得到第二版本安装包中的变化文件,采用二进制流方式打开第一版本安装包,将新增文件和变化文件加入到第一版本安装包,生成第三版本安装包,根据第三版本安装包和第二差分数据计算得到第二版本安装包,不需要下载完整的第二版本安装包,根据增量升级包即可得到正式发布版本的第二版本安装包,节省用户升级流量。
附图说明
图1为一个实施例中应用程序的增量发布方法和升级方法的应用环境示意图;
图2A为一个实施例中终端的内部结构示意图;
图2B为一个实施例中服务器的内部结构示意图;
图3为一个实施例中应用程序的增量发布方法的流程图;
图4为应用程序的增量发布方法的框架示意图;
图5为一个实施例中应用程序的增量升级方法的流程图;
图6为应用程序的增量升级方法的框架示意图;
图7为一个实施例中应用程序的增量发布装置的结构框图;
图8为一个实施例中应用程序的增量升级装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一客户端称为第二客户端,且类似地,可将第二客户端称为第一客户端。第一客户端和第二客户端两者都是客户端,但其不是同一客户端。
图1为一个实施例中应用程序的增量发布方法和升级方法的应用环境示意图。如图1所示,该应用环境包括终端110和服务器120。终端110与服务器120通过网络进行通信。
服务器120获取应用程序的第一版本安装包和第二版本安装包后,比较第一版本安装包和第二版本安装包中的文件,得到新增文件和变化文件的列表,将变化文件进行差分计算得到第一差分数据,采用二进制流方式打开应用程序的第一版本安装包,在该第一版本安装包的文件末尾添加变化文件和新增文件,得到第三版本安装包,将第三版本安装包与第二版本安装包进行差分计算得到第二差分数据,以及将新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件打包成增量升级包,再将增量升级包和第二版本安装包一起发布。
第一版本安装包是指旧版本安装包。第二版本安装包是指新版本安装包。第三版本安装包是指将旧版本安装包添加变化文件和新增文件后模拟终端打包合成的安装包。安装包中包括一个或多个文件。新增文件是指新版本安装包中存在,旧版本安装包中不存在的文件。变化文件是指新旧版本安装包中均存在,但新版本安装包与旧版本安装包相比较发生变化的文件。第一差分数据是指采用bsdiff算法或x3diff算法等差分算法对变化文件进行差分计算得到的数据。第二差分数据是指模拟终端打包合成的安装包与新版本安装包之间采用bsdiff算法或x3diff算法等差分算法得到的差分数据。
终端110获取应用程序的更新提示,根据更新提示下载增量升级包,解压所述增量升级包得到新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件;获取本地的应用程序的第一版本安装包中变化文件,将第一版本安装包中的变化文件与第一差分数据进行还原计算得到该应用程序的第二版本安装包中变化文件,采用二进制流方式打开本地的应用程序的第一版本安装包,在第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包,再将第三版本安装包和第二差分数据进行差分计算得到第二版本安装包。
图2A为一个实施例中终端的内部结构示意图。如图2A所示,该终端包括通过系统总线连接的处理器、存储介质、内存和网络接口、声音采集装置、显示屏、扬声器和输入装置。其中,终端的存储介质存储有操作系统,还包括一种应用程序的增量升级装置,该应用程序的增量升级装置用于实现一种应用程序的增量升级方法。该处理器用于提供计算和控制能力,支撑整个终端的运行。终端中的内存为存储介质中的应用程序的增量升级装置的运行提供环境,网络接口用于与服务器进行网络通信,如发送增量升级包下载请求至服务器,接收服务器返回的增量升级包等。终端的显示屏可以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。该终端可以是手机、平板电脑、穿戴式设备或者个人数字助理等。本领域技术人员可以理解,图2A中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图2B为一个实施例中服务器的内部结构示意图。如图2B所示,该服务器包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该服务器的存储介质存储有操作系统、数据库和应用程序的增量发布装置,数据库中存储有应用程序各版本安装包和增量升级包,该应用程序的增量发布装置用于实现适用于服务器的一种应用程序的增量发布方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存为存储介质中的应用程序的增量发布装置的运行提供环境。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的增量升级包下载请求以及向终端返回增量升级包等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图2B中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图3为一个实施例中应用程序的增量发布方法的流程图。图4为应用程序的增量发布方法的框架示意图。如图3和图4所示,一种应用程序的增量发布方法,包括以下步骤:
步骤302,获取应用程序的第一版本安装包和第二版本安装包。
本实施例中,应用程序的第一版本安装包是旧版本安装包V1.apk,第二版本安装包是新版本安装包V2.apk。
步骤304,比较应用程序的第一版本安装包中的文件和第二版本安装包中的文件,得到新增文件和变化文件的列表。
本实施例中,应用程序的第一版本安装包V1.apk中包括文件a、b、c。第二版本安装包V2.apk中包括文件a’、b、d,比较第一版本安装包和第二版本安装包的文件得到的新增文件为d,变化文件为a’/a。可将新增文件和变化文件的列表记录在fileInfo文件中。
步骤306,将变化文件进行差分计算得到第一差分数据。
本实施例中,对变化文件a’/a,通过bsdiff算法或x3diff算法等差分算法进行差分计算得到第一差分数据,即a-V2-V1.diff文件。
步骤308,采用二进制流方式打开应用程序的第一版本安装包,在该第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包。
本实施例中,采用二进制流方式打开应用程序的第一版本安装包V1.apk,在第一版本安装包的文件末尾或头部等位置添加变化文件a’/a和新增文件d,得到第三版本安装包V2’.apk。
步骤310,将第三版本安装包与第二版本安装包进行差分计算得到第二差分数据。
本实施例中,将第三版本安装包V2’.apk与第二版本安装包V2.apk采用bsdiff算法或x3diff算法等差分算法进行差分计算得到第二差分数据,即V2-V2’.diff。
步骤312,将新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件打包成增量升级包。
本实施例中,将新增文件和变化文件的列表fileInfo、a-V2-V1.diff、V2-V2’.diff和所有新增文件打包成增量升级版patch.zip。
步骤314,发布该增量升级包。
本实施例中,可将增量升级包及第二版本安装包一起发布。方便未安装第一版本安装包的用户可下载第二版本安装包直接安装,安装了第一版本安装包的用户下载增量升级包,同第一版本安装包计算得到第二版本安装包,节省升级流量和下载时间。
上述应用程序的增量发布方法,将第一版本安装包和第二版本安装包中文件进行比较得到新增文件和变化文件,计算得到变化文件的第一差分数据,采用二进制流方式打开第一版本安装包,将新增文件和变化文件加入到第一版本安装包,生成第三版本安装包,计算第三版本安装包和第二版本安装包的第二差分数据,将新增文件和变化文件列表、第一差分数据、第二差分数据和新增文件打包成增量升级包,不需要下载完整的第二版本安装包,终端根据增量升级包即可得到正式发布版本的第二版本安装包,节省用户升级流量;此外,将新增文件和变化文件添加到第一版本安装包中文件的末尾,不需要对不变文件继续解压和打包操作,缩短了生成安装包的时间,也节省了流量。
在一个实施例中,比较应用程序的第一版本安装包中的文件和第二版本安装包中的文件,得到新增文件和变化文件的列表的步骤包括:获取应用程序的第一版本安装包中的文件的校验信息和第二版本安装包中的文件的校验信息;比较第一版本安装包和第二版本安装包中文件的校验信息,得到新增文件和变化文件的列表。
具体地,信息是指所有文件的CRC(Cyclic Redundancy Check,循环冗余校验)32值或信息摘要值(如md5值)。例如,将新旧两个安装包中每个文件进行CRC32对比,若两个安装包中都有10个文件,7个文件是相同的,只有文件2、5、8不相同是新文件,则补丁包只包含2、5、8三个文件。
图5为一个实施例中应用程序的增量升级方法的流程图。图6为应用程序的增量升级方法的框架示意图。如图5和图6所示,一种应用程序的增量升级方法,包括以下步骤:
步骤502,根据更新提示下载增量升级包。
本实施例中,在终端的应用程序管理软件或应用程序自身更新界面显示更新提示,获取用户对更新提示的触发操作,根据该更新提示下载增量升级包patch.zip。
步骤504,解压该增量升级包得到新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件。
本实施例中,从patch.zip中解压fileInfo,解析得到新增文件和变化文件的列表,从patch.zip中解压得到第一差分数据a-V2-V1.diff、第二差分数据V2-V2’.diff和新增文件等。
步骤506,获取本地的应用程序的第一版本安装包中变化文件,将第一版本安装包中的变化文件与第一差分数据进行还原计算得到该应用程序的第二版本安装包中变化文件。
本实施例中,获取本地的应用程序的第一版本安装包V1.apk中变化文件a,将变化文件a与第一差分数据a-V2-V1.diff进行bsdiff算法或x3diff算法计算得到该应用程序的第二版本安装包中变化文件a’。
步骤508,采用二进制流方式打开本地的应用程序的第一版本安装包,在该第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包。
本实施例中,拷贝一份V1.apk,采用二进制流方式打开本地的应用程序的第一版本安装包V1.apk,在该第一版本安装包的文件中添加第二版本安装包中变化文件a’和新增文件d,得到第三版本安装包V2’.apk。
步骤510,将该第三版本安装包和第二差分数据进行差分计算得到第二版本安装包。
本实施例中,将第三版本安装包V2’.apk和第二差分数据V2-V2’.diff使用bsdiff算法或x3diff算法进行差分计算得到第二版本安装包V2.apk。
上述应用程序的增量升级方法,下载增量升级包后,解压增量升级包得到新增文件和变化文件列表、第一差分数据、第二差分数据和新增文件,根据第一差分数据和第一版本安装包的变化文件还原得到第二版本安装包中的变化文件,采用二进制流方式打开第一版本安装包,将新增文件和变化文件加入到第一版本安装包,生成第三版本安装包,根据第三版本安装包和第二差分数据计算得到第二版本安装包,不需要下载完整的第二版本安装包,根据增量升级包即可得到正式发布版本的第二版本安装包,节省用户升级流量。使用该增量升级方法,最多可以减少下载流量达90%以上,减少了用户50%以上的等待时间。
在一个实施例中,在生成增量升级包时,第三版本安装包是通过二进制流方式打开第一版本安装包,在第一版本安装包的文件末尾添加变化文件和新增文件,则该采用二进制流方式打开本地的应用程序的第一版本安装包,在该第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包的步骤包括:采用二进制流方式打开本地的应用程序的第一版本安装包,在该第一版本安装包的文件末尾添加变化文件和新增文件,得到第三版本安装包。
将新增文件和变化文件添加到第一版本安装包中文件的末尾,不需要对不变文件继续解压和打包操作,缩短了生成安装包的时间,也节省了流量。
在一个实施例中,在生成增量升级包时,第三版本安装包是通过二进制流方式打开第一版本安装包,在第一版本安装包的文件头部添加变化文件和新增文件,则该采用二进制流方式打开本地的应用程序的第一版本安装包,在该第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包的步骤包括:采用二进制流方式打开本地的应用程序的第一版本安装包,在该第一版本安装包的文件头部添加变化文件和新增文件,得到第三版本安装包。
图7为一个实施例中应用程序的增量发布装置的结构框图。如图7所示,一种应用程序的增量发布装置,包括获取模块702、比较模块704、差分模块706、添加模块708、打包模块710和发布模块712。其中:
获取模块702用于获取应用程序的第一版本安装包和第二版本安装包。
本实施例中,应用程序的第一版本安装包是旧版本安装包V1.apk,第二版本安装包是新版本安装包V2.apk。
比较模块704用于比较应用程序的第一版本安装包中的文件和第二版本安装包中的文件,得到新增文件和变化文件的列表。
本实施例中,应用程序的第一版本安装包V1.apk中包括文件a、b、c。第二版本安装包V2.apk中包括文件a’、b、d,比较第一版本安装包和第二版本安装包的文件得到的新增文件为d,变化文件为a’/a。可将新增文件和变化文件的列表记录在fileInfo文件中。
差分模块706用于将变化文件进行差分计算得到第一差分数据。
本实施例中,对变化文件a’/a,通过bsdiff算法或x3diff算法等差分算法进行差分计算得到第一差分数据,即a-V2-V1.diff文件。
添加模块708用于采用二进制流方式打开应用程序的第一版本安装包,在该第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包。
本实施例中,采用二进制流方式打开应用程序的第一版本安装包V1.apk,在第一版本安装包的文件末尾或头部等位置添加变化文件a’/a和新增文件d,得到第三版本安装包V2’.apk。
添加模块708还用于采用二进制流方式打开应用程序的第一版本安装包,在该第一版本安装包的文件末尾添加变化文件和新增文件,得到第三版本安装包。
差分模块706还用于将第三版本安装包与第二版本安装包进行差分计算得到第二差分数据。
本实施例中,将第三版本安装包V2’.apk与第二版本安装包V2.apk采用bsdiff算法或x3diff算法等差分算法进行差分计算得到第二差分数据,即V2-V2’.diff。
打包模块710用于将新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件打包成增量升级包。
本实施例中,将新增文件和变化文件的列表fileInfo、a-V2-V1.diff、V2-V2’.diff和所有新增文件打包成增量升级版patch.zip。
发布模块712用于发布该增量升级包。
本实施例中,可将增量升级包及第二版本安装包一起发布。方便未安装第一版本安装包的用户可下载第二版本安装包直接安装,安装了第一版本安装包的用户下载增量升级包,同第一版本安装包计算得到第二版本安装包,节省升级流量和下载时间。
上述应用程序的增量发布装置,将第一版本安装包和第二版本安装包中文件进行比较得到新增文件和变化文件,计算得到变化文件的第一差分数据,采用二进制流方式打开第一版本安装包,将新增文件和变化文件加入到第一版本安装包,生成第三版本安装包,计算第三版本安装包和第二版本安装包的第二差分数据,将新增文件和变化文件列表、第一差分数据、第二差分数据和新增文件打包成增量升级包,不需要下载完整的第二版本安装包,终端根据增量升级包即可得到正式发布版本的第二版本安装包,节省用户升级流量;此外,将新增文件和变化文件添加到第一版本安装包中文件的末尾,不需要对不变文件继续解压和打包操作,缩短了生成安装包的时间,也节省了流量。
在一个实施例中,比较模块704还用于获取应用程序的第一版本安装包中的文件的校验信息和第二版本安装包中的文件的校验信息,以及比较第一版本安装包和第二版本安装包中文件的校验信息,得到新增文件和变化文件的列表。
具体地,信息是指所有文件的CRC(Cyclic Redundancy Check,循环冗余校验)32值或信息摘要值(如md5值)。例如,将新旧两个安装包中每个文件进行CRC32对比,若两个安装包中都有10个文件,7个文件是相同的,只有文件2、5、8不相同是新文件,则补丁包只包含2、5、8三个文件。
图8为一个实施例中应用程序的增量升级装置的结构框图。如图8所示,一种应用程序的增量升级装置,包括下载模块802、解压模块804、还原模块806、生成模块808和处理模块810。其中:
下载模块802用于根据更新提示下载增量升级包。
本实施例中,在终端的应用程序管理软件或应用程序自身更新界面显示更新提示,获取用户对更新提示的触发操作,根据该更新提示下载增量升级包patch.zip。
解压模块804用于解压该增量升级包得到新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件。
本实施例中,从patch.zip中解压fileInfo,解析得到新增文件和变化文件的列表,从patch.zip中解压得到第一差分数据a-V2-V1.diff、第二差分数据V2-V2’.diff和新增文件等。
还原模块806用于获取本地的应用程序的第一版本安装包中变化文件,将第一版本安装包中的变化文件与第一差分数据进行还原计算得到该应用程序的第二版本安装包中变化文件。
本实施例中,获取本地的应用程序的第一版本安装包V1.apk中变化文件a,将变化文件a与第一差分数据a-V2-V1.diff进行bsdiff算法或x3diff算法计算得到该应用程序的第二版本安装包中变化文件a’。
生成模块808用于采用二进制流方式打开本地的应用程序的第一版本安装包,在该第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包。
本实施例中,拷贝一份V1.apk,采用二进制流方式打开本地的应用程序的第一版本安装包V1.apk,在该第一版本安装包的文件中添加第二版本安装包中变化文件a’和新增文件d,得到第三版本安装包V2’.apk。
处理模块810用于将该第三版本安装包和第二差分数据进行差分计算得到第二版本安装包。
本实施例中,将第三版本安装包V2’.apk和第二差分数据V2-V2’.diff使用bsdiff算法或x3diff算法进行差分计算得到第二版本安装包V2.apk。
上述应用程序的增量升级装置,下载增量升级包后,解压增量升级包得到新增文件和变化文件列表、第一差分数据、第二差分数据和新增文件,根据第一差分数据和第一版本安装包的变化文件还原得到第二版本安装包中的变化文件,采用二进制流方式打开第一版本安装包,将新增文件和变化文件加入到第一版本安装包,生成第三版本安装包,根据第三版本安装包和第二差分数据计算得到第二版本安装包,不需要下载完整的第二版本安装包,根据增量升级包即可得到正式发布版本的第二版本安装包,节省用户升级流量。使用该增量升级方法,最多可以减少下载流量达90%以上,减少了用户50%以上的等待时间。
在一个实施例中,生成模块808还用于采用二进制流方式打开本地的应用程序的第一版本安装包,在该第一版本安装包的文件末尾添加变化文件和新增文件,得到第三版本安装包。将新增文件和变化文件添加到第一版本安装包中文件的末尾,不需要对不变文件继续解压和打包操作,缩短了生成安装包的时间,也节省了流量。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (13)

1.一种应用程序的增量发布方法,包括以下步骤:
获取应用程序的第一版本安装包和第二版本安装包;
比较应用程序的第一版本安装包中的文件和第二版本安装包中的文件,得到新增文件和变化文件的列表;
将变化文件进行差分计算得到第一差分数据;
采用二进制流方式打开应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包;
将第三版本安装包与第二版本安装包进行差分计算得到第二差分数据;
将新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件打包成增量升级包;
发布所述增量升级包。
2.根据权利要求1所述的方法,其特征在于,所述采用二进制流方式打开应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包的步骤包括:
采用二进制流方式打开应用程序的第一版本安装包,在所述第一版本安装包的文件末尾添加变化文件和新增文件,得到第三版本安装包。
3.根据权利要求1所述的方法,其特征在于,比较应用程序的第一版本安装包中的文件和第二版本安装包中的文件,得到新增文件和变化文件的列表的步骤包括:
获取应用程序的第一版本安装包中的文件的校验信息和第二版本安装包中的文件的校验信息;
比较第一版本安装包中文件的校验信息和第二版本安装包中文件的校验信息,得到新增文件和变化文件的列表。
4.一种应用程序的增量升级方法,其特征在于,包括以下步骤:
根据更新提示下载增量升级包;
解压所述增量升级包得到新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件;
获取本地的应用程序的第一版本安装包中变化文件,将第一版本安装包中的变化文件与第一差分数据进行还原计算得到所述应用程序的第二版本安装包中变化文件;
采用二进制流方式打开本地的应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包;
将所述第三版本安装包和第二差分数据进行差分计算得到第二版本安装包。
5.根据权利要求4所述的方法,其特征在于,所述采用二进制流方式打开本地的应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包的步骤包括:
采用二进制流方式打开本地的应用程序的第一版本安装包,在所述第一版本安装包的文件末尾添加变化文件和新增文件,得到第三版本安装包。
6.一种应用程序的增量发布装置,其特征在于,包括:
获取模块,用于获取应用程序的第一版本安装包和第二版本安装包;
比较模块,用于比较应用程序的第一版本安装包中的文件和第二版本安装包中的文件,得到新增文件和变化文件的列表;
差分模块,用于将变化文件进行差分计算得到第一差分数据;
添加模块,用于采用二进制流方式打开应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包;
所述差分模块还用于将第三版本安装包与第二版本安装包进行差分计算得到第二差分数据;
打包模块,用于将新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件打包成增量升级包;
发布模块,用于发布所述增量升级包。
7.根据权利要求6所述的装置,其特征在于,所述添加模块还用于采用二进制流方式打开应用程序的第一版本安装包,在所述第一版本安装包的文件末尾添加变化文件和新增文件,得到第三版本安装包。
8.根据权利要求6所述的装置,其特征在于,所述比较模块还用于获取应用程序的第一版本安装包中的文件的校验信息和第二版本安装包中的文件的校验信息,以及比较第一版本安装包中文件的校验信息和第二版本安装包中文件的校验信息,得到新增文件和变化文件的列表。
9.一种应用程序的增量升级装置,其特征在于,包括:
下载模块,用于根据更新提示下载增量升级包;
解压模块,用于解压所述增量升级包得到新增文件和变化文件的列表、第一差分数据、第二差分数据和新增文件;
还原模块,用于获取本地的应用程序的第一版本安装包中变化文件,将第一版本安装包中的变化文件与第一差分数据进行还原计算得到所述应用程序的第二版本安装包中变化文件;
生成模块,用于采用二进制流方式打开本地的应用程序的第一版本安装包,在所述第一版本安装包的文件中添加变化文件和新增文件,得到第三版本安装包;
处理模块,用于将所述第三版本安装包和第二差分数据进行差分计算得到第二版本安装包。
10.根据权利要求9所述的装置,其特征在于,所述生成模块还用于采用二进制流方式打开本地的应用程序的第一版本安装包,在所述第一版本安装包的文件末尾添加变化文件和新增文件,得到第三版本安装包。
11.一种服务器,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3中任一项所述的方法的步骤。
12.一种终端,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求4或5所述的方法的步骤。
13.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
CN201610059619.9A 2016-01-28 2016-01-28 应用程序的增量发布方法和装置、升级方法和装置 Active CN105740016B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610059619.9A CN105740016B (zh) 2016-01-28 2016-01-28 应用程序的增量发布方法和装置、升级方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610059619.9A CN105740016B (zh) 2016-01-28 2016-01-28 应用程序的增量发布方法和装置、升级方法和装置

Publications (2)

Publication Number Publication Date
CN105740016A CN105740016A (zh) 2016-07-06
CN105740016B true CN105740016B (zh) 2020-08-25

Family

ID=56246772

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610059619.9A Active CN105740016B (zh) 2016-01-28 2016-01-28 应用程序的增量发布方法和装置、升级方法和装置

Country Status (1)

Country Link
CN (1) CN105740016B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407115B (zh) * 2016-09-20 2018-09-18 网易(杭州)网络有限公司 美术资源文件的测试方法及装置
CN107872500A (zh) * 2016-09-28 2018-04-03 阿里巴巴集团控股有限公司 更新应用页面数据的处理方法、装置、服务器及客户端
CN106708581A (zh) * 2016-12-27 2017-05-24 北京奇虎科技有限公司 应用的更新包生成方法、装置和应用的更新方法、装置
CN106886436B (zh) * 2017-01-23 2020-12-04 青岛海信移动通信技术股份有限公司 一种Android系统升级的方法和装置
CN107168733B (zh) * 2017-04-25 2020-07-17 北京五八信息技术有限公司 差分文件包的生成及应用程序的更新方法、装置和系统
CN107463495A (zh) * 2017-07-19 2017-12-12 重庆扬讯软件技术股份有限公司 一种代码增量发布的软件测试方法及代码增量发布装置
CN109408486B (zh) * 2018-10-29 2020-10-30 珠海格力电器股份有限公司 文件发布方法和系统、发布服务器和文件生成装置
CN111381858B (zh) * 2018-12-29 2024-02-06 深圳Tcl新技术有限公司 一种应用程序升级方法、服务器及终端设备
CN114365081A (zh) * 2019-11-21 2022-04-15 深圳市欢太科技有限公司 一种增量包生成方法、增量包生成装置及服务器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103123588A (zh) * 2013-02-05 2013-05-29 东莞宇龙通信科技有限公司 一种获取差分升级补丁的方法及系统
CN104461593A (zh) * 2013-09-18 2015-03-25 中兴通讯股份有限公司 差分升级包的制作方法及装置
CN104714819A (zh) * 2013-12-16 2015-06-17 中兴通讯股份有限公司 文件系统升级包制作方法、升级方法及装置、终端

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7971187B2 (en) * 2006-04-24 2011-06-28 Microsoft Corporation Configurable software stack
US9075693B2 (en) * 2012-06-27 2015-07-07 Google Inc. Methods for updating applications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103123588A (zh) * 2013-02-05 2013-05-29 东莞宇龙通信科技有限公司 一种获取差分升级补丁的方法及系统
CN104461593A (zh) * 2013-09-18 2015-03-25 中兴通讯股份有限公司 差分升级包的制作方法及装置
CN104714819A (zh) * 2013-12-16 2015-06-17 中兴通讯股份有限公司 文件系统升级包制作方法、升级方法及装置、终端

Also Published As

Publication number Publication date
CN105740016A (zh) 2016-07-06

Similar Documents

Publication Publication Date Title
CN105740016B (zh) 应用程序的增量发布方法和装置、升级方法和装置
KR102042723B1 (ko) 애플리케이션을 업데이트하는 방법
US8799662B2 (en) Method and apparatus for validating the integrity of installer files prior to installation
CN106648712A (zh) 增量更新包的生成方法、装置和服务器
US9542461B2 (en) Enhancing performance of extract, transform, and load (ETL) jobs
JP2005044360A (ja) データのパッケージ内デルタ圧縮(intra−packetdeltacompression)のためのシステムおよび方法
CN109542461A (zh) 应用安装包的发布方法、终端设备及介质
CN108037946A (zh) 一种应用程序热更新的方法、系统及服务器
CN107239309A (zh) 补丁生成方法及装置、更新方法、电子设备、存储介质
CN109857454B (zh) 安装包生成与缓存方法、装置、电子设备及存储介质
CN106845167A (zh) 一种apk的加固方法和装置,及动态加载方法和装置
WO2020233045A1 (zh) 一种插件更新方法、设备、服务器及计算机可读存储介质
CN112947981A (zh) 应用程序资源更新方法、装置、终端设备及服务器
CN112596720A (zh) 业务运行方法、装置、电子设备和计算机存储介质
CN113972990A (zh) 数据校验方法、装置、存储介质及电子设备
CN113741954A (zh) 系统软件生成方法、装置、电子设备及存储介质
CN109766084B (zh) 支付应用的定制开发方法、装置、计算机设备和存储介质
CN110018994B (zh) 更新文件系统的方法、网络设备及计算机可读存储介质
CN107229655A (zh) 页面静态文件的更新方法、装置及系统
US12061728B2 (en) Content distribution integrity control
KR102574280B1 (ko) 컴퓨팅 디바이스에서 애플리케이션 업데이트를 위한 메모리 효율적인 소프트웨어 패치하기
CN113987471A (zh) 可执行文件执行方法、装置、电子设备和计算机可读介质
WO2024217140A1 (zh) 应用程序更新方法、通信系统及电子设备
CN103336917A (zh) 批量给swf文件添加域锁定的方法和装置
WO2024051465A1 (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