2024年5月3日发(作者:)

(19)中华人民共和国国家知识产权局

(12)发明专利说明书

(21)申请号 CN2.X

(22)申请日 2013.09.13

(71)申请人 惠州TCL移动通信有限公司

地址 516006 广东省惠州市仲恺高新区惠风四路70号

(72)发明人 邓铁军

(74)专利代理机构 深圳市君胜知识产权代理事务所

代理人 王永文

(51)

G06F9/445

权利要求说明书 说明书 幅图

(10)申请公布号 CN 103473099 A

(43)申请公布日 2013.12.25

(54)发明名称

(57)摘要

本发明公开了一种移动终端的软件

一种移动终端的软件升级方法和系

升级方法和系统,所述方法通过分别找出

新版本软件和旧版本软件的分区表,生成

相应的备份列表;扫描新版本软件的所有

文件,生成包含所述新版本软件分区表和

备份列表的差分升级包;根据所述备份列

表,将移动终端内需要备份的备份数据存

储到SD卡中,并根据所述差分升级包的

新版本软件分区表将移动终端存储器重新

分区,将SD卡上的备份数据对应写入分

区;解压缩所述差分升级包,得到相应的

差别文件,根据所述差别文件和移动终端

内的旧版本文件,生成相应的新版本文

件,并写入移动终端,从而完成升级,使

得移动终端在软件升级时需要改动存储器

分区表的情况下也能升级,为用户带来大

大的方便。

法律状态

法律状态公告日

法律状态信息

法律状态

权 利 要 求 说 明 书

1.一种移动终端的软件升级方法,其特征在于,包括以下步骤:

A、根据新版本软件和旧版本软件,分别找出新版本软件和旧版本软件的分区表,

对比新旧分区表的差异,生成相应的备份列表;

B、扫描新版本软件的所有文件,生成包含所述新版本软件分区表和备份列表的差

分升级包;

C、根据所述差分升级包内的备份列表,检测移动终端内需要备份的备份数据总量,

将所述备份数据总量与移动终端的SD卡的剩余空间进行对比,当所述备份数据总

量小于移动终端的SD卡的剩余空间时,进入步骤D;

D、根据所述备份列表,将移动终端内需要备份的备份数据存储到SD卡中,并根

据所述差分升级包的新版本软件分区表将移动终端存储器重新分区,检测分区类型,

将SD卡上的备份数据对应写入分区;

E、解压缩所述差分升级包,得到相应的差别文件,根据所述差别文件和移动终端

内的旧版本文件,生成相应的新版本文件,并写入移动终端完成升级。

2.根据权利要求1所述的移动终端的软件升级方法,其特征在于,所述步骤A具体

包括:

A1、根据新版本软件和旧版本软件,分别得到新版本软件和旧版本软件的分区表;

A2、遍历新版本分区表,若没有完成遍历,则进入步骤A3;若完成遍历,则结束;

A3、在新分区表中取出一项,并在旧分区表中查找是否有相同名字的分区,若是,

则进入步骤A4;若否,跳至步骤A2;

A4、检查新旧分区的大小和起始地址是否都一致,若是,跳至步骤A2,若否,则

进入步骤A5;

A5、检查分区的类型,在备份列表里增加一个描述项,描述该分区的名字和类型,

返回步骤A2。

3.根据权利要求1所述的移动终端的软件升级方法,其特征在于,所述步骤B具体

包括:

B1、扫描新版本和旧版本软件包的所有文件,分别得到相应的文件列表;

B2、遍历新版本分区表,若没有完成遍历,则进入步骤B3;若完成遍历,则将新

版本分区表加入差分升级包,并结束;

B3、在新版本文件列表中取出一项,并在旧版本文件列表中查找是否有文件名相

同的文件,若无,则使用逐字方式将新版本文件加入差分升级包,并跳至步骤B2;

若有,则继续步骤B4;

B4、在差异包比较工具中,将新旧版本的文件作为输入,生成差别文件,并在差

别文件中增加相应的描述项,返回步骤B2。

4.根据权利要求1所述的移动终端的软件升级方法,其特征在于,所述步骤C具体

包括:

C1、检查移动终端是否有SD卡,若是,则进入步骤C2,若否,则报告错误,结

束;

C2、从差分升级包里得到备份列表,从移动终端存储器里读出现有分区表,遍历

备份列表,若没有完成遍历,则进入步骤C3;若完成遍历,则进入步骤C4;

C3、在备份列表中取出一项,并在现有分区表中找到对应的分区,检查分区类型,

如果是原始数据类型分区,将分区大小累加至备份数据总量;如果是文件系统类型

分区,将分区内所有文件总大小累加至备份数据总量;返回步骤C2直至完成遍历;

C4、检查移动终端的SD卡剩余空间大小,如果比备份数据总量大,则进入步骤D;

否则报告错误,并结束。

5.根据权利要求1所述的移动终端的软件升级方法,其特征在于,所述步骤D具体

包括:

D1、从差分升级包里得到备份列表,从移动终端存储器里读出现有分区表,遍历

备份列表,若没有完成遍历,则进入步骤D2;若完成遍历,则进入步骤D3;

D2、在备份列表中取出一项,并在现有分区表中找到对应的分区,检查分区类型,

如果是原始数据类型分区,读出整个分区的数据,把这些数据存储为SD卡上的一

