一种生成OTA中间包过程中的数据处理方法及装置与流程

文档序号:14268333阅读:256来源:国知局

本发明涉及数据处理技术,特别涉及一种生成ota中间包过程中的数据处理方法及装置。



背景技术:

google于2014年发布了androidl操作系统,目前各大终端厂商都在开发基于androidl操作系统的移动终端。androidl操作系统对安全性要求较高,在移动终端开机过程中会进行一系列的校验,如,将移动终端上运行的安卓安装包(androidpackage,apk)文件中的class.dex文件一一提取出来进行校验,这样,会使得系统升级后首次开机的速度非常缓慢,用户体验较差。

为了解决这一问题,相关技术人员提出odex方案。所谓odex方案是指:终端厂商在生成固件版本时,将移动终端开机过程中需要提取的class.dex文件预先提取出来进行优化和编译,在编译过程中会生成离散的系统升级文件,对系统升级文件压缩后生成ota中间包,接着,再采用指定格式的脚本文件将ota中间包制作成ota升级包,其中,将在代码编译阶段,将从系统应用程序中预先提取的class.dex文件编译为odex文件。

当在系统升级后的首次开机启动时,androidl操作系统会在ota升级包中读取到odex文件,系统检测到odex无需无需再提取apk文件中的class.dex文件,从而加快系统应用的加载速度和开机速度。

然而,现有的压缩工具在执行压缩时,会从升级文件中读取全部数据,若加入odex文件中的数据,会导致加入后的全部数据超过压缩工具允许压缩数据的上限,执行循环冗余校验(cyclicredundancycheck,crc)失败,从而导致无法压缩全部数据,进而造成ota中间包无法生成的问题。



技术实现要素:

本发明实施例提供一种生成ota中间包过程中的数据处理方法及装置,用以解决现有技术中存在无法对数据量大小超出阈值的系统文件中的数据进行压缩,无法生成ota中间包,进而无法生成ota升级包的问题。

本发明实施例提供的具体技术方案如下:

一种生成ota中间包过程中的数据处理方法,包括:

从存储在不同存储路径下的系统文件中先后读取部分数据,所述系统文件包括:用于对系统升级的升级文件和用于指示在系统升级后的启动过程中对应用程序进行校验的odex文件;

根据所述升级文件和所述odex文件中的数据总和,读取少于所述数据总和的当前部分数据,且压缩所述当前部分数据后得到当前压缩数据;

将当前压缩数据和在当前压缩数据之前压缩得到的压缩数据合并。

可选的,根据所述升级文件和所述odex文件中的数据总和,读取少于所述数据总和的当前部分数据,包括:

预先设置小于所述数据总和的门限值;

当所述门限值不小于所述当前部分数据的大小时,压缩所述当前部分数据。

可选的,对当前压缩数据和在当前压缩数据之前压缩得到的压缩数据合并,具体包括:

压缩在所述当前部分数据之前读取的在先部分数据后得到在先压缩数据;

对所述当前压缩数据和所述在先压缩数据进行关联处理生成当前临时文件。

可选的,对所述当前压缩数据和所述在先压缩数据进行关联处理生成当前临时文件,包括:

在所述在先压缩数据尾部的指针位置后保存所述当前压缩数据;

将所述指针位置调整至所述当前压缩数据的尾部。

可选的,进一步包括:

若在所述当前压缩数据之前不存在所述在先压缩数据,则在易失性存储区域的首位设置指针位置,且在所述指针位置后保存所述当前压缩数据。

可选的,对所述当前压缩数据和所述在先压缩数据进行关联处理生成当前临时文件,进一步包括:

将当前压缩数据的crc值累加到在所述关联处理之前累计计算得到的crc值;

以累加所述当前压缩数据后得到的累加值更新在所述关联处理之前累计计算得到的crc值。

可选的,进一步包括:

确定所述升级文件和所述odex文件中的数据已经读取完毕后,对当前最新的当前临时文件进行提取,获得ota中间包。

一种ota中间包的生成装置,至少包括:读取单元,压缩单元,合并单元,其中:

读取单元,从存储在不同存储路径下的系统文件中先后读取部分数据,所述系统文件包括:用于对系统升级的升级文件和用于指示在系统升级后的启动过程中对应用程序进行校验的odex文件;

压缩单元,根据所述升级文件和所述odex文件中的数据总和,读取少于所述数据总和的当前部分数据,且压缩所述当前部分数据后得到当前压缩数据;

合并单元,将当前压缩数据和在当前压缩数据之前压缩得到的压缩数据合并。

可选的,根据所述升级文件和所述odex文件中的数据总和,读取少于所述数据总和的当前部分数据时,所述读取单元用于:

预先设置小于所述数据总和的门限值;

当所述门限值不小于所述当前部分数据的大小时,压缩所述当前部分数据。

可选的,将当前压缩数据和在当前压缩数据之前压缩得到的压缩数据合并时,所述合并单元用于:

压缩在所述当前部分数据之前读取的在先部分数据后得到在先压缩数据;

对所述当前压缩数据和所述在先压缩数据进行关联处理生成当前临时文件。

