当前位置: 首页 > 专利查询>重庆大学专利>正文

部分更新文件数据块读写方法及差分还原、增量更新方法技术

技术编号:39067385 阅读:18 留言:0更新日期:2023-10-12 19:59
本发明专利技术涉及应用程序增量更新技术领域,具体公开了一种部分更新文件数据块读写方法及差分还原、增量更新方法,部分更新文件数据块读写方法包括:当覆盖线中待写入的偏移量与新版本文件实际待写入的偏移位置相等时,根据覆盖线判断覆盖线包含对一个以上全部重用的数据块的读写时,将旧版本文件中全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息。本发明专利技术通过对闪存文件数据块进行分类并针对部分更新文件中全部重用的数据块采取修改索引的方式而避免对所有全部重用的数据块的直接读写,只需多一次信息判断即可节约大量内存,加快更新速度,从而在增量更新时提高内存利用率。在增量更新时提高内存利用率。在增量更新时提高内存利用率。

【技术实现步骤摘要】
部分更新文件数据块读写方法及差分还原、增量更新方法


[0001]本专利技术涉及应用程序增量更新
,尤其涉及一种部分更新文件数据块读写方法、一种差分还原方法及一种增量更新方法。

技术介绍

[0002]随着物联网、人工智能及高速移动网络的快速发展,终端设备的种类与数量急剧增加,智能手表和手环等智能可穿戴设备已经广泛传播。智能电子设备的生命周期中,要进行多次的OTA软件更新,确保设备及时修复存在的软件bug,以及满足用户更多的功能体验。目前大多数应用程序采用增量升级的方式进行更新,其核心思想就是尽可能多地利用旧版本文件中已有的内容,尽可能少地加入新的内容来构建新版本文件。与原来每次更新都要下载完整程序的做法相比,这样做生成的差分包比原镜像包要小得多,一方面减少流量成本的消耗,另一方面降低了客户端升级时间。
[0003]增量更新算法是OTA升级机制的关键支撑算法,直接决定下载差分文件所需的时间和流量,以及电子设备还原差分文件的系统资源消耗和时间。目前主流增量升级算法有Xdelta、BSDiff、HDiffPatch等。目前使用较多的差分算法库为HDiffPatch,该算法能够实现高效的差分和更新操作。
[0004]增量更新的流程如图1所示,当应用程序出现新版本时,服务端会检测新版本文件与旧版本文件之间的差异,制作版本之间的差分包并发布在可供客户端下载的平台(例如APP store),用户就可以设置手动或者自动更新,将差分包下载到本地进行差分还原。
[0005]HDiffPatch算法生成的差分包包含这三部分数据:一是“ADD”和“INSERT”的这类控制指引信息,控制从旧版本文件读取匹配长度的数据,并将其添加到新版本文件中的指定位置;二是服务端差分过程中生成的覆盖线信息,是通过改进后缀数组的算法思想来实现新旧版本最大程度匹配的集合,这些公共部分数据覆盖线信息包含这三部分信息:数据在旧文件中的偏移量,在新文件中的偏移量,匹配长度,在源码中分别表示为oldPos,newPos和length;三是新增的额外数据,包含无法近似匹配的完全不同的字段,属于旧版本新增的额外信息。
[0006]根据增量升级尽可能多地利用旧版本已有数据的核心思想,当客户端下载差分包到本地后,按照HDiffPatch支持的本地差分还原策略,客户端会根据差分包中控制信息和覆盖线信息,从旧文件中“oldPos”拷贝“length”长度的数据到新文件的newPos上。这里的位置信息都是相对文件初始地址的偏移量。新文件中不被覆盖线信息覆盖的位置则需要插入一些差分包中的额外数据,最终生成一个新版本镜像文件。
[0007]Android应用程序是以apk格式的文件进行发布的,其本质是一个压缩包文件格式,源代码文件、资源文件、AndroidManifetst.xml文件等会被压缩到apk文件中。应用程序的更新就是在对这些子文件数据进行增删改操作,将应用程序的子文件分为三类:全新文件、全旧文件和介于全新和全旧的文件,即部分更新文件。其中,全新文件里的数据都是新版本独有的数据,全旧文件是版本更新后文件内容完全不变的子文件,部分更新文件内既
包含旧版本中部分不变的数据还包括部分新增数据(属于在旧版本应用程序更新过程中进行部分更新的文件)。
[0008]通过对不同类别的(例如:社交媒体、游戏、短视频等)最受用户欢迎的应用程序进行增量更新测试,发现数量占比很小的部分更新文件的数据量大小却超过了整个镜像文件大小的一半,而数量更多的全旧文件和全新文件总的数据量大小还不及部分更新文件。由于增量更新的核心就是尽可能多地利用旧版本已有数据,于是可以得出这样的结论:在应用程序增量更新的过程中,部分更新文件这类文件是客户端在差分还原时频繁访问的对象,如此频繁地读取这类大文件,势必造成大量的文件读写开销。
[0009]由此观之,现有增量更新算法HDiffPatch主要存在以下两大问题:
[0010]1、按照差分算法HDiffPatch,需要从闪存中读取部分更新文件这类文件到内存和新增数据进行差分还原操作,再将新组成的数据写入新版本文件中。由于部分更新文件数据量占比很大,最后还要将更新的数据持久化到闪存上,这无疑产生了大量的读写和内存开销问题;
[0011]2、客户端需要多次从闪存上的旧版本文件中取不同大小的数据,涉及磁盘的随机访问,性能比较慢。若使用目前大多数移动系统使用的FAT文件系统读写部分更新文件这类数据量占比很大的文件,不仅需要耗费大量内存,还会延长更新时间。