个文件;如果是文件系统类型分区,使用TAR 文件格式将分区里面的文件打包成

一个文件,并将这个文件存储到SD卡上;返回步骤D1直至完成遍历;

D3、从差分升级包里得到新的分区表,按照新的分区表将移动终端存储器重新分

区,遍历备份列表,若没有完成遍历,则进入步骤D4;若完成遍历,则结束;

D4、在备份列表中取出一项,并在新的分区表中找到对应的分区,检查分区类型,

如果是原始数据类型分区,将备份在SD卡上的对应文件写入分区;如果是文件系

统类型分区,解压备份在SD卡上的对应TAR文件,将TAR 文件里的各个文件写

入分区,返回步骤D3直至完成遍历。

6.根据权利要求1所述的移动终端的软件升级方法,其特征在于,所述步骤E具体

包括:

E1、解压缩差分升级包,得到相应的差别文件和差别文件列表,遍历差别文件列

表,若没有完成遍历,则进入步骤E2;若完成遍历,则结束;

E2、在差别文件列表中取出一项,根据所述差别文件和移动终端内的旧版本文件,

生成相应的新版本文件,并写入移动终端,返回步骤E1直至完成遍历。

7.一种移动终端的软件升级系统,其特征在于,包括:

备份列表生成模块,用于根据新版本软件和旧版本软件,分别找出新版本软件和旧

版本软件的分区表,对比新旧分区表的差异,生成相应的备份列表;

差分升级包生成模块,用于扫描新版本软件的所有文件,生成包含所述新版本软件

分区表和备份列表的差分升级包;

容量检测模块,用于根据所述差分升级包内的备份列表,检测移动终端内需要备份

的备份数据总量,将所述备份数据总量与移动终端的SD卡的剩余空间对比;

数据备份及恢复模块,用于根据所述备份列表,将移动终端内需要备份的备份数据

存储到SD卡中,并根据所述差分升级包的新版本软件分区表将移动终端存储器重

新分区,检测分区类型,将SD卡上的备份数据对应写入分区;

升级模块,用于解压缩所述差分升级包,得到相应的差别文件,根据所述差别文件

和移动终端内的旧版本文件,生成相应的新版本文件,并写入移动终端完成升级。

8.根据权利要求7所述的移动终端的软件升级系统,其特征在于,所述备份列表生

成模块具体包括:

分区表获取单元,用于根据新版本软件和旧版本软件,分别得到新版本软件和旧版

本软件的分区表;

分区表遍历单元,用于遍历新版本分区表;

名字对比单元,用于在新分区表中取出一项,并在旧分区表中查找是否有相同名字

的分区;

大小和起始地址对比单元,用于检查新旧分区的大小和起始地址是否都一致;

备份表修改单元,用于检查分区的类型,在备份列表里增加一个描述项,描述该分

区的名字和类型。

9.根据权利要求7所述的移动终端的软件升级系统,其特征在于,所述容量检测模

块具体包括:

SD卡检测单元,用于检查移动终端是否有SD卡;

第一备份列表遍历单元,用于从差分升级包里得到备份列表,从移动终端存储器里

读出现有分区表,遍历备份列表;

备份数据总量计算单元,用于在备份列表中取出一项,并在现有分区表中找到对应

的分区,检查分区类型,如果是原始数据类型分区,将分区大小累加至备份数据总

量;如果是文件系统类型分区,将分区内所有文件总大小累加至备份数据总量;

容量对比单元,用于检查移动终端的SD卡剩余空间大小,并将所述备份数据总量

与移动终端的SD卡的剩余空间进行对比。

10.根据权利要求7所述的移动终端的软件升级系统,其特征在于,所述数据备份

及恢复模块具体包括:

第二备份列表遍历单元,用于从差分升级包里得到备份列表,从移动终端存储器里

读出现有分区表,遍历备份列表;

数据备份单元,用于在备份列表中取出一项,并在现有分区表中找到对应的分区,

检查分区类型,如果是原始数据类型分区,读出整个分区的数据,把这些数据存储

为SD卡上的一个文件;如果是文件系统类型分区,使用TAR 文件格式将分区里

面的文件打包成一个文件,并将这个文件存储到SD卡上;

第三备份列表遍历单元,用于从差分升级包里得到新的分区表,按照新的分区表将

移动终端存储器重新分区,遍历备份列表;

数据恢复单元,用于在备份列表中取出一项,并在新的分区表中找到对应的分区,

检查分区类型,如果是原始数据类型分区,将备份在SD卡上的对应文件写入分区;

如果是文件系统类型分区,解压备份在SD卡上的对应TAR文件,将TAR 文件里

的各个文件写入分区。

说 明 书

技术领域

本发明涉及移动终端领域,尤其涉及的是一种移动终端的软件升级方法和系统。

背景技术

现有的智能手机,譬如采用Android系统的手机,经常会有软件升级的需求。一般

情况下,都会使用FOTA升级(Firmware Over-The-Air,空中下载软件升级)。

FOTA升级是一种简单而友好的升级方法,几乎不需要用户做什么操作,就可以使

手机软件升级到最新版本。但是在目前智能手机快速发展的态势下,往往会出现因

为软件版本升级(或者软件需求变更)需要修改手机机内存储器分区表的情况。而

现有的FOTA机制无法处理这类情况。

