一种差分包生成方法和装置与流程

文档序号:11931924阅读:269来源:国知局
一种差分包生成方法和装置与流程

本发明涉及互联网技术领域,尤其涉及一种差分包生成方法和装置。



背景技术:

终端设备中往往安装有终端设备厂商初始安装在终端设备中的系统软件、应用软件,以及用户在后续使用过程中的安装的多种应用软件。用户在不断的使用过程中,有些软件可能由于开始研发过程中没有发现的漏洞,或者为了满足用户提出的新的功能需求,而需要对旧版本软件进行升级。

目前,有多种软件版本升级方式,其中,空中下载技术(Over the Air Technology,简称OTA)差分包升级方式,因其相比于全包升级等其他升级方式具有占用存储空间小、耗费流量少、升级速度快等优势,被广泛应用。OTA升级是安卓(Android)系统提供的标准软件升级方式。它功能强大,可以无损失升级系统,主要通过网络自动下载OTA升级差分包,自动升级。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

目前,针对旧软件版本A和新软件版本B来说,其差分包的生成方式简单来说是直接使用二进制差分工具BSDiff对旧软件版本A和新软件版本B进行差分处理,得到差分包。但是,由于在进行版本升级时,可能对旧软件版本A中的部分内容并没有做实质修改,只是因为升级到了新软件版本B而使得这部分内容的时间戳发生了改变,比如由旧软件版本A时对应的2015年11月1日变为新软件版本B时对应的2016年11月1日,这些内容构成时间戳文件。但是,在使用二进制差分工具BSDiff对旧软件版本A和新软件版本B进行差分处理时,这些时间戳文件也被认为是差异文件,被包含于生成的差分包中,使得差分包中除了包含待升级文件即发生实质修改的内容外,还包括该不必要的时间戳文件,导致差分包占用更多的存储空间,耗费更多的流量。



技术实现要素:

有鉴于此,本发明实施例提供了一种差分包生成方法和装置,通过保证生成的差分包中仅包含待升级到的软件版本相对于升级前的旧软件版本发生实质改变的内容,以有效降低差分包的大小,节省服务器的存储空间。

一方面,本发明实施例提供了一种差分包生成方法,包括:

获取与第一软件包对应的升级修改记录,所述第一软件包为旧版本的软件包;

根据所述升级修改记录,从所述第一软件包中提取被修改的内容;

将所述被修改的内容存入第二软件包,以获得第三软件包,所述第二软件包为待升级到版本的软件包;

对所述第二软件包和所述第三软件包进行差分处理,以生成用于从所述第一软件包升级到所述第二软件包的差分包。

可选地,所述生成用于从所述第一软件包升级到所述第二软件包的差分包之后,还包括:

接收终端设备发送的升级请求,所述升级请求中包括所述旧版本的版本号;

根据所述旧版本的版本号,确定所述待升级到版本的版本号;

获取与所述旧版本的版本号和所述待升级到版本的版本号对应的所述差分包。

可选地,所述升级请求中还包括用户标识,以及,所述根据所述旧版本的版本号确定所述待升级到版本的版本号,包括:

根据所述用户标识确定所述终端设备的升级步长;

根据所述升级步长和所述旧版本的版本号确定所述待升级到版本的版本号。

可选地,所述获取与第一软件包对应的升级修改记录之前,还包括:

根据所述第二软件包的大小确定是否需要生成所述差分包。

可选地,所述方法还包括:

将所述差分包发送至所述终端设备,以使所述终端设备根据所述差分包对所述第一软件包进行升级。

另一方面,本发明实施例提供了一种差分包生成装置,包括:

第一获取模块,用于获取与第一软件包对应的升级修改记录,所述第一软件包为旧版本的软件包;

提取模块,用于根据所述升级修改记录,从所述第一软件包中提取被修改的内容;

存储模块,用于将所述被修改的内容存入第二软件包,以获得第三软件包,所述第二软件包为待升级到版本的软件包;

生成模块,用于对所述第二软件包和所述第三软件包进行差分处理,以生成用于从所述第一软件包升级到所述第二软件包的差分包。

可选地,该装置还包括:

接收模块,用于接收终端设备发送的升级请求,所述升级请求中包括所述旧版本的版本号;

第一确定模块,用于根据所述旧版本的版本号,确定所述待升级到版本的版本号;