可选的,对所述当前压缩数据和所述在先压缩数据进行关联处理生成当前临时文件,所述合并单元用于:

在所述在先压缩数据尾部的指针位置后保存所述当前压缩数据;

将所述指针位置调整至所述当前压缩数据的尾部。

可选的,所述合并单元进一步用于:

若在所述当前压缩数据之前不存在所述在先压缩数据,则在易失性存储区域的首位设置指针位置,且在所述指针位置后保存所述当前压缩数据。

可选的,对所述当前压缩数据和所述在先压缩数据进行关联处理生成所述当前临时文件时,所述合并单元进一步用于:

将当前压缩数据的crc值累加到在所述关联处理之前累计计算得到的crc值;

以累加所述当前压缩数据后得到的累加值更新在所述关联处理之前累计计算得到的crc值。

可选的,所述合并单元进一步用于:

确定所述升级文件和所述odex文件中的数据已经读取完毕后,对当前最新的当前临时文件进行提取,获得ota中间包。

本发明有益效果如下:

本发明实施例中,针对获取的系统文件,终端采取分段压缩的方式,将数据量大小超出阈值的大文件分成多个数据量大小在阈值范围内的小文件分别进行压缩,并最终形成一个压缩包,这样,不但实现了针对大文件的压缩,同时提高了压缩效率,也降低了压缩过程中的内存占有率,并且采用本发明技术方案并未增加实现复杂度,有效控制了实现成本,因而,可以得到广泛应用,终端厂商可以采用本发明技术方案在生成ota中间包过程中对系统文件中的数据进行处理,顺利基于系统文件获得相应的ota中间包,进而获得ota升级包,从而保证了终端固件的顺利升级。

附图说明

图1为本发明实施例中生成ota中间包过程中的数据处理的流程图;

图2为本发明实施例中ota中间包存储结构;

图3为本发明实施例中终端结构功能示意图。

具体实施方式

本发明实施例中,针对获取的系统文件,终端采取分段压缩的方式,将数据量大小超出阈值的大文件分成多个数据量大小在阈值范围内的小文件分别进行压缩,并最终形成一个压缩包,即为ota中间包,终端采用指定的脚本文件对上述ota中间包进行制作,可以得到ota升级包。

下面结合附图对本发明优选的实施方式进行详细说明。

参阅图1所示,本发明实施例中,生成ota中间包过程中的数据处理的具体流程如下:

步骤100:终端从存储在不同存储路径下的系统文件中读取当前部分数据,并计算上述当前部分数据的循环冗余校验(crc)值。

具体的,校验函数和计算压缩后的文件长度函数的参数都是整型的,例如,在32位的android操作系统中,占用4个字节数支持的最大数值是2∧31-1,即2g,所以在32位的操作系统中,当生成的系统文件的数据量大小超出2g时,32位的android操作系统就无法对其进行压缩。

所以,在本发明实施例中,预先设置一个小于2g的门限值,同时上述门限值小于系统文件的数据总和,在当前部分数据读取之前的先部分数据压缩完成后启动读取当前部分数据的进程,当读取的当前部分数据大小等于门限值时,则结束读取当前部分数据的进程,其中,上述系统文件包括:用于对系统升级的升级文件和用于指示在系统升级后的启动过程中对应用程序进行校验的odex文件。终端在对系统文件的数据进行读取时,控制读取的当前部分数据的数据量大小小于等于上述门限值,并针对读取的当前部分数据,按照“生成多项式”规则计算得到相应的crc值,记为crc1,并在上述当前部分数据后附加上述crc1。

所谓循环冗余校验,是一种数据传输检错方式,检查数据在传输过程中是否出现错误,以保证数据传输的安全性和完整性。

步骤101:终端对上述读取的当前部分数据进行压缩,基于上述当前部分数据获得当前压缩数据。

具体的,终端对上述读取的当前部分数据进行压缩后获得当前压缩数据,并将当前压缩数据和对应的crc值存储到易失性存储区域。

步骤102:终端判断在上述当前压缩数据之前是否存在在先压缩数据,其中,在先压缩数据是指:终端压缩在上述当前压缩数据之前读取的在先部分数据后得到的压缩数据,若是,执行步骤104,否则,执行步骤103。

步骤103:在易失性存储区域的首位设置指针位置,并且在上述指针位置后对上述当前压缩数据进行保存,并将上述当前压缩数据作为当前临时文件。

步骤104:终端在易失性存储区域中,将在先压缩数据和当前压缩数据进行关联处理,并将关联处理结果作为当前临时文件。

具体的,终端调整易失性存储区域中指针的位置,将指针指向在先压缩数据的尾部,并在指针位置后,对上述当前压缩数据进行保存,并将上述在先压缩数据和当前压缩数据进行关联处理,将关联处理结果作为当前临时文件。

