软件升级方法和软件升级装置与流程

文档序号:17238541发布日期:2019-03-30 08:28阅读:207来源:国知局
软件升级方法和软件升级装置与流程

本发明涉及软件升级技术领域,具体涉及一种软件升级方法和软件升级装置。



背景技术:

空中固件升级(FOTA,Firmware Over The Air)是智能终端系统(例如Android系统)目前主流的升级方式,智能终端和服务器通过网络交互传递升级包,完成智能终端系统的升级。

如图1所示为典型的FOTA模型,主机将升级包源代码编译成升级包后上传到服务器,智能终端通过和服务器建立连接,下载需要的升级包进行升级。

目前存在全量升级和增量升级两种升级方法,全量升级通过全量升级包进行升级,全量升级包是针对所有文件的升级,因此需要将智能终端系统全部删除(即格式化)再重新升级;增量升级通过增量升级包进行升级,增量升级包需要针对指定历史版本来升级,只升级差异部分,不对无差异部分做修改。

上述两种升级方式均存在一定的弊端:由于全量升级需要在升级之前先格式化分区内的文件,再将全量升级包内的文件全部复制过去,因此,这种升级方法的升级失败风险大,一旦升级过程出现问题,原文件被破坏了,智能终端系统难以修复;而增量升级在制作增量升级包时只做和上次版本有差异的升级文件,对历史版本软件依赖程度大,在制作增量升级包时需要和历史版本软件包进行对比和差分处理,制作过程复杂,且当发布的版本较多时,增量升级包的总数量将会非常庞大,使得增量升级包的管理难度增大。



技术实现要素:

本发明提供一种软件升级方法和软件升级装置,用于降低软件包制作难度,提高软件升级的安全性。

本发明一方面提供一种软件升级方法,包括:

获取用于升级软件系统的全量升级包;

遍历上述全量升级包中的文件,将上述全量升级包中的未存在于上述软件系统的文件拷贝到上述软件系统中,将上述软件系统中的第一文件替换为上述全量升级包中的第二文件,其中,上述第一文件和上述第二文件具有相同的文件名和不同的文件内容;

删除存在于上述软件系统且未存在于上述全量升级包的所有文件。

本发明另一方面提供一种软件升级装置,包括:

获取单元,用于获取用于升级软件系统的全量升级包;

遍历处理单元,用于遍历上述全量升级包中的文件,将上述全量升级包中的未存在于上述软件系统的文件拷贝到上述软件系统中,将上述软件系统中的第一文件替换为上述全量升级包中的第二文件,其中,上述第一文件和上述第二文件具有相同的文件名和不同的文件内容;

删除单元,用于删除存在于上述软件系统且未存在于上述全量升级包的所有文件。

由上可见,本发明中在使用全量升级包对软件系统进行升级过程中,将全量升级包中未存在与软件系统中的文件(即新增文件)拷贝到软件系统中,将软件系统中的第一文件替换为全量升级包中的第二文件(即对软件系统中需要修改的文件进行升级),并删除存在于软件系统且未存在于全量升级包的所有文件(即删除升级后软件系统中不需要的文件),从而实现了增量升级的效果,一方面,由于本发明使用全量升级包对软件系统进行升级时不对软件系统进行格式化处理,因此不会破坏原软件系统,即使升级失败也不会影响到该软件系统的正常启动,提高了软件升级的安全性;另一方面,本发明实现了通过全量升级包达到增量升级的效果,因此,在需要制作升级包时,只需制作全量升级包即可,无需再制作基于历史版本软件的增量升级包,从而极大降低了软件包的制作难度。

附图说明

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

图1为本发明提供的一种软件升级方法一个实施例流程示意图;

图2为本发明提供的一种软件升级方法另一个实施例流程示意图

图3为本发明提供的一种软件升级装置一个实施例结构示意图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面对本发明实施例中的一种软件升级方法进行描述,请参阅图1,本发明实施例中的软件升级方法包括:

101、获取用于升级软件系统的全量升级包;

本发明实施例中,全量升级包是针对所有文件的升级而制作的升级包。上述软件系统包括但不限于终端的操作系统、终端上已安装的应用软件系统。