具体来说,在移动终端领域以及整个嵌入式领域,以手机为例,存储介质一般有两

大类,一是手机机内存储器,通常为NAND或者EMMC,它是手机的核心存储空

间;二是扩展存储器,通常为SD卡。手机存储器分区(以下所说分区,特指手机

机内存储器分区,所说分区表,特指手机机内存储器分区表)有两种类型。一种是

原始数据(raw data)类型,即按照原始数据流的方式读写数据,这类的分区有

bootloader,kernel等。另外一种类型是文件系统(filesystem)类型。此处说的文

件,即计算机文件,指的是一些数据的集合。一个文件就代表了一份数据。在这类

分区里面,会部署一个文件系统(如EXT4或者FAT)来管理各个文件。如果我

们需要读写某一个文件,就要遵守文件系统的读写方式来读写。在典型的手机设备

上,系统分区(system)和用户数据分区(userdata)都属于这种类型。形象的说,

文件系统类型分区就像是一本有目录的书,这些目录就是分区里面的关于文件列表,

文件属性,文件大小的元数据(META data)。而原始数据类型分区就像一本没有

目录的书。根据手机(嵌入式)领域的实际情况,可以简单的总结为:原始数据类

型分区可以存储一个文件,文件系统类型分区可以存储多个文件。如上所述,各个

分区都有约定俗成的类型,所以分区类型一般不会改变。

但是在目前智能手机快速发展的态势下,往往会出现因为软件版本升级(或者软件

需求变更)需要修改手机机内存储器分区表的情况,分区表的改变包含分区起始地

址的改变和大小的改变,这种分区起始地址的改变和大小的改变对于文件系统类型

分区是致命的,因为这种改变极有可能破坏元数据。一旦元数据被破坏,分区里面

的某一些文件就会不能读写。虽然原始数据类型分区里面没有元数据,但是这种改

变仍然有可能破坏分区中的数据。并且FOTA机制是基于文件差分算法的,它的

操作都是文件操作。在文件损坏的情况下,FOTA操作肯定会失败。而现有的

FOTA机制并没有针对“新旧版本软件机内存储器分区表改变”的相关措施,所以现

有的FOTA机制无法处理这类情况。由于现有FOTA升级方法无法处理这种情况,

若死守之前的分区表,这样会造成开发难度增加,并且用户得不到最新最好的用户

体验。

因此,现有技术还有待于改进和发展。

发明内容

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种移动终端的软

件升级方法和系统,旨在解决现有技术中软件升级不便的问题。

本发明解决技术问题所采用的技术方案如下:

一种移动终端的软件升级方法,其中,包括以下步骤:

A、根据新版本软件和旧版本软件,分别找出新版本软件和旧版本软件的分区表,

对比新旧分区表的差异,生成相应的备份列表;

B、扫描新版本软件的所有文件,生成包含所述新版本软件分区表和备份列表的差

分升级包;

C、根据所述差分升级包内的备份列表,检测移动终端内需要备份的备份数据总量,

将所述备份数据总量与移动终端的SD卡的剩余空间进行对比,当所述备份数据总

量小于移动终端的SD卡的剩余空间时,进入步骤D;

D、根据所述备份列表,将移动终端内需要备份的备份数据存储到SD卡中,并根

据所述差分升级包的新版本软件分区表将移动终端存储器重新分区,检测分区类型,

将SD卡上的备份数据对应写入分区;

E、解压缩所述差分升级包,得到相应的差别文件,根据所述差别文件和移动终端

内的旧版本文件,生成相应的新版本文件,并写入移动终端完成升级。

所述的移动终端的软件升级方法,其中,所述步骤A具体包括:

A1、根据新版本软件和旧版本软件,分别得到新版本软件和旧版本软件的分区表;

A2、遍历新版本分区表,若没有完成遍历,则进入步骤A3;若完成遍历,则结束;

A3、在新分区表中取出一项,并在旧分区表中查找是否有相同名字的分区,若是,

则进入步骤A4;若否,跳至步骤A2;

A4、检查新旧分区的大小和起始地址是否都一致,若是,跳至步骤A2,若否,则

进入步骤A5;

A5、检查分区的类型,在备份列表里增加一个描述项,描述该分区的名字和类型,

返回步骤A2。

所述的移动终端的软件升级方法,其中,所述步骤B具体包括:

B1、扫描新版本和旧版本软件包的所有文件,分别得到相应的文件列表;

B2、遍历新版本分区表,若没有完成遍历,则进入步骤B3;若完成遍历,则将新

版本分区表加入差分升级包,并结束;

B3、在新版本文件列表中取出一项,并在旧版本文件列表中查找是否有文件名相

同的文件,若无,则使用逐字方式将新版本文件加入差分升级包,并跳至步骤B2;

若有,则继续步骤B4;

B4、在差异包比较工具中,将新旧版本的文件作为输入,生成差别文件,并在差

别文件中增加相应的描述项,返回步骤B2。

所述的移动终端的软件升级方法,其中,所述步骤C具体包括:

C1、检查移动终端是否有SD卡,若是,则进入步骤C2,若否,则报告错误,结

束;

C2、从差分升级包里得到备份列表,从移动终端存储器里读出现有分区表,遍历

备份列表,若没有完成遍历,则进入步骤C3;若完成遍历,则进入步骤C4;