技术实现思路

[0012]本专利技术提供一种部分更新文件数据块读写方法及差分还原、增量更新方法,解决的技术问题在于:现有基于HDiffPatch的应用程序增量更新方法,从磁盘读入内存的数据量太大,耗费大量内存,并涉及多次对磁盘的随机访问,导致系统性能比较慢。
[0013]为解决以上技术问题,本专利技术首先提供一种部分更新文件数据块读写方法,包括:当覆盖线中待写入的偏移量与新版本文件实际待写入的偏移位置相等时,根据所述覆盖线判断所述覆盖线包含对一个以上全部重用的数据块的读写时,将旧版本文件中的全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息;全部重用的数据块指的是,在旧版本应用程序更新过程中进行部分更新的部分更新文件中,同时属于新版本文件和旧版本文件的公共数据。
[0014]进一步地,该方法还包括:
[0015]当根据所述覆盖线判断所述覆盖线不包含对一个以上全部重用的数据块的读写时,则按照所述覆盖线的信息从部分更新文件中读取相应长度的数据到内存。
[0016]进一步地,根据所述覆盖线的信息中的数据长度判断所述覆盖线是否包含对一个以上全部重用的数据块的读写;所述数据长度为从第一个全部重用的块起始位置开始的子覆盖线长度。
[0017]进一步地,该方法还包括:依次遍历每一条覆盖线的信息直到最后完整地生成新版本文件,再将旧版本文件删除。
[0018]进一步地,并修改旧版本文件的索引信息,具体为:
[0019]将修改了索引信息的全部重用的数据块相邻的数据块在部分更新文件中的索引进行整理使其仍旧是一个完整的文件索引结构。
[0020]本专利技术还提供一种差分还原方法,其关键在于,包括步骤:
[0021]S1、读取差分包中一条覆盖线,判断该覆盖线中待写入的偏移量是否与新版本文件实际待写入的偏移位置相等,若相等则按照该覆盖线的信息从差分包中读取相应长度的数据到内存,若否则进入下一步;
[0022]S2、计算该覆盖线的信息中的数据长度并判断该覆盖线的信息中是否包含对一个以上全部重用的数据块的读写,若是则将旧版本文件中的全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息,若否则按照该覆盖线的信息从旧版本文件中读取相应长度的数据到内存。
[0023]进一步地,在所述步骤S1前还包括步骤:
[0024]S0、将应用程序的旧版本子文件分为三类:全新文件、全旧本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.部分更新文件数据块读写方法,其特征在于,包括:当覆盖线中待写入的偏移量与新版本文件实际待写入的偏移位置相等时,根据所述覆盖线判断所述覆盖线包含对一个以上全部重用的数据块的读写时,将旧版本文件中的全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息;全部重用的数据块指的是,在旧版本应用程序更新过程中进行部分更新的部分更新文件中,同时属于新版本文件和旧版本文件的公共数据。2.根据权利要求1所述的部分更新文件数据块读写方法,其特征在于,该方法还包括:当根据所述覆盖线判断所述覆盖线不包含对一个以上全部重用的数据块的读写时,则按照所述覆盖线的信息从部分更新文件中读取相应长度的数据到内存。3.根据权利要求2所述的部分更新文件数据块读写方法,其特征在于:根据所述覆盖线的信息中的数据长度判断所述覆盖线是否包含对一个以上全部重用的数据块的读写;所述数据长度为从第一个全部重用的块起始位置开始的子覆盖线长度。4.根据权利要求2所述的部分更新文件数据块读写方法,其特征在于,该方法还包括:依次遍历每一条覆盖线的信息直到最后完整地生成新版本文件,再将旧版本文件删除。5.根据权利要求1所述的部分更新文件数据块读写方法,其特征在于,并修改旧版本文件的索引信息,具体为:将修改了索引信息的全部重用的数据块相邻的数据块在部分更新文件中的索引进行整理使其仍旧是一个完整的文件索引结构。6.差分还原方法,其特征在于,包括步骤:S1、读取差分包中一条覆盖线,判断该覆盖线中待写入的偏移量是否与新版本文件实际待写入的偏移位置相等,若相等则按照该覆盖线的信息从差分包中读取相应长度的数据到内存,若否则进入下一步;S2、计算该覆盖线的信息中的数据长度并判断该覆盖线的信息中是否包含对...

【专利技术属性】
技术研发人员:陈咸彰雷瑞清刘铎谭玉娟任骜
申请(专利权)人:重庆大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1