可选的,软件升级装置周期性或事件性(例如用户触发软件系统的升级)向服务器发送升级软件系统的请求消息,以便服务器接收该请求消息并在该请求消息的指示下向软件升级装置反馈用于升级该软件系统的全量升级包,软件升级装置接收服务器反馈的全量升级包,从而实现对全量升级包的获取。具体地,软件升级装置集成与终端中,软件升级装置在终端的软件系统操作界面中提供该软件系统的升级包下载控件,用户通过该升级下载控件触发软件升级装置向服务器发送上述升级软件系统的请求消息。当然,也可以由服务器在新的全量升级包出现时,主动向软件升级装置推送该全量升级包;或者,软件升级装置也可以从外部终端或软件升级装置的本地磁盘上获取用于升级软件系统的全量升级包,本发明实施例不对软件升级装置获取用于升级软件系统的全量升级包的具体方式进行限定。

102、遍历上述全量升级包中的文件,将上述全量升级包中的未存在于上述软件系统的文件拷贝到上述软件系统中,将上述软件系统中的第一文件替换为上述全量升级包中的第二文件;

其中,上述第一文件和上述第二文件具有相同的文件名和不同的文件内容。

本发明实施例中,软件升级装置遍历上述全量升级包中的文件,并针对每一个遍历的文件进行如下处理:判断当前遍历的文件是否存在于上述软件系统中(即判断软件系统中是否存在与当前遍历的文件同名的文件),若判断出当前遍历的文件未存在于上述软件系统中,则将当前遍历的文件拷贝到上述软件系统中,之后遍历上述全量升级包中的下一个文件;若判断出当前遍历的文件存在于上述软件系统中,则使用当前遍历的文件覆盖软件系统中与当前遍历的文件同名的文件,之后遍历上述全量升级包中的下一个文件;或者,可选地,若判断出当前遍历的文件存在于上述软件系统中,则进一步判断当前遍历的文件(为便于描述,下面将当前遍历的文件描述为文件A)与存在于上述软件系统的同名文件(即上述软件系统中与当前遍历的文件同名的文件,为便于描述,下面将此文件描述为文件B)的文件内容是否相同,若文件内容不相同,则将文件B(即上述第一文件)替换为文件A(上述第二文件),之后遍历全量升级包中的下一个文件;若相同,则直接遍历上述全量升级包中的下一个文件。进一步,软件升级装置在判断文件A与文件B的文件内容是否相同时,可以获取文件A与文件B的sha1值(即哈希值)并进行比较,若文件A与文件B的sha1值不同,则表明文件A与文件B的文件内容不同,将文件B(即上述第一文件)替换为文件A(上述第二文件),之后遍历上述全量升级包中的下一个文件,若文件A与文件B的sha1值相同,则表明文件A与文件B的文件内容相同,直接遍历上述全量升级包中的下一个文件。当然,本发明实施例也可以通过其它方式判断文件A与文件B的文件内容是否相同时,例如还可以获取文件A与文件B的MD5(即消息摘要算法第五版)值并进行比较,当文件A与文件B的MD5值不同时,则表明文件A与文件B的文件内容不同,当文件A与文件B的MD5值相同时,则表明文件A与文件B的文件内容相同。具体的,获取文件的sha1值或MD5值的方式可以参照已有技术实现,此处不再赘述。

可选地,软件升级装置将已遍历的文件记录在已遍历文件列表中。

103、删除存在于上述软件系统且未存在于上述全量升级包的所有文件;

本发明实施例中,软件升级装置在步骤102遍历完成后,比较上述软件系统和上述全量升级包中的文件,找出存在于上述软件系统且未存在于上述全量升级包的所有文件并删除。

可选的,在步骤102中,软件升级装置每遍历完一个文件,将已遍历的文件记录在已遍历文件列表(例如将已遍历的文件的文件名记录在已遍历列表中),在步骤102遍历完成后,删除上述软件系统中的未记录在上述已遍历文件列表中的文件。

当执行完上述步骤101~103后,即完成了对上述软件系统的升级,可选的,在完成对上述软件系统的升级后,软件升级装置输出指示上述软件系统升级完成的提醒消息,以便用户获知上述软件系统已完成升级。

需要说明的是,本发明实施例中的软件升级装置可以集成在终端中,上述终端具体可以为智能手机、平板电脑、笔记本和智能电视等,或者,本发明实施例中的软件升级装置也可以为独立于终端,且能够与终端进行通讯的装置,此处不作限定。

由上可见,本发明中在使用全量升级包对软件系统进行升级过程中,将全量升级包中未存在与软件系统中的文件(即新增文件)拷贝到软件系统中,将软件系统中的第一文件替换为全量升级包中的第二文件(即对软件系统中需要修改的文件进行升级),并删除存在于软件系统且未存在于全量升级包的所有文件(即删除升级后软件系统中不需要的文件),从而实现了增量升级的效果,一方面,由于本发明使用全量升级包对软件系统进行升级时不对软件系统进行格式化处理,因此不会破坏原软件系统,即使升级失败也不会影响到该软件系统的正常启动,提高了软件升级的安全性;另一方面,本发明实现了通过全量升级包达到增量升级的效果,因此,在需要制作升级包时,只需制作全量升级包即可,无需再制作基于历史版本软件的增量升级包,从而极大降低了软件包的制作难度。