C3、在备份列表中取出一项,并在现有分区表中找到对应的分区,检查分区类型,

如果是原始数据类型分区,将分区大小累加至备份数据总量;如果是文件系统类型

分区,将分区内所有文件总大小累加至备份数据总量;返回步骤C2直至完成遍历;

C4、检查移动终端的SD卡剩余空间大小,如果比备份数据总量大,则进入步骤D;

否则报告错误,并结束。

所述的移动终端的软件升级方法,其中,所述步骤D具体包括:

D1、从差分升级包里得到备份列表,从移动终端存储器里读出现有分区表,遍历

备份列表,若没有完成遍历,则进入步骤D2;若完成遍历,则进入步骤D3;

D2、在备份列表中取出一项,并在现有分区表中找到对应的分区,检查分区类型,

如果是原始数据类型分区,读出整个分区的数据,把这些数据存储为SD卡上的一

个文件;如果是文件系统类型分区,使用TAR 文件格式将分区里面的文件打包成

一个文件,并将这个文件存储到SD卡上;返回步骤D1直至完成遍历;

D3、从差分升级包里得到新的分区表,按照新的分区表将移动终端存储器重新分

区,遍历备份列表,若没有完成遍历,则进入步骤D4;若完成遍历,则结束;

D4、在备份列表中取出一项,并在新的分区表中找到对应的分区,检查分区类型,

如果是原始数据类型分区,将备份在SD卡上的对应文件写入分区;如果是文件系

统类型分区,解压备份在SD卡上的对应TAR文件,将TAR 文件里的各个文件写

入分区,返回步骤D3直至完成遍历。

所述的移动终端的软件升级方法,其中,所述步骤E具体包括:

E1、解压缩差分升级包,得到相应的差别文件和差别文件列表,遍历差别文件列

表,若没有完成遍历,则进入步骤E2;若完成遍历,则结束;

E2、在差别文件列表中取出一项,根据所述差别文件和移动终端内的旧版本文件,

生成相应的新版本文件,并写入移动终端,返回步骤E1直至完成遍历。

一种移动终端的软件升级系统,其中,包括:

备份列表生成模块,用于根据新版本软件和旧版本软件,分别找出新版本软件和旧

版本软件的分区表,对比新旧分区表的差异,生成相应的备份列表;

差分升级包生成模块,用于扫描新版本软件的所有文件,生成包含所述新版本软件

分区表和备份列表的差分升级包;

容量检测模块,用于根据所述差分升级包内的备份列表,检测移动终端内需要备份

的备份数据总量,将所述备份数据总量与移动终端的SD卡的剩余空间对比;

数据备份及恢复模块,用于根据所述备份列表,将移动终端内需要备份的备份数据

存储到SD卡中,并根据所述差分升级包的新版本软件分区表将移动终端存储器重

新分区,检测分区类型,将SD卡上的备份数据对应写入分区;

升级模块,用于解压缩所述差分升级包,得到相应的差别文件,根据所述差别文件

和移动终端内的旧版本文件,生成相应的新版本文件,并写入移动终端完成升级。

所述的移动终端的软件升级系统,其中,所述备份列表生成模块具体包括:

分区表获取单元,用于根据新版本软件和旧版本软件,分别得到新版本软件和旧版

本软件的分区表;

分区表遍历单元,用于遍历新版本分区表;

名字对比单元,用于在新分区表中取出一项,并在旧分区表中查找是否有相同名字

的分区;

大小和起始地址对比单元,用于检查新旧分区的大小和起始地址是否都一致;

备份表修改单元,用于检查分区的类型,在备份列表里增加一个描述项,描述该分

区的名字和类型。

所述的移动终端的软件升级系统,其中,所述容量检测模块具体包括:

SD卡检测单元,用于检查移动终端是否有SD卡;

第一备份列表遍历单元,用于从差分升级包里得到备份列表,从移动终端存储器里

读出现有分区表,遍历备份列表;

备份数据总量计算单元,用于在备份列表中取出一项,并在现有分区表中找到对应

的分区,检查分区类型,如果是原始数据类型分区,将分区大小累加至备份数据总

量;如果是文件系统类型分区,将分区内所有文件总大小累加至备份数据总量;

容量对比单元,用于检查移动终端的SD卡剩余空间大小,并将所述备份数据总量

与移动终端的SD卡的剩余空间进行对比。

所述的移动终端的软件升级系统,其中,所述数据备份及恢复模块具体包括:

第二备份列表遍历单元,用于从差分升级包里得到备份列表,从移动终端存储器里

读出现有分区表,遍历备份列表;

数据备份单元,用于在备份列表中取出一项,并在现有分区表中找到对应的分区,

检查分区类型,如果是原始数据类型分区,读出整个分区的数据,把这些数据存储

为SD卡上的一个文件;如果是文件系统类型分区,使用TAR 文件格式将分区里

面的文件打包成一个文件,并将这个文件存储到SD卡上;

第三备份列表遍历单元,用于从差分升级包里得到新的分区表,按照新的分区表将

移动终端存储器重新分区,遍历备份列表;

数据恢复单元,用于在备份列表中取出一项,并在新的分区表中找到对应的分区,

检查分区类型,如果是原始数据类型分区,将备份在SD卡上的对应文件写入分区;

如果是文件系统类型分区,解压备份在SD卡上的对应TAR文件,将TAR 文件里