参阅图2所示,易失性存储区域中的当前临时文件包括:system文件,recovery文件,radio文件等多个文件,以当前压缩数据为meta文件为例,此时,在先压缩数据包括:system文件,recovery文件,radio文件和ota文件,其中,上述ota文件是生成ota中间包所需要的系统文件,并不是ota中间包。将上述在先压缩数据和当前压缩数据进行关联处理,获得当前临时文件,则此时当前临时文件中包括:system文件,recovery文件,radio文件,ota文件和meta文件。

终端对在先压缩数据和当前压缩数据进行关联处理时,将在先压缩数据和当前压缩数据进行合并,然后将当前压缩数据的crc值累加到在上述关联处理之前累计计算得到的在先压缩数据的crc值,并以累加上述当前压缩数据后得到的累加值更新在所述关联处理之前累计计算得到的crc值。

以当前压缩数据的crc值为crc1,关联处理之前的在先压缩数据的crc值为crc2为例,可选的,终端对crc1和crc2进行关联计算时,对crc1的前30位数据进行提取作为第一组数据,对crc2的前30位数据进行提取作为第二组数据,终端从第1位数据开始,对上述第一组数据和第二组数据中位数相同两个数据进行“与”运算,并将“与”运算的结果作为新的crc值,若检测到新的crc值,则表示当前读取数据成功压缩为当前压缩数据。

步骤105:上述系统文件中的数据是否读取完毕,若是,执行步骤106,否则,返回步骤100。

将当前部分数据读取的数据量累加到在读取上述当前部分数据之前累计计算得到的在先部分数据的累计值,当累加上述当前部分数据的数据量后得到的累计值等于上述系统文件的数据总和时,确定上述系统文件中的数据读取完毕。

步骤106:终端执行flush操作将易失性存储区域的当前临时文件同步到磁盘上,并对上述当前临时文件进行打包获得ota中间包。

具体的,易失性存储区域的当前临时文件中包括:终端对系统文件分多次读取后进行压缩得到的多个当前压缩数据累计得到的在先压缩数据,以及多个当前压缩数据的crc值累计计算得到的crc值。

基于上述实施例,参阅图3所示,本发明实施例中,一种生成ota中间包过程的数据处理装置,至少包括:读取单元30,压缩单元31,合并单元32,其中:

读取单元30,从存储在不同存储路径下的系统文件中先后读取部分数据,所述系统文件包括:用于对系统升级的升级文件和用于指示在系统升级后的启动过程中对应用程序进行校验的odex文件;

压缩单元31,根据所述升级文件和所述odex文件中的数据总和,读取少于所述数据总和的当前部分数据,且压缩所述当前部分数据后得到当前压缩数据;

合并单元32,将当前压缩数据和在当前压缩数据之前压缩得到的压缩数据合并。

可选的,根据所述升级文件和所述odex文件中的数据总和,读取少于所述数据总和的当前部分数据时,所述读取单元30用于:

预先设置小于所述数据总和的门限值;

当所述门限值不小于所述当前部分数据的大小时,压缩所述当前部分数据。

可选的,将当前压缩数据和在当前压缩数据之前压缩得到的压缩数据合并时,所述合并单元32用于:

压缩在所述当前部分数据之前读取的在先部分数据后得到在先压缩数据;

对所述当前压缩数据和所述在先压缩数据进行关联处理生成当前临时文件。

可选的,对所述当前压缩数据和所述在先压缩数据进行关联处理生成当前临时文件,所述合并单元32用于:

在所述在先压缩数据尾部的指针位置后保存所述当前压缩数据;

将所述指针位置调整至所述当前压缩数据的尾部。

可选的,所述合并单元32进一步用于:

若在所述当前压缩数据之前不存在所述在先压缩数据,则在易失性存储区域的首位设置指针位置,且在所述指针位置后保存所述当前压缩数据。

可选的,对所述当前压缩数据和所述在先压缩数据进行关联处理生成所述当前临时文件时,所述合并单元32进一步用于:

将当前压缩数据的crc值累加到在所述关联处理之前累计计算得到的crc值;

以累加所述当前压缩数据后得到的累加值更新在所述关联处理之前累计计算得到的crc值。

可选的,所述合并单元32进一步用于:

确定所述升级文件和所述odex文件中的数据已经读取完毕后,对当前最新的当前临时文件进行提取,获得ota中间包。

综上所述,androidl操作系统在用户进行程序安装,刷入只读存储器镜像(readonlymemoryimage,rom)或增量更新的操作后,首次启动移动终端时,会执行将.dex格式文件转换为.oat格式文件这一操作,而androidl操作系统中,由于大量的odex文件占用了部分系统空间资源,终端无法完成odex方案的实施,而在本发明实施例中,终端从存储在不同存储路径下的系统文件先后分多次进行读取当前部分数据,由于预设的门限值不会超过终端可以进行压缩的阈值范围,所以终端可以对读取的多个当前部分数据分别进行压缩,所以,终端执行flush操作将易失性存储区域的当前临时文件同步到磁盘上后,提取出当前最新的当前临时文件,作为最终的压缩包,得到的最终的压缩包即为ota中间包,有效保证了odex方案的实施,上述转换过程采用odex方案比未采用odex方案花费的时间短,进一步加快了移动终端的开机速度。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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