下面以另一实施例对本发明实施例中的软件升级方法进行描述,请参阅图2,本发明实施例中的软件升级方法包括:

201、获取用于升级软件系统的全量升级包;

本发明实施例中,全量升级包是针对所有文件的升级而制作的升级包。上述软件系统包括但不限于终端的操作系统、终端上已安装的应用软件系统。

可选的,软件升级装置周期性或事件性(例如用户触发软件系统的升级)向服务器发送升级软件系统的请求消息,以便服务器接收该请求消息并在该请求消息的指示下向软件升级装置反馈用于升级该软件系统的全量升级包,软件升级装置接收服务器反馈的全量升级包,从而实现对全量升级包的获取。具体地,软件升级装置集成与终端中,软件升级装置在终端的软件系统操作界面中提供该软件系统的升级包下载控件,用户通过该升级下载控件触发软件升级装置向服务器发送上述升级软件系统的请求消息。当然,也可以由服务器在新的全量升级包出现时,主动向软件升级装置推送该全量升级包;或者,软件升级装置也可以从外部终端或软件升级装置的本地磁盘上获取用于升级软件系统的全量升级包,本发明实施例不对软件升级装置获取用于升级软件系统的全量升级包的具体方式进行限定。

202、读取上述全量升级包中的首个文件作为当前遍历的文件。

203、判断当前遍历的文件是否存在于上述软件系统中;

本发明实施例中,软件升级装置通过判断上述软件系统中是否存在与当前遍历的文件同名的文件来判断当前遍历的文件是否存在于上述软件系统中,当判断出上述软件系统中不存在与当前遍历的文件同名的文件时,判定当前遍历的文件不存在于上述软件系统中,执行步骤204,当判断出上述软件系统中存在与当前遍历的文件同名的文件时,判定当前遍历的文件存在于上述软件系统中,执行步骤205。

204、将当前遍历的文件拷贝到上述软件系统中;

软件升级装置将当前遍历的文件拷贝到上述软件系统中,之后进入步骤207。

205、判断当前遍历的文件与存在于上述软件系统中的同名文件的文件内容是否一致;

软件升级装置判断当前遍历的文件(为便于描述,下面以文件A指代此文件)与存在于上述软件系统中的同名文件(即上述软件系统中与当前遍历的文件同名的文件,为便于描述,下面以文件B指代此文件)的文件内容是否一致,若一致,则进入步骤207,若不一致,则进入步骤206。

可选的,软件升级装置获取文件A与文件B的sha1值(即哈希值)并进行比较,若文件A与文件B的sha1值不相同,则判定文件A与文件B的文件内容不一致,进入步骤206;若文件A与文件B的sha1值相同,则判断文件A与文件B的文件内容一致,进入步骤207。当然,本发明实施例也可以通过其它方式判断文件A与文件B的文件内容是否相同时,例如还可以获取文件A与文件B的MD5(即消息摘要算法第五版)值并进行比较,当文件A与文件B的MD5值不同时,则表明文件A与文件B的文件内容不一致;当文件A与文件B的MD5值相同时,则表明文件A与文件B的文件内容一致。具体的,获取文件的sha1值或MD5值的方式可以参照已有技术实现,此处不再赘述。

206、使用当前遍历的文件替换存在于上述软件系统中的同名文件;

本发明实施例中,当判断当前遍历的文件与存在于上述软件系统中的同名文件的文件内容不一致时,使用当前遍历的文件替换存在于上述软件系统中的同名文件,即,将文件B替换为文件A。

207、将当前遍历的文件记录在已遍历文件列表中;

本发明实施例中,将当前遍历的文件名记录在已遍历文件列表中。

208、判断当前遍历的文件是否为上述全量升级包中的最后一个文件;

软件升级装置判断当前遍历的文件是否为上述全量升级包中的最后一个文件,若当前遍历的文件不为上述全量升级包中的最后一个文件,则进入步骤209,若当前遍历的文件为上述全量升级包中的最后一个文件,则进入步骤210。

209、读取上述全量升级包中的下一个文件作为当前遍历的文件,返回步骤203。

210、删除上述软件系统中的未记录在上述已遍历文件列表中的文件。