的各个文件写入分区。

本发明所提供的移动终端的软件升级方法和系统,有效地解决了现有的FOTA机

制无法处理因为软件版本升级或者软件需求变更需要修改移动终端内存储器分区表

的情况从而导致软件无法升级的问题,其方法通过根据新版本软件和旧版本软件,

分别找出新版本软件和旧版本软件的分区表,对比新旧分区表的差异,生成相应的

备份列表;扫描新版本软件的所有文件,生成包含所述新版本软件分区表和备份列

表的差分升级包;根据所述差分升级包内的备份列表,检测移动终端内需要备份的

备份数据总量,将所述备份数据总量与移动终端的SD卡的剩余空间进行对比,当

所述备份数据总量小于移动终端的SD卡的剩余空间时,根据所述备份列表,将移

动终端内需要备份的备份数据存储到SD卡中,并根据所述差分升级包的新版本软

件分区表将移动终端存储器重新分区,检测分区类型,将SD卡上的备份数据对应

写入分区;解压缩所述差分升级包,得到相应的差别文件,根据所述差别文件和移

动终端内的旧版本文件,生成相应的新版本文件,并写入移动终端完成升级,从而

使得移动终端在软件升级时需要改动存储器分区表的情况下,也能升级,其实现方

法简单,通过软件实现,成本较低。

附图说明

图1为本发明提供的移动终端的软件升级方法较佳实施例的流程图。

图2为本发明提供的移动终端的软件升级方法中生成备份列表的应用实施例的流程

图。

图3为本发明提供的移动终端的软件升级方法中生成差分升级包的应用实施例的流

程图。

图4为本发明提供的移动终端的软件升级方法中检测SD卡空间的应用实施例的流

程图。

图5为本发明提供的移动终端的软件升级方法中备份数据及写入的应用实施例的流

程图。

图6为本发明提供的移动终端的软件升级方法中应用差分升级包的应用实施例的流

程图。

图7为本发明提供的移动终端的软件升级系统较佳实施例的结构框图。

具体实施方式

本发明提供一种移动终端的软件升级方法和系统,为使本发明的目的、技术方案及

优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理

解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

请参阅图1,图1为本发明提供的移动终端的软件升级方法较佳实施例的流程图,

如图1所示,本发明提供的移动终端的软件升级方法,包括以下步骤:

步骤S100、根据新版本软件和旧版本软件,分别找出新版本软件和旧版本软件的

分区表,对比新旧分区表的差异,生成相应的备份列表;

步骤S200、扫描新版本软件的所有文件,生成包含所述新版本软件分区表和备份

列表的差分升级包;

步骤S300、根据所述差分升级包内的备份列表,检测移动终端内需要备份的备份

数据总量,将所述备份数据总量与移动终端的SD卡的剩余空间进行对比,当所述

备份数据总量小于移动终端的SD卡的剩余空间时,进入步骤S400;

步骤S400、根据所述备份列表,将移动终端内需要备份的备份数据存储到SD卡

中,并根据所述差分升级包的新版本软件分区表将移动终端存储器重新分区,检测

分区类型,将SD卡上的备份数据对应写入分区;

步骤S500、解压缩所述差分升级包,得到相应的差别文件,根据所述差别文件和

移动终端内的旧版本文件,生成相应的新版本文件,并写入移动终端完成升级。

以下以移动终端为手机为例,并结合具体的实施例对上述步骤进行详细的描述。

在实际应用是,步骤S100及S200是在PC端(也就是服务器)完成,而步骤S300

至S500都是在手机中完成。简单来说,就是PC端生成相应的差分升级包,发送

至手机或者手机下载,然后再在手机中进行软件升级。

在步骤S100中,PC端根据新版本软件和旧版本软件,分别找出新版本软件和旧版

本软件的分区表,对比新旧分区表的差异,生成相应的备份列表。具体来说, PC

端根据新版本软件和旧版本软件,分别得到新旧分区表。所述分区表有两种表现形

式:在PC端,分区表以“分区表描述文件”的形式存在,包含了分区名字,分区大

小,分区起始地址及分区类型;在手机端,分区表以“存储器头部数据和存储器内

分区表数据”的形式存在,同样包含了分区名字,分区大小,分区起始地址及分区

类型。然后PC端对比新旧分区表的差异,生成相应的备份列表。所述备份列表为

在PC端生成的一个列表,它描述了:哪些分区需要备份。手机端程序将根据这个

列表,完成备份动作。

在实际应用时,所述步骤S100具体包括:S110、分别得到新版本软件和旧版本软

件的分区表;S120、遍历新版本分区表,若没有完成遍历,则进入步骤S130;若

完成遍历,则结束;S130、在新分区表中取出一项,并在旧分区表中查找是否有

相同名字的分区,若是,则进入步骤S140;若否,跳至步骤S120;S140、检查新

旧分区的大小和起始地址是否都一致,若是,跳至步骤S120,若否,则进入步骤

S150;S150、检查分区的类型,在备份列表里增加一个描述项,描述该分区的名

字和类型,返回步骤S120。

具体来说,请参阅图2,图2为本发明提供的移动终端的软件升级方法中生成备份

列表的应用实施例的流程图,也就是本发明提供的移动终端的软件升级方法中步骤