第二获取模块,用于获取与所述旧版本的版本号和所述待升级到版本的版本号对应的所述差分包。

可选地,所述升级请求中还包括用户标识,以及,所述装置还包括:

第二确定模块,用于根据所述用户标识确定所述终端设备的升级步长;

第三确定模块,用于根据所述升级步长和所述旧版本的版本号确定所述待升级到版本的版本号。

可选地,该装置还包括:

第四确定模块,用于根据所述第二软件包的大小确定是否需要生成所述差分包。

可选地,该装置还包括:

发送模块,用于将所述差分包发送至所述终端设备,以使所述终端设备根据所述差分包对所述第一软件包进行升级。

上述技术方案中的一个技术方案具有如下有益效果:

在制作相对于旧版本的升级版本时,形成记录有对旧版本都做了哪些修改的升级修改文件,从而,在生成旧版本对应的第一软件包与升级到版本对应的第二软件包之间的差分包时,首先根据该升级修改记录从第一软件包中提取被修改的内容,之后将被修改的内容存入第二软件包以获得第三软件包,此时第二软件包与第三软件包之间只有待升级文件存在差异,通过对第二软件包和第三软件包进行差分处理便可以生成用于从第一软件包升级到第二软件包的差分包。由于该生成的差分包中仅包含待升级到的软件版本相对于升级前的旧软件版本发生实质改变的内容即仅包含待升级文件,不会含有时间戳文件,从而有效降低差分包的大小,节省了服务器的存储空间,降低了需要耗费的流量。

【附图说明】

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1是本发明实施例所提供的差分包生成方法的实施例一的流程图;

图2是本发明实施例所提供的差分包生成方法的实施例二的流程图;

图3是本发明实施例所提供的差分包生成方法的实施例三的流程图;

图4是本发明实施例所提供的差分包生成装置的实施例一的结构示意图;

图5是本发明实施例所提供的差分包生成装置的实施例二的结构示意图;

图6是本发明实施例所提供的差分包生成装置的实施例三的结构示意图。

【具体实施方式】

为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

图1是本发明实施例所提供的差分包生成方法的实施例一的流程图,本实施例提供的该差分包生成方法可以由一差分包生成装置来执行,该差分包生成装置可以为位于服务器的应用,或者还可以为位于本地终端的应用中的插件或软件开发工具包(Software Development Kit,SDK)等功能单元,本发明实施例对此不进行特别限定。该差分包生成装置可以集成设置在服务器中。如图1所示,该方法包括以下步骤:

S101,获取与第一软件包对应的升级修改记录,第一软件包为旧版本的软件包。

本实施例中,针对某个应用来说,服务器侧存储有该应用对应的所有版本,即存储了所有版本的软件包,比如V1版本、V2版本和V3版本各自对应的软件包。

其中,上述第一软件包可以是上述举例中的V1版本或V2版本的软件包。

在实际研发过程中,假设在将V1版本升级为V2版本时,研发人员基于在升级的过程中其对V1版本的软件包都进行了哪些修改以得到V2版本来生成相应的升级修改记录,该升级修改记录中记录有对V1版本的软件包中的哪些文件、参数等内容进行了修改,以及新增了哪些文件、参数等内容。

其中,该升级修改记录中可以以索引的方式记录都对V1版本软件包中的什么内容进行了修改,该索引可以是存储索引,函数标识索引等。

值得说明的是,当如上述举例中一个应用具有多个版本时,即在生成V3版本后,其前面有两个旧版本,这两个旧版本可能都被不同的用户使用,因此,为了满足所有使用该应用的用户的不同升级需求,当一个新版本生成时,需要针对之前的每个旧版本都生成各自对应的升级修改文件。

以上述举例来说,假设在由V1版本升级到V2时,生成了与V1版本对应的第一升级修改记录,在由V2版本升级到V3版本时,生成了与V2版本对应的第二升级修改记录,则此时,V1版本相对于V3版本而言的升级修改记录可以认为由第一升级修改记录和第二升级修改记录构成。

S102,根据升级修改记录从第一软件包中提取被修改的内容。

S103,将被修改的内容存入第二软件包以获得第三软件包,第二软件包为待升级到版本的软件包。

S104,对第二软件包和第三软件包进行差分处理,以生成用于从第一软件包升级到第二软件包的差分包。