本发明实施例中,当步骤210执行完后,即完成了对上述软件系统的升级,可选的,在完成对上述软件系统的升级后,软件升级装置输出指示上述软件系统升级完成的提醒消息,以便用户获知上述软件系统已完成升级。

需要说明的是,本发明实施例中的软件升级装置可以集成在终端中,上述终端具体可以为智能手机、平板电脑、笔记本和智能电视等,或者,本发明实施例中的软件升级装置也可以为独立于终端,且能够与终端进行通讯的装置,此处不作限定。

由上可见,本发明中在使用全量升级包对软件系统进行升级过程中,将全量升级包中未存在与软件系统中的文件(即新增文件)拷贝到软件系统中,将软件系统中的第一文件替换为全量升级包中的第二文件(即对软件系统中需要修改的文件进行升级),并删除存在于软件系统且未存在于全量升级包的所有文件(即删除升级后软件系统中不需要的文件),从而实现了增量升级的效果,一方面,由于本发明使用全量升级包对软件系统进行升级时不对软件系统进行格式化处理,因此不会破坏原软件系统,即使升级失败也不会影响到该软件系统的正常启动,提高了软件升级的安全性;另一方面,本发明实现了通过全量升级包达到增量升级的效果,因此,在需要制作升级包时,只需制作全量升级包即可,无需再制作基于历史版本软件的增量升级包,从而极大降低了软件包的制作难度。

本发明实施例还提供一种软件升级装置,如图3所示,本发明实施例中的软件升级装置300包括:

获取单元301,用于获取用于升级软件系统的全量升级包;

遍历处理单元302,用于遍历上述全量升级包中的文件,将上述全量升级包中的未存在于上述软件系统的文件拷贝到上述软件系统中,将上述软件系统中的第一文件替换为上述全量升级包中的第二文件,其中,上述第一文件和上述第二文件具有相同的文件名和不同的文件内容;

删除单元303,用于删除存在于上述软件系统且未存在于上述全量升级包的所有文件。

可选的,遍历处理单元302包括:子获取单元,用于在当前遍历的文件与上述软件系统中的一文件的文件名相同时,分别获取上述文件名相同的两个文件的sha1值;比较单元,用于比较上述两个文件的sha1值;确定单元,用于当上述比较单元比较出上述两个文件的sha1值不相同时,将上述当前遍历的文件确定为上述第二文件,并将上述软件系统中与上述当前遍历的文件同名的文件确定为上述第一文件。

可选的,遍历处理单元302包括:记录单元,用于将上述全量升级包中已遍历的文件记录在已遍历文件列表中;删除单元303具体用于:当上述遍历处理单元完成对上述全量升级包中的所有文件的遍历后,删除上述软件系统中的未记录在上述已遍历文件列表中的文件。

可选的,获取单元301包括:发送单元,用于向服务器发送升级上述软件系统的请求消息;接收单元,用于接收上述服务器在上述请求消息的指示下反馈的全量升级包。

可选的,本发明实施例中的软件升级装置还包括:输出单元,用于在完成对上述软件系统的升级后,输出指示上述软件系统升级完成的提醒消息。

需要说明的是,本发明实施例中的软件升级装置可以集成在终端中,上述终端具体可以为智能手机、平板电脑、笔记本和智能电视等,或者,本发明实施例中的软件升级装置也可以为独立于终端,且能够与终端进行通讯的装置,此处不作限定。应理解,本发明实施例中的软件升级装置可以如上述方法实施例中的软件升级装置,可以用于实现上述方法实施例中的全部技术方案,其具体实现过程可参照上述方法实施例中的相关描述,此处不再赘述。

由上可见,本发明中在使用全量升级包对软件系统进行升级过程中,将全量升级包中未存在与软件系统中的文件(即新增文件)拷贝到软件系统中,将软件系统中的第一文件替换为全量升级包中的第二文件(即对软件系统中需要修改的文件进行升级),并删除存在于软件系统且未存在于全量升级包的所有文件(即删除升级后软件系统中不需要的文件),从而实现了增量升级的效果,一方面,由于本发明使用全量升级包对软件系统进行升级时不对软件系统进行格式化处理,因此不会破坏原软件系统,即使升级失败也不会影响到该软件系统的正常启动,提高了软件升级的安全性;另一方面,本发明实现了通过全量升级包达到增量升级的效果,因此,在需要制作升级包时,只需制作全量升级包即可,无需再制作基于历史版本软件的增量升级包,从而极大降低了软件包的制作难度。

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

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本发明所提供的一种软件升级方法和软件升级装置的描述,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

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