S100的应用实施例的流程图,如图2所示,PC端先根据新旧版本软件分别得到新

旧版本软件的分区表,然后遍历新版本分区表,在新分区表中取出一项,并在旧分

区表中查找是否有相同名字的分区,若是,则进入下一步检查新旧分区的大小和起

始地址是否都一致,若否,则继续遍历。检查新旧分区的大小和起始地址是否都一

致,若是,则继续遍历,若否,则继续检查分区的类型,在备份列表里增加一个描

述项,描述分区的名字和类型。在增加描述项之后继续遍历,直到将新版本分区表

的全部项取出,也就是完成遍历,才结束。

在步骤S200中,PC端扫描新版本软件的所有文件,生成包含所述新版本软件分区

表和备份列表的差分升级包。在实际应用时,所述步骤S200具体包括:S210、扫

描新版本和旧版本软件包的所有文件,分别得到相应的文件列表;S220、遍历新

版本分区表,若没有完成遍历,则进入步骤S230;若完成遍历,则将新版本分区

表加入差分升级包,并结束;S230、在新版本文件列表中取出一项,并在旧版本

文件列表中查找是否有文件名相同的文件,若无,则使用逐字方式将新版本文件加

入差分升级包,并跳至步骤S220;若有,则继续步骤S240;S240、在差异包比较

工具中,将新旧版本的文件作为输入,生成差别文件,并在差别文件中增加相应的

描述项,返回步骤S220。

具体来说,请参阅图3,图3为本发明提供的移动终端的软件升级方法中生成差分

升级包的应用实施例的流程图,也就是本发明提供的移动终端的软件升级方法的步

骤S200的应用实施例的流程图,如图3所示,PC端扫描新版本和旧版本的所有文

件,生成相应的文件列表。然后遍历新版本文件列表,若新版本文件列表没有遍历

完成,则在新版本文件列表中取出一项,若新版本文件列表已经遍历完成,则结束。

在旧版本中查找与新版本文件列表中取出的文件的文件名相同的文件,若无,则使

用逐字方式将新版本文件加入差分升级包,更新差分升级包并继续遍历,若有,则

使用 bsdiff (差异包比较工具)作为工具,将新旧版本的文件作为输入,生成差别

文件,并在差别文件列表中写入相应的信息,如文件名及校验码等。继续遍历,直

到完成遍历新版本文件列表,再将新版本文件列表加入差分升级包。

在步骤S300中,移动终端根据所述差分升级包内的备份列表,检测移动终端内需

要备份的备份数据总量,将所述备份数据总量与移动终端的SD卡的剩余空间进行

对比,当所述备份数据总量小于移动终端的SD卡的剩余空间时,进入步骤S400。

在实际应用时,所述步骤S300具体包括:S310、检查移动终端是否有SD卡,若

是,则进入步骤S320,若否,则报告错误,结束;S320、从差分升级包里得到备

份列表,从移动终端存储器里读出现有分区表,遍历备份列表,若没有完成遍历,

则进入步骤S330;若完成遍历,则进入步骤S340;S330、在备份列表中取出一项,

并在现有分区表中找到对应的分区,检查分区类型,如果是原始数据类型分区,将

分区大小累加至备份数据总量;如果是文件系统类型分区,将分区内所有文件总大

小累加至备份数据总量;返回步骤S320直至完成遍历;S340、检查移动终端的

SD卡剩余空间大小,如果比备份数据总量大,则进入步骤S400;否则报告错误,

并结束。

具体来说,请参阅图4,图4为本发明提供的移动终端的软件升级方法中检测SD

卡空间的应用实施例的流程图,也就是本发明提供的移动终端的软件升级方法的步

骤S300的应用实施例的流程图,如图所示,移动终端先检查SD卡空间是否足够。

在实际应用时,移动终端检查是否有SD卡,若是,则继续,若否,报告错误,并

结束。然后从差分升级包里得到备份列表,从手机存储器里读出现有分区表,初始

化变量“备份数据总量”。然后遍历备份列表,在备份列表中取出一项,若没有遍历

完成,则进入下一步;如果已经将全部项取出,也就是遍历完成,则检查SD卡剩

余空间大小。然后根据在备份列表取出的一项,在现有分区表中找到对应的分区,

并检查分区类型,如果是原始数据类型分区,将分区大小累加至备份数据总量;如

果是文件系统类型分区,将分区内所有文件总大小累加至备份数据总量,直到完成

遍历,得到移动终端需要备份的备份数据总量。然后检查SD卡剩余空间大小,如

果比备份数据总量大,则进入步骤S400,进行升级;反之,则报告错误,结束。

针对原始数据类型分区的数据大小计算方法,因为原始数据类型分区没有元数据,

我们无法得知分区内数据大小。所以我们认为分区内数据大小即是分区大小。针对

文件系统类型分区的数据大小计算方法,统计分区内所有文件的大小,加总为分区

内数据大小。

在步骤S400中,移动终端根据所述备份列表,将移动终端内需要备份的备份数据

存储到SD卡中,并根据所述差分升级包的新版本软件分区表将移动终端存储器重

新分区,检测分区类型,将SD卡上的备份数据对应写入分区。在实际应用时,所

述步骤S400具体包括:S410、从差分升级包里得到备份列表,从移动终端存储器

里读出现有分区表,遍历备份列表,若没有完成遍历,则进入步骤S420;若完成