假设第一软件包为V2版本的软件包,第二软件包为V3版本的软件包,为了生成V2版本升级到V3版本所需的差分包,本实施例中,首先根据V2版本对应的升级修改记录,从第一软件包中提取相应的内容,即研发时对该第一软件包实际修改的内容。其次,可以将第二软件包复制出一个副本,将提取出的被修改内容存入该副本软件包中,得到第三软件包。最后,使用二进制比较工具bsdiff对第二软件包和第三软件包进行差分处理,以生成用于从第一软件包升级到第二软件包的差分包。

本实施例中,针对某个应用的所有版本来说,在服务器发布最新版本时,需要基于上述过程生成所有之前的旧版本相对于该最新版本的差分包,以满足不同的升级需求。

以上述举例来说,当前已经发布了V1和V2两个版本,当需要发布V3版本时,服务器需要生成以下差分包:

V1版本升级到V3版本的差分包;

V2版本升级到V3版本的差分包。

本实施例中,在制作相对于旧版本的升级版本时,形成记录有对旧版本都做了哪些修改的升级修改文件,从而,在生成旧版本对应的第一软件包与升级到版本对应的第二软件包之间的差分包时,首先根据该升级修改记录从第一软件包中提取被修改的内容,之后将被修改的内容存入第二软件包以获得第三软件包,此时第二软件包与第三软件包之间只有待升级文件存在差异,通过对第二软件包和第三软件包进行差分处理便可以生成用于从第一软件包升级到第二软件包的差分包。由于该生成的差分包中仅包含待升级到的软件版本相对于升级前的旧软件版本发生实质改变的内容即仅包含待升级文件,不会含有时间戳文件,从而有效降低差分包的大小,节省了服务器的存储空间,降低了需要耗费的流量。

前述实施例中仅以服务器侧生成任一旧版本升级到某一新版本时所需的差分包的过程进行了说明,在实际应用过程中,该差分包是用于用户进行软件版本的升级处理之用的,那么用户是如何进行升级的呢,下面结合图2所示实施例来说明。

图2是本发明实施例所提供的差分包生成方法的实施例二的流程图,如图2所示,在图1所示实施例基础上,可选地,步骤S101之前还可以包括如下步骤:

S201,根据第二软件包的大小确定是否需要生成差分包,若需要,则执行步骤S101。

本实施例中,差分包的升级方式一般用于比较大的应用程序,因此,如果当前待升级到版本的第二软件包比较小,则可以直接以全包升级的方式进行升级即可,如果该第二软件包比较大,才确定需要以差分包方式升级,从而生成对应的差分包。

另外,步骤S104之后,还可以包括如下步骤:

S202,接收终端设备发送的升级请求,升级请求中包括旧版本的版本号。

实际应用中,当服务器侧发布某个应用的新版本时,会向安装有该应用的终端设备发送升级提醒消息,如果用户响应于该升级提醒消息而触发升级时,终端设备会向服务器发送升级请求,该升级请求中包含有当前终端设备中安装的该应用的版本号,称为旧版本的版本号。

该触发升级请求的方式仅为举例,实际应用中,比如还可以是用户不基于上述升级提醒消息而主动触发了升级请求。

S203,根据旧版本的版本号确定待升级到版本的版本号。

实际应用中,可选地,服务器可以基于一定的升级策略结合当前该终端设备对应的旧版本的版本号确定其待升级到版本的版本号。比如,该升级策略是只能升级到比当前的就版本高一级的版本,或者最新版本。

可选地,服务器向终端设备发送的上述升级提醒消息中还可以携带有某个版本的版本号,上述升级请求中直接包含从该升级提醒消息中提取出的该版本号以及旧版本的版本号,此时,服务器直接从升级请求中获知该终端设备想要从哪个版本升级到哪个版本。

S204,获取与旧版本的版本号和待升级到版本的版本号对应的差分包。

由于已经预先已经基于图1所示实施例的方法生成了该差分包,可以基于上述两个版本号查询获得对应的差分包。

S205,将差分包发送至终端设备,以使终端设备根据差分包对第一软件包进行升级。

本实施例中,在进行差分包生成之前,基于新版本的软件包的大小来确定是否需要差分包,避免在不适宜使用差分包方式升级的情况下还生成差分包造成的计算等处理资源的浪费。