遍历,则进入步骤S430;S420、在备份列表中取出一项,并在现有分区表中找到

对应的分区,检查分区类型,如果是原始数据类型分区,读出整个分区的数据,把

这些数据存储为SD卡上的一个文件;如果是文件系统类型分区,使用TAR 文件

格式将分区里面的文件打包成一个文件,并将这个文件存储到SD卡上;返回步骤

S410直至完成遍历;S430、从差分升级包里得到新的分区表,按照新的分区表将

移动终端存储器重新分区,遍历备份列表,若没有完成遍历,则进入步骤S440;

若完成遍历,则结束;S440、在备份列表中取出一项,并在新的分区表中找到对

应的分区,检查分区类型,如果是原始数据类型分区,将备份在SD卡上的对应文

件写入分区;如果是文件系统类型分区,解压备份在SD卡上的对应TAR文件,

将TAR 文件里的各个文件写入分区;也就是将SD卡上的备份数据恢复到对应的

分区,然后返回步骤S430直至完成遍历。

具体来说,请参阅图5,图5为本发明提供的移动终端的软件升级方法中备份数据

及写入的应用实施例的流程图,也就是本发明提供的移动终端的软件升级方法的步

骤S400的应用实施例的流程图,如图所示,在次步骤S400中,手机备份数据并

恢复。手机从差分升级包里得到备份列表,从手机存储器里读出现有分区表。然后

遍历备份列表,在备份列表中取出一项,在现有分区表中找到对应的分区,检查分

区类型,如果是原始数据类型分区,读出整个分区的数据,把这些数据存储为SD

卡上的一个文件;如果是文件系统类型分区,使用TAR 文件格式将分区里面的文

件打包成一个文件,然后将这个文件存储到SD卡上;直到将备份列表中的全部项

取出,也就是遍历完成,从而将手机需要备份的数据都备份到SD卡上。然后,从

差分升级包里得到新的分区表,按照新的分区表将手机存储器重新分区,并遍历备

份列表,在备份列表中取出一项,在新的分区表中找到对应的分区,检查分区类型,

如果是原始数据类型分区,将备份在SD卡上的对应文件写入分区;如果是文件系

统类型分区,解压备份在SD卡上的对应TAR文件,将TAR 文件里的各个文件写

入分区,直到将备份列表中的全部项取出,也就是遍历完成,从而将SD卡中的备

份数据重新写入新分区中。针对原始数据类型分区的备份方法,如上所述,只需按

照原始数据流的方式读出整个分区的数据,把这些数据存储为SD卡上的一个文件

即可。针对文件系统类型分区的备份方法,使用TAR 文件格式来完成。TAR 文件

格式是一种遵循GPL许可证的文件打包格式。我们使用TAR 将分区里面的所有文

件打包成一个文件,然后将这个文件存储到SD卡上。

在步骤S500中,移动终端解压缩所述差分升级包,得到相应的差别文件,根据所

述差别文件和移动终端内的旧版本文件,生成相应的新版本文件,并写入移动终端

完成升级。具体来说,所述步骤S500具体包括:S510、解压缩差分升级包,得到

相应的差别文件和差别文件列表,遍历差别文件列表,若没有完成遍历,则进入步

骤S520;若完成遍历,则结束;S520、在差别文件列表中取出一项,根据所述差

别文件和移动终端内的旧版本文件,生成相应的新版本文件,并写入移动终端,返

回步骤S510直至完成遍历。

具体来说,请参阅图6,图6为本发明提供的移动终端的软件升级方法中应用差分

升级包的应用实施例的流程图,也就是本发明提供的移动终端的软件升级方法的步

骤S500的应用实施例的流程图,如图所示,手机端解压缩差分升级包,得到相应

的差别文件和差别文件列表,然后遍历差别文件列表,在差别文件列表中取出一项,

根据手机里已有文件和差别文件,生成新版本文件,并将新版本文件写入手机,直

到完成遍历。这样,完成了手机的软件升级。

本发明提供的移动终端的软件升级方法,是对现有FOTA升级方法的一个优化方

法,有效的克服了因手机机内存储器分区表改变造成软件无法升级的问题,避免因

现有FOTA升级方法无法处理这种情况,只能死守之前的分区表而会造成的开发

难度增加以及用户得不到最新最好的用户体验的问题,使得移动终端在软件升级时

需要改动存储器分区表的情况下,也能升级,其实现方法简单,通过软件实现,成

本较低。

基于上述移动终端的软件升级方法,本发明还提供了一种移动终端的软件升级系统,

请参阅图7,图7为本发明提供的移动终端的软件升级系统较佳实施例的结构框图,

如图7所示,所述系统包括:

备份列表生成模块10,用于根据新版本软件和旧版本软件,分别找出新版本软件

和旧版本软件的分区表,对比新旧分区表的差异,生成相应的备份列表;具体如步

骤S100所述。

差分升级包生成模块20,用于扫描新版本软件的所有文件,生成包含所述新版本

软件分区表和备份列表的差分升级包;具体如步骤S200所述。

容量检测模块30,用于根据所述差分升级包内的备份列表,检测移动终端内需要

备份的备份数据总量,将所述备份数据总量与移动终端的SD卡的剩余空间对比;

具体如步骤S300所述。

数据备份及恢复模块40,用于根据所述备份列表,将移动终端内需要备份的备份

数据存储到SD卡中,并根据所述差分升级包的新版本软件分区表将移动终端存储

器重新分区,检测分区类型,将SD卡上的备份数据对应写入分区;具体如步骤

S400所述。

升级模块50,用于解压缩所述差分升级包,得到相应的差别文件,根据所述差别

文件和移动终端内的旧版本文件,生成相应的新版本文件,并写入移动终端完成升

级;具体如步骤S500所述。

具体来说,所述备份列表生成模块10根据新版本软件和旧版本软件,分别找出新

版本软件和旧版本软件的分区表,对比新旧分区表的差异,生成相应的备份列表。

所述差分升级包生成模块20扫描新版本软件的所有文件,生成包含所述新版本软

件分区表和备份列表的差分升级包。所述容量检测模块30根据所述差分升级包内

的备份列表,检测移动终端内需要备份的备份数据总量,将所述备份数据总量与移

动终端的SD卡的剩余空间对比,当所述备份数据总量小于移动终端的SD卡的剩

余空间时,所述数据备份及恢复模块40根据所述备份列表,将移动终端内需要备

份的备份数据存储到SD卡中,并根据所述差分升级包的新版本软件分区表将移动

终端存储器重新分区,检测分区类型,将SD卡上的备份数据对应写入分区。然后

所述升级模块50解压缩所述差分升级包,得到相应的差别文件,根据所述差别文

件和移动终端内的旧版本文件,生成相应的新版本文件,并写入移动终端完成升级。

在实际应用是,所述备份列表生成模块10和差分升级包生成模块20设置在PC端,

也就是服务器端。所述容量检测模块30、数据备份及恢复模块40和升级模块50

设置在移动终端上,用于接收PC端的差分升级包,并进行相应的软件升级。

具体来说,所述备份列表生成模块10具体包括:

分区表获取单元,用于根据新版本软件和旧版本软件,分别得到新版本软件和旧版

本软件的分区表;

分区表遍历单元,用于遍历新版本分区表;

名字对比单元,用于在新分区表中取出一项,并在旧分区表中查找是否有相同名字

的分区;

大小和起始地址对比单元,用于检查新旧分区的大小和起始地址是否都一致;

备份表修改单元,用于检查分区的类型,在备份列表里增加一个描述项,描述该分

区的名字和类型。

所述容量检测模块30具体包括:

SD卡检测单元,用于检查移动终端是否有SD卡;

第一备份列表遍历单元,用于从差分升级包里得到备份列表,从移动终端存储器里

读出现有分区表,遍历备份列表;

备份数据总量计算单元,用于在备份列表中取出一项,并在现有分区表中找到对应

的分区,检查分区类型,如果是原始数据类型分区,将分区大小累加至备份数据总

量;如果是文件系统类型分区,将分区内所有文件总大小累加至备份数据总量;

容量对比单元,用于检查移动终端的SD卡剩余空间大小,并将所述备份数据总量

与移动终端的SD卡的剩余空间进行对比。

所述数据备份及恢复模块40具体包括:

第二备份列表遍历单元,用于从差分升级包里得到备份列表,从移动终端存储器里

读出现有分区表,遍历备份列表;

数据备份单元,用于在备份列表中取出一项,并在现有分区表中找到对应的分区,

检查分区类型,如果是原始数据类型分区,读出整个分区的数据,把这些数据存储

为SD卡上的一个文件;如果是文件系统类型分区,使用TAR 文件格式将分区里

面的文件打包成一个文件,并将这个文件存储到SD卡上;

第三备份列表遍历单元,用于从差分升级包里得到新的分区表,按照新的分区表将

移动终端存储器重新分区,遍历备份列表;

数据恢复单元,用于在备份列表中取出一项,并在新的分区表中找到对应的分区,

检查分区类型,如果是原始数据类型分区,将备份在SD卡上的对应文件写入分区;

如果是文件系统类型分区,解压备份在SD卡上的对应TAR文件,将TAR 文件里

的各个文件写入分区。

由于所述差分升级包生成模块20和所述升级模块50与现有的FOTA方法一致,此

处不再详细描述。

综上所述,本发明提供的一种移动终端的软件升级方法和系统,所述方法根据新版

本软件和旧版本软件,分别找出新版本软件和旧版本软件的分区表,对比新旧分区

表的差异,生成相应的备份列表;再扫描新版本软件的所有文件,生成包含所述新

版本软件分区表和备份列表的差分升级包;根据所述差分升级包内的备份列表,检

测移动终端内需要备份的备份数据总量,将所述备份数据总量与移动终端的SD卡

的剩余空间进行对比,当所述备份数据总量小于移动终端的SD卡的剩余空间时,

根据所述备份列表,将移动终端内需要备份的备份数据存储到SD卡中,并根据所

述差分升级包的新版本软件分区表将移动终端存储器重新分区,检测分区类型,将

SD卡上的备份数据对应写入分区;解压缩所述差分升级包,得到相应的差别文件,

根据所述差别文件和移动终端内的旧版本文件,生成相应的新版本文件,并写入移

动终端,从而完成升级,使得移动终端在软件升级时需要改动存储器分区表的情况

下也能升级,其实现方法简单,通过软件实现,成本较低,为用户带来大大的方便。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可

以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要

求的保护范围。