图3是本发明实施例所提供的差分包生成方法的实施例三的流程图,如图3所示,在图2所示实施例基础上,替换上述步骤S202和S202所示的待升级到版本的版本号的确定方式,还可以通过如下步骤所示意的方式实现:

S301,接收终端设备发送的升级请求,升级请求中包括旧版本的版本号和用户标识。

本实施例中,该升级请求中除了当前安装的某个应用程序的旧版本的版本号外,还可以进一步包含用户标识,该用户标识可以是用户在注册该应用程序时的注册账号。

S302,根据用户标识确定终端设备的升级步长,根据升级步长和旧版本的版本号确定待升级到版本的版本号。

本实施例中,该用户标识的作用主要是针对不同用户进行差异化升级权限的制定。举例来说,服务器可以统计获得各个用户对该应用程序的使用频繁程度,对于使用程度比较频繁的用户,可以允许其直接升级到最新版本,而对于使用程度不太频繁的用户,比如只允许其升级到比当前使用版本高一级的版本。具体地,频繁程度比如可以通过监测用户自安装该应用程序之日起的应用开启次数与总天数的商确定,该确定方式仅为举例,不以此为限。

另外,可以预先划定几个频繁程度区间,每个频繁程度区间对应于一种升级步长,针对当前的终端设备来说,基于其用户标识确定该用户对应的使用频繁程度,根据该频繁程度位于的区间确定升级步长,从而确定待升级到版本的版本号为当前的旧版本号+升级步长,比如当前的旧版本为V1,步长为2,则确定待升级到的版本为V3。

本实施例中,基于用户标识确定用户对其所需升级应用程序的使用频繁程度,以基于使用频繁程度确定可升级到的版本,从而实现了对不同用户的差异化升级控制,提高了软件版本升级的灵活性。

本发明实施例进一步给出实现上述方法实施例中各步骤及方法的差分包生成装置的实施例。

图4是本发明实施例所提供的差分包生成装置的实施例一的结构示意图,如图4所示,该装置包括:第一获取模块11、提取模块12、存储模块13、生成模块14。

其中,第一获取模块11,用于获取与第一软件包对应的升级修改记录,所述第一软件包为旧版本的软件包。

提取模块12,用于根据所述升级修改记录,从所述第一软件包中提取被修改的内容。

存储模块13,用于将所述被修改的内容存入第二软件包,以获得第三软件包,所述第二软件包为待升级到版本的软件包。

生成模块14,用于对所述第二软件包和所述第三软件包进行差分处理,以生成用于从所述第一软件包升级到所述第二软件包的差分包。

由于本实施例中的各模块能够执行图1所示实施例中的方法,并获得相同的技术效果,本实施例未详细描述的部分,可参考对图1的相关说明。

图5是本发明实施例所提供的差分包生成装置的实施例二的结构示意图,如图5所示,在图4所示实施例的基础上,该装置还包括:第一确定模块21、接收模块22、第二确定模块23,第二获取模块24、发送模块25。

其中,第一确定模块21,用于根据所述第二软件包的大小确定是否需要生成所述差分包。

接收模块22,用于接收终端设备发送的升级请求,所述升级请求中包括所述旧版本的版本号;

第二确定模块23,用于根据所述旧版本的版本号,确定所述待升级到版本的版本号;

第二获取模块24,用于获取与所述旧版本的版本号和所述待升级到版本的版本号对应的所述差分包。

发送模块25,用于将所述差分包发送至所述终端设备,以使所述终端设备根据所述差分包对所述第一软件包进行升级。

由于本实施例中的各模块能够执行图2所示实施例中的方法,并获得相同的技术效果,本实施例未详细描述的部分,可参考对图2的相关说明。

图6是本发明实施例所提供的差分包生成装置的实施例三的结构示意图,如图6所示,在图5所示实施例基础上,所述升级请求中还包括用户标识,以及,第二确定模块23包括:第一确定单元231、第二确定单元232。

其中,第一确定单元231,用于根据所述用户标识确定所述终端设备的升级步长。

第二确定单元232,用于根据所述升级步长和所述旧版本的版本号确定所述待升级到版本的版本号。

由于本实施例中的各模块能够执行图3所示实施例中的方法,并获得相同的技术效果,本实施例未详细描述的部分,可参考对图3的相关说明。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(Processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1