CN108519884B - 一种应用程序安装包更新方法、融合方法及相关装置 - Google Patents

一种应用程序安装包更新方法、融合方法及相关装置 Download PDF

Info

Publication number
CN108519884B
CN108519884B CN201710109172.6A CN201710109172A CN108519884B CN 108519884 B CN108519884 B CN 108519884B CN 201710109172 A CN201710109172 A CN 201710109172A CN 108519884 B CN108519884 B CN 108519884B
Authority
CN
China
Prior art keywords
package
installation package
application program
compressed data
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710109172.6A
Other languages
English (en)
Other versions
CN108519884A (zh
Inventor
余光镇
徐文平
段上杰
曹飞
黄普光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710109172.6A priority Critical patent/CN108519884B/zh
Publication of CN108519884A publication Critical patent/CN108519884A/zh
Application granted granted Critical
Publication of CN108519884B publication Critical patent/CN108519884B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Abstract

本发明公开了一种应用程序安装包更新方法,包括:通过第一标准解析第一应用程序安装包的文件列表,并根据解析出的文件列表计算第一应用程序安装包中压缩数据段的指纹;通过第二标准解析第二应用程序安装包的文件列表,并根据解析出的文件列表计算第二应用程序安装包中压缩数据段的指纹;通过遍历第二应用程序安装包的文件列表,将第二应用程序安装包中压缩数据段的指纹与第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包。本发明还公开了一种应用程序安装包融合方法及相关装置,节省了解压的耗时,并且简化了融合逻辑,解决现有技术中增量融合逻辑复杂,更新效率低的技术问题。

Description

一种应用程序安装包更新方法、融合方法及相关装置
技术领域
本发明涉及计算机领域,尤其涉及应用程序安装包更新方法、应用程序安装包融合方法、应用程序安装包更新装置及应用程序安装融合装置。
背景技术
随着电子科技以及互联网技术的发展,电子设备(特别是智能移动设备)的功能越来越强大,只要用户按照自身的需求在电子设备上安装各种应用程序安装包,便可以通过各种应用程序来完成各种事务。
应用程序开发方往往需要根据用户需求或已发布的应用程序出现的问题等等,来更新应用程序,提供给用户更新后的应用程序安装包。以安卓操作系统中的应用程序安装包(Android Package,APK)为例,如图1a至1b示出的现有技术进行更新的第一方法原理示意图,图1a为补丁包生成流程,通过输入新旧APK整包文件,选择相应算法对新旧APK整包做差分运算,进行增量更新后得到差分补丁包。图1b为对应的图1a的补丁包进行的新包融合流程,用户端或客户端需要下载完毕补丁包后,才能与旧APK整包文件进行增量融合,输出融合新包。
通过图1a至1b的更新方法,由于将新旧APK作为一个整体进行差分,没能充分利用APK包文件的特性,得到的补丁包大,针对图1a至1b的更新方法的问题,现有技术提出了第二种更新方法,如图2a至2b示出的现有技术进行更新的第二方法原理示意图,图2a为补丁包生成流程,先对新旧APK包进行解压处理,再比对解压后的新旧APK的内部文件,计算差分进行增量更新。图2b为对应的图2a的补丁包进行的新包融合流程。虽然通过第二种更新方法得到的补丁包小于第一种更新方法的补丁包,但增量融合逻辑复杂,更新效率低。
发明内容
本发明实施例所要解决的技术问题在于,提供应用程序安装包更新方法、应用程序安装包融合方法、应用程序安装包更新装置及应用程序安装融合装置,解决现有技术中增量融合逻辑复杂,更新效率低的技术问题。
为了解决上述技术问题,本发明实施例第一方面公开了一种应用程序安装包更新方法,包括:
通过第一标准解析第一应用程序安装包的文件列表,并根据解析出的文件列表计算所述第一应用程序安装包中压缩数据段的指纹;所述第一标准为与所述第一应用程序安装包格式相对应的解析标准;
通过第二标准解析第二应用程序安装包的文件列表,并根据解析出的文件列表计算所述第二应用程序安装包中压缩数据段的指纹;所述第二标准为与所述第二应用程序安装包格式相对应的解析标准;
通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包。
结合第一方面,在第一种可能的实现方式中,所述通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包,包括:
根据第二应用程序安装包的文件列表判断所述第二应用程序安装包的内部文件是否遍历完毕;
当判断没有遍历完毕时,读取所述第二应用程序安装包中内部文件的文件头,并将所述文件头写入补丁包;
若所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取的所述内部文件对应的压缩数据段的指纹,则生成第一标识,并将所述第一标识以及读取的所述第二应用程序安装包中内部文件对应的压缩数据段写入所述补丁包;所述第一标识用于指示针对读取的所述文件头使用所述内部文件对应的压缩数据段;
若所述第一应用程序安装包中存在目标压缩数据段的指纹,则生成第二标识,并将所述第二标识写入所述补丁包;所述目标压缩数据段的指纹为与读取的所述内部文件对应的压缩数据段的指纹一致的指纹;所述第二标识用于指示针对读取的所述文件头使用所述目标压缩数据段。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取的所述内部文件对应的压缩数据段的指纹,包括:
所述第一应用程序安装包中不存在与读取的所述文件头相应的文件;或者
所述第一应用程序安装包中存在与读取的所述文件头相应的文件,但所述相应的文件的压缩数据段的指纹与读取的所述内部文件对应的压缩数据段的指纹不一致。
结合第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,在第三种可能的实现方式中,当判断遍历完毕时,生成应用程序安装包的补丁包。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述生成应用程序安装包的补丁包之后,还包括:
对所述补丁包进行压缩处理,得到压缩处理后的补丁包。
本发明实施例第二方面公开了一种应用程序安装包融合方法,包括:
下载应用程序对应的补丁包;所述补丁包为通过上述第一方面所述的方法生成的补丁包;
根据所述补丁包进行融合处理,生成所述应用程序对应的融合包。
结合第二方面,在第一种可能的实现方式中,所述根据所述补丁包进行融合处理,生成所述应用程序对应的融合包,包括:
对压缩处理后的补丁包进行解压处理,得到解压处理后的补丁包;
根据所述解压处理后的补丁包的文件列表判断所述解压处理后的补丁包的文件头是否遍历完毕;
当判断没有遍历完毕时,将所述解压处理后的补丁包中的文件头写入融合包;
若所述文件头对应有第一标识,则将所述解压处理后的补丁包中所述文件头对应的所述第二应用程序安装包中内部文件的压缩数据段写入融合包;
若所述文件头对应有第二标识,则从所述第一应用程序安装包中读取与所述文件头对应的目标压缩数据段,并写入融合包;
当判断遍历完毕时,输出所述融合包。
本发明实施例第三方面公开了一种应用程序安装包更新装置,包括:
第一解析计算模块,用于通过第一标准解析第一应用程序安装包的文件列表,并根据解析出的文件列表计算所述第一应用程序安装包中压缩数据段的指纹;所述第一标准为与所述第一应用程序安装包格式相对应的解析标准;
第二解析计算模块,用于通过第二标准解析第二应用程序安装包的文件列表,并根据解析出的文件列表计算所述第二应用程序安装包中压缩数据段的指纹;所述第二标准为与所述第二应用程序安装包格式相对应的解析标准;
比对生成模块,用于通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包。
结合第三方面,在第一种可能的实现方式中,所述比对生成模块包括:
遍历判断单元,用于根据第二应用程序安装包的文件列表判断所述第二应用程序安装包的内部文件是否遍历完毕;
读取写入单元,用于当判断没有遍历完毕时,读取所述第二应用程序安装包中内部文件的文件头,并将所述文件头写入补丁包;
第一生成写入单元,用于若所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取的所述内部文件对应的压缩数据段的指纹,则生成第一标识,并将所述第一标识以及读取的所述第二应用程序安装包中内部文件对应的压缩数据段写入所述补丁包;所述第一标识用于指示针对读取的所述文件头使用所述内部文件对应的压缩数据段;
第二生成写入单元,用于若所述第一应用程序安装包中存在目标压缩数据段的指纹,则生成第二标识,并将所述第二标识写入所述补丁包;所述目标压缩数据段的指纹为与读取的所述内部文件对应的压缩数据段的指纹一致的指纹;所述第二标识用于指示针对读取的所述文件头使用所述目标压缩数据段。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取的所述内部文件对应的压缩数据段的指纹,包括:
所述第一应用程序安装包中不存在与读取的所述文件头相应的文件;或者
所述第一应用程序安装包中存在与读取的所述文件头相应的文件,但所述相应的文件的压缩数据段的指纹与读取的所述内部文件对应的压缩数据段的指纹不一致。
结合第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述比对生成模块还包括:
补丁包生成单元,用于当判断遍历完毕时,生成应用程序安装包的补丁包。
结合第三方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
压缩模块,用于在所述补丁包生成单元生成应用程序安装包的补丁包之后,对所述补丁包进行压缩处理,得到压缩处理后的补丁包。
本发明实施例第四方面公开了一种应用程序安装包融合装置,包括:
下载模块,用于下载应用程序对应的补丁包;所述补丁包为通过上述第三方面所述的装置生成的补丁包;
融合生成模块,用于根据所述补丁包进行融合处理,生成所述应用程序对应的融合包。
结合第四方面,在第一种可能的实现方式中,所述融合生成模块包括:
解压单元,用于对所述压缩模块压缩处理后的补丁包进行解压处理,得到解压处理后的补丁包;
遍历单元,用于根据所述解压处理后的补丁包的文件列表判断所述解压处理后的补丁包的文件头是否遍历完毕;
文件头写入单元,用于当判断没有遍历完毕时,将所述解压处理后的补丁包中的文件头写入融合包;
第一写入单元,用于若所述文件头对应有第一标识,则将所述解压处理后的补丁包中所述文件头对应的所述第二应用程序安装包中内部文件的压缩数据段写入融合包;
第二写入单元,用于若所述文件头对应有第二标识,则从所述第一应用程序安装包中读取与所述文件头对应的目标压缩数据段,并写入融合包;
输出单元,用于当判断遍历完毕时,输出所述融合包。
实施本发明实施例,通过采用与应用程序安装包格式相对应的解析标准解析应用程序安装包的文件列表,然后根据解析出的文件列表计算应用程序安装包中压缩数据段的指纹,而并非对应用程序安装包进行解压,节省了解压的耗时,并且简化了融合逻辑,解决现有技术中增量融合逻辑复杂,更新效率低的技术问题。并且本发明实施例在融合过程中避免了对数据进行解压和压缩,解决了现有技术在融合过程中由于涉及压缩导致不能保证完整还原的问题;另外,本发明实施例的更新方法支持流式融合,下载端可以在下载应用程序补丁包的过程中进行流失融合,的保证了融合过程的高效性;本发明实施例还可以对补丁包进行压缩得到压缩后的补丁包,可以进一步缩小补丁包的体积。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是现有技术进行更新的第一方法原理示意图;
图1b是现有技术进行更新的第一方法原理示意图;
图2a是现有技术进行更新的第二方法原理示意图;
图2b是现有技术进行更新的第二方法原理示意图;
图3是本发明实施例提供的应用程序安装包更新方法的流程示意图;
图4是本发明提供的应用程序安装包更新方法的另一实施例的流程示意图;
图5是本发明实施例提供的应用程序安装包APK的结构示意图;
图6是本发明实施例提供的应用程序安装包融合方法的流程示意图;
图7是本发明实施例提供的应用程序安装包更新装置的结构示意图;
图8是本发明实施例提供的比对生成模块的结构示意图;
图9是本发明提供的应用程序安装包更新装置的另一实施例的结构示意图;
图10是本发明实施例提供的应用程序安装包融合装置的结构示意图;
图11是本发明实施例提供的融合生成模块的结构示意图;
图12是本发明提供的应用程序安装包融合装置的另一实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
如图3示出的本发明实施例提供的应用程序安装包更新方法的流程示意图,可以包括如下步骤:
步骤S300:通过第一标准解析第一应用程序安装包的文件列表,并根据解析出的文件列表计算所述第一应用程序安装包中压缩数据段的指纹;
步骤S302:通过第二标准解析第二应用程序安装包的文件列表,并根据解析出的文件列表计算所述第二应用程序安装包中压缩数据段的指纹;
具体地,本发明实施例中的第一标准为与该第一应用程序安装包格式相对应的解析标准;第二标准为与该第二应用程序安装包格式相对应的解析标准;以安卓操作系统中的应用程序安装包APK为例,APK格式为zip标准格式,那么即可以采用zip标准来解析APK的文件列表。若应用程序安装包为其它格式,如IOS操作系统的应用程序安装包,那么采用与其格式相对应的解析标准来解析即可。
需要说明的是,步骤S300和步骤S302中,在获取到应用程序安装包(包括第一应用程序安装包和第二应用程序安装包)的文件列表后,解析该文件列表,然后根据解析出的文件列表计算应用程序安装包中压缩数据段的指纹;应用程序安装包的文件列表通常包括多个文件,即应用程序安装包在解压前通常包括多个内部压缩文件,每个压缩文件对应有压缩数据段。本发明实施例中压缩数据段的指纹可以包括压缩数据段的消息摘要算法第五版(Message Digest Algorithm,MD5)信息摘要等,用于表征该压缩数据段特征的特征信息。
还需要说明的是,步骤S300与步骤S302的执行部分先后顺序,可以先执行步骤S300再执行步骤S302,也可以先执行步骤S302再执行步骤S300,还可以同时执行步骤S300和步骤S302。本发明实施例中的第一应用程序安装包的生成时间早于第二应用程序安装包的生成时间,也就是说,第一应用程序安装包为旧的安装包,第二应用程序安装包为新的安装包,需要针对该第一应用程序安装包进行更新操作。
步骤S304:通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包。
具体地,遍历第二应用程序安装包的文件列表,将第二应用程序安装包中每个内部文件对应的压缩数据段的指纹与第一应用程序安装包中压缩数据段的指纹进行比对,再完成第二应用程序安装包中所有内部文件的比对后,即得到应用程序安装包的补丁包。具体的比对方式可以采用图2a的现有技术中比对方式(但不限于此比对方式):
1、若第二应用程序安装包中的当前内部文件为新增的内部文件,则将该当前内部文件对应的压缩数据段直接写入补丁包,并进行相应标记(或生成相应标识),以指示针对该当前内部文件使用该第二应用程序安装包中的当前内部文件对应的压缩数据段;
2、若第一应用程序安装包中与第二应用程序安装包中的当前内部文件相应的内部文件,但文件内容不相同,则可以将第二应用程序安装包中的当前内部文件与第一应用程序安装包中该相应的内部文件做差分计算,然后将差分数据写入补丁包,并进行相应标记(或生成相应标识),以指示针对该当前内部文件使用该差分数据进行融合处理;
3、若第一应用程序安装包中与第二应用程序安装包中的当前内部文件相应的内部文件,且文件内容不相同,则将标记针对该当前内部文件使用第一应用程序安装包中该相应的内部文件的压缩数据段。
通过本发明实施例,通过采用与应用程序安装包格式相对应的解析标准解析应用程序安装包的文件列表,然后根据解析出的文件列表计算应用程序安装包中压缩数据段的指纹,而并非对应用程序安装包进行解压,节省了解压的耗时,并且简化了融合逻辑,解决现有技术中增量融合逻辑复杂,更新效率低的技术问题。
下面结合图4示出的本发明提供的应用程序安装包更新方法的另一实施例的流程示意图,具体以针对APK的更新为例,来进一步说明如何进行更新,可以包括如下步骤:
步骤S400:通过zip标准解析第一应用程序安装包的文件列表,并根据解析出的文件列表计算该第一应用程序安装包中压缩数据段的MD5信息摘要;
步骤S402:通过zip标准解析第二应用程序安装包的文件列表,并根据解析出的文件列表计算该第二应用程序安装包中压缩数据段的MD5信息摘要;
步骤S404:遍历该第二应用程序安装包的文件列表;
步骤S406:判断该第二应用程序安装包的内部文件是否遍历完毕;
具体地,当判断没有遍历完毕时,执行步骤S408;当判断遍历完毕时,执行步骤S418。
步骤S408:读取该第二应用程序安装包中内部文件的文件头,并将该文件头写入补丁包;
具体地,继续读取下一个(或第一次读取)该第二应用程序安装包中内部文件的文件头,将该文件头写入补丁包。本发明实施例中的APK的格式如图5所示,可以包括多个文件头及其对应的压缩数据段,文件头可以包括指示其对应的压缩数据段的起始位置和结束位置等信息。
步骤S410:针对该内部文件比对第二应用程序安装包中压缩数据段的MD5信息摘要与第一应用程序安装包中压缩数据段的MD5信息摘要;
具体地,比对的结果具体分为下面步骤S412至步骤S416。
步骤S412:若该第一应用程序安装包中所有压缩数据段的MD5信息摘要都不存在读取的该内部文件对应的压缩数据段的MD5信息摘要,则生成第一标识;
具体地,第一应用程序安装包中所有压缩数据段的MD5信息摘要都不存在读取的所述内部文件对应的压缩数据段的MD5信息摘要的情况可以包括如下两种:
a、第一应用程序安装包中不存在与读取的所述文件头相应的文件,即读取的该文件头相应的文件为新增文件;b、第一应用程序安装包中存在与读取的该文件头相应的文件,但该相应的文件的压缩数据段的MD5信息摘要与读取的所述内部文件对应的压缩数据段的MD5信息摘要不一致。
需要说明的是,本发明实施例中的第一标识用于指示针对读取的该文件头使用第二应用程序安装包中该内部文件对应的压缩数据段;
步骤S414:将该第一标识以及读取的该第二应用程序安装包中内部文件对应的压缩数据段写入补丁包;
具体地,将第一标识写入补丁包,以及直接将读取的该第二应用程序安装包中内部文件对应的压缩数据段以及该第一标识写入补丁包,不做差分计算。由于现有技术的融合过程涉及压缩导致不能保证数据的完整还原,因为虽然数据相同,但如果采用的压缩率和压缩级别不同,压缩结果也会不一样,即使压缩率和压缩级别一致,但压缩工具不同的话,压缩结果也会不一样,从而导致融合包与新包文件的二进制内容不一样,引起无法安装的问题。本发明实施例无需做差分计算,避免了数据的解压,后续也避免了差分融合时压缩,很好地保证了数据能够完整还原。
步骤S416:若第一应用程序安装包中存在目标压缩数据段的MD5信息摘要,则生成第二标识,并将该第二标识写入补丁包;
具体地,该目标压缩数据段的MD5信息摘要为与读取的该内部文件对应的压缩数据段的MD5信息摘要一致的MD5信息摘要;该第二标识用于指示针对读取的该文件头使用该目标压缩数据段。
步骤S418:生成应用程序安装包的补丁包;
步骤S420:对所述补丁包进行压缩处理,得到压缩处理后的补丁包。
具体地,可以对补丁包进行gzip压缩,得到压缩处理后的补丁包。通过对补丁包的压缩,可以进一步缩小补丁包的体积。
针对本发明实施例提供的应用程序安装包更新方法得到的补丁包,相应地,用户端(或客户端)的设备或装置在下载该补丁包来更新自身的应用程序安装包时,具体可以包括:下载应用程序对应的补丁包;该补丁包为通过上述图3至图5所述的应用程序安装包更新方法得到的补丁包;然后根据所述补丁包进行融合处理,生成所述应用程序对应的融合包。
具体地,针对图4的更新方法得到的补丁包,结合图6示出的本发明提供的融合方法,对应说明本发明实施例的应用程序安装包的融合方法,在步骤S420之后,还包括一下步骤:
步骤S600:下载应用程序对应的补丁包;
具体地,该补丁包为进行了压缩处理后的补丁包。
步骤S602:对压缩处理后的补丁包进行解压处理,得到解压处理后的补丁包;
具体地,若对补丁包进行gzip压缩,那么可以采用gzip标准进行解压处理,得到解压处理后的补丁包。
步骤S604:根据所述解压处理后的补丁包的文件列表判断所述解压处理后的补丁包的文件头是否遍历完毕;
具体地,当判断没有遍历完毕时,执行步骤S606;当判断遍历完毕时,执行步骤S612。
步骤S606:将所述解压处理后的补丁包中的文件头写入融合包;
具体地,继续读取下一个(或第一次读取)该解压处理后的补丁包中的文件头,并将该文件头写入融合包。然后根据该文件头对应的标识进行融合操作,如下面的步骤S608和步骤S610。
步骤S608:若所述文件头对应有第一标识,则将所述解压处理后的补丁包中所述文件头对应的所述第二应用程序安装包中内部文件的压缩数据段写入融合包;
具体地,若该文件头对应有第一标识,该第一标识为指示针对读取的该文件头使用第二应用程序安装包中该内部文件对应的压缩数据段;那么直接读取该解压处理后的补丁包中的压缩数据段写入融合包,该压缩数据段为该第二应用程序安装包中内部文件。
步骤S610:若所述文件头对应有第二标识,则从所述第一应用程序安装包中读取与所述文件头对应的目标压缩数据段,并写入融合包;
具体地,若该文件头对应有第二标识,该第二标识指示针对读取的该文件头使用该目标压缩数据段,则从该第一应用程序安装包中读取与该文件头对应的目标压缩数据段,并写入融合包。
需要说明的是,融合过程中不涉及压缩,步骤S608和步骤S610都是直接拷贝原始压缩数据段,因此能够保证数据的完整还原。
步骤S612:输出所述融合包。
实施本发明实施例,通过采用与应用程序安装包格式相对应的解析标准解析应用程序安装包的文件列表,然后根据解析出的文件列表计算应用程序安装包中压缩数据段的指纹,而并非对应用程序安装包进行解压,节省了解压的耗时,并且简化了融合逻辑,解决现有技术中增量融合逻辑复杂,更新效率低的技术问题。并且本发明实施例在融合过程中避免了对数据进行解压和压缩,解决了现有技术在融合过程中由于涉及压缩导致不能保证完整还原的问题;另外,本发明实施例的更新方法支持流式融合,下载端可以在下载应用程序补丁包的过程中进行流失融合,的保证了融合过程的高效性;本发明实施例还可以对补丁包进行压缩得到压缩后的补丁包,可以进一步缩小补丁包的体积。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种应用程序安装包更新装置,下面结合附图来进行详细说明:
如图7示出的本发明实施例提供的应用程序安装包更新装置的结构示意图,应用程序安装包更新装置70可以包括第一解析计算模块700、第二解析计算模块702和比对生成模块704,其中,
第一解析计算模块700用于通过第一标准解析第一应用程序安装包的文件列表,并根据解析出的文件列表计算所述第一应用程序安装包中压缩数据段的指纹;所述第一标准为与所述第一应用程序安装包格式相对应的解析标准;
第二解析计算模块702用于通过第二标准解析第二应用程序安装包的文件列表,并根据解析出的文件列表计算所述第二应用程序安装包中压缩数据段的指纹;所述第二标准为与所述第二应用程序安装包格式相对应的解析标准;
比对生成模块704用于通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包。
具体地,如图8示出的本发明实施例提供的比对生成模块的结构示意图,比对生成模块704可以包括:遍历判断单元7040、读取写入单元7042、第一生成写入单元7044、第二生成写入单元7046和补丁包生成单元7048,其中,
遍历判断单元7040用于根据第二应用程序安装包的文件列表判断所述第二应用程序安装包的内部文件是否遍历完毕;
读取写入单元7042用于当判断没有遍历完毕时,读取所述第二应用程序安装包中内部文件的文件头,并将所述文件头写入补丁包;
第一生成写入单元7044用于若所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取的所述内部文件对应的压缩数据段的指纹,则生成第一标识,并将所述第一标识以及读取的所述第二应用程序安装包中内部文件对应的压缩数据段写入所述补丁包;所述第一标识用于指示针对读取的所述文件头使用所述内部文件对应的压缩数据段;
第二生成写入单元7046用于若所述第一应用程序安装包中存在目标压缩数据段的指纹,则生成第二标识,并将所述第二标识写入所述补丁包;所述目标压缩数据段的指纹为与读取的所述内部文件对应的压缩数据段的指纹一致的指纹;所述第二标识用于指示针对读取的所述文件头使用所述目标压缩数据段。
补丁包生成单元7048用于当判断遍历完毕时,生成应用程序安装包的补丁包。
进一步地,应用程序安装包更新装置70还可以包括压缩模块,用于在补丁包生成单元7048生成应用程序安装包的补丁包之后,对所述补丁包进行压缩处理,得到压缩处理后的补丁包。
再进一步地,如图9示出的本发明提供的应用程序安装包更新装置的另一实施例的结构示意图,应用程序安装包更新装置90可以包括:至少一个处理器901,例如CPU,至少一个网络接口904,用户接口903,存储器905,至少一个通信总线902、显示屏906。其中,通信总线902用于实现这些组件之间的连接通信。其中,用户接口903可以包括触摸屏等等。网络接口904可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器905可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器905包括本发明实施例中的flash。存储器905可选的还可以是至少一个位于远离前述处理器901的存储系统。如图9所示,作为一种计算机存储介质的存储器905中可以包括操作系统、网络通信模块、用户接口模块以及应用程序安装包更新程序。
在图9所示的应用程序安装包更新装置90中,处理器901可以用于调用存储器905中存储的应用程序安装包更新程序,并执行以下操作:
通过第一标准解析第一应用程序安装包的文件列表,并根据解析出的文件列表计算所述第一应用程序安装包中压缩数据段的指纹;所述第一标准为与所述第一应用程序安装包格式相对应的解析标准;
通过第二标准解析第二应用程序安装包的文件列表,并根据解析出的文件列表计算所述第二应用程序安装包中压缩数据段的指纹;所述第二标准为与所述第二应用程序安装包格式相对应的解析标准;
通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包。
具体地,处理器901通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包,可以包括:
根据第二应用程序安装包的文件列表判断所述第二应用程序安装包的内部文件是否遍历完毕;
当判断没有遍历完毕时,读取所述第二应用程序安装包中内部文件的文件头,并将所述文件头写入补丁包;
若所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取的所述内部文件对应的压缩数据段的指纹,则生成第一标识,并将所述第一标识以及读取的所述第二应用程序安装包中内部文件对应的压缩数据段写入所述补丁包;所述第一标识用于指示针对读取的所述文件头使用所述内部文件对应的压缩数据段;
若所述第一应用程序安装包中存在目标压缩数据段的指纹,则生成第二标识,并将所述第二标识写入所述补丁包;所述目标压缩数据段的指纹为与读取的所述内部文件对应的压缩数据段的指纹一致的指纹;所述第二标识用于指示针对读取的所述文件头使用所述目标压缩数据段。
具体地,所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取的所述内部文件对应的压缩数据段的指纹,包括:
所述第一应用程序安装包中不存在与读取的所述文件头相应的文件;或者
所述第一应用程序安装包中存在与读取的所述文件头相应的文件,但所述相应的文件的压缩数据段的指纹与读取的所述内部文件对应的压缩数据段的指纹不一致。
具体地,处理器901在判断遍历完毕时,生成应用程序安装包的补丁包。
具体地,处理器901生成应用程序安装包的补丁包之后,还可以执行:
对所述补丁包进行压缩处理,得到压缩处理后的补丁包。
需要说明的是,本发明实施例中的应用程序安装包更新装置70或应用程序安装包更新装置90中各模块的功能可对应参考上述各方法实施例中图3至图5任意实施例的具体实现方式,这里不再赘述。应用程序安装包更新装置70或应用程序安装包更新装置90可以包括但不限于个人计算机、智能移动终端(如移动电话、移动电脑、平板电脑)、等电子设备或终端设备。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种应用程序安装包融合装置,下面结合附图来进行详细说明:
如图10示出的本发明实施例提供的应用程序安装包融合装置的结构示意图,应用程序安装包融合装置10可以包括下载模块100和融合生成模块102,其中,
下载模块100用于下载应用程序对应的补丁包;所述补丁包为通过上述图7至图9所述的应用程序安装包更新装置生成的补丁包;
融合生成模块,用于根据所述补丁包进行融合处理,生成所述应用程序对应的融合包。
具体地,如图11示出的本发明实施例提供的融合生成模块的结构示意图,融合生成模块102可以包括:解压单元1020、遍历单元1022、文件头写入单元1024、第一写入单元1026、第二写入单元1028和输出单元10210,其中,
解压单元1020用于对所述压缩模块压缩处理后的补丁包进行解压处理,得到解压处理后的补丁包;
遍历单元1022用于根据所述解压处理后的补丁包的文件列表判断所述解压处理后的补丁包的文件头是否遍历完毕;
文件头写入单元1024用于当判断没有遍历完毕时,将所述解压处理后的补丁包中的文件头写入融合包;
第一写入单元1026用于若所述文件头对应有第一标识,则将所述解压处理后的补丁包中所述文件头对应的所述第二应用程序安装包中内部文件的压缩数据段写入融合包;
第二写入单元1028用于若所述文件头对应有第二标识,则从所述第一应用程序安装包中读取与所述文件头对应的目标压缩数据段,并写入融合包;
输出单元10210用于当判断遍历完毕时,输出所述融合包。
请参阅图12,图12是本发明提供的应用程序安装包融合装置的另一实施例的结构示意图。其中,如图12所示,应用程序安装包融合装置120可以包括:至少一个处理器1201,例如CPU,至少一个网络接口1204,用户接口1203,存储器1205,至少一个通信总线1202、显示屏1206以及摄像模块1207。其中,通信总线1202用于实现这些组件之间的连接通信。其中,用户接口1203可以包括触摸屏等等。网络接口1204可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1205可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器1205包括本发明实施例中的flash。存储器1205可选的还可以是至少一个位于远离前述处理器1201的存储系统。如图12所示,作为一种计算机存储介质的存储器1205中可以包括操作系统、网络通信模块、用户接口模块以及应用程序安装包融合程序。
在图12所示的应用程序安装包融合装置120中,处理器1201可以用于调用存储器1205中存储的应用程序安装包融合程序,并执行以下操作:
通过网络接口1204下载应用程序对应的补丁包;所述补丁包为通过上述图7至图9所述的应用程序安装包更新装置生成的补丁包;
根据所述补丁包进行融合处理,生成所述应用程序对应的融合包.
具体地,处理器1201根据所述补丁包进行融合处理,生成所述应用程序对应的融合包,可以包括:
对压缩处理后的补丁包进行解压处理,得到解压处理后的补丁包;
根据所述解压处理后的补丁包的文件列表判断所述解压处理后的补丁包的文件头是否遍历完毕;
当判断没有遍历完毕时,将所述解压处理后的补丁包中的文件头写入融合包;
若所述文件头对应有第一标识,则将所述解压处理后的补丁包中所述文件头对应的所述第二应用程序安装包中内部文件的压缩数据段写入融合包;
若所述文件头对应有第二标识,则从所述第一应用程序安装包中读取与所述文件头对应的目标压缩数据段,并写入融合包;
当判断遍历完毕时,输出所述融合包。
需要说明的是,本发明实施例中的应用程序安装包融合装置10或应用程序安装包融合装置120中各模块的功能可对应参考上述各方法实施例中图6实施例的具体实现方式,这里不再赘述。应用程序安装包融合装置10或应用程序安装包融合装置120可以包括但不限于个人计算机、智能移动终端(如移动电话、移动电脑、平板电脑)、个人数字助理(Personal Digital Assistant,PDA)、智能电视、智能手表、智能眼镜、智能手环等安装有应用程序的电子设备或终端设备。
实施本发明实施例,通过采用与应用程序安装包格式相对应的解析标准解析应用程序安装包的文件列表,然后根据解析出的文件列表计算应用程序安装包中压缩数据段的指纹,而并非对应用程序安装包进行解压,节省了解压的耗时,并且简化了融合逻辑,解决现有技术中增量融合逻辑复杂,更新效率低的技术问题。并且本发明实施例在融合过程中避免了对数据进行解压和压缩,解决了现有技术在融合过程中由于涉及压缩导致不能保证完整还原的问题;另外,本发明实施例的更新方法支持流式融合,下载端可以在下载应用程序补丁包的过程中进行流失融合,的保证了融合过程的高效性;本发明实施例还可以对补丁包进行压缩得到压缩后的补丁包,可以进一步缩小补丁包的体积。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (14)

1.一种应用程序安装包更新方法,其特征在于,包括:
通过第一标准解析第一应用程序安装包的文件列表,并根据解析出的文件列表计算所述第一应用程序安装包中压缩数据段的指纹;所述第一标准为与所述第一应用程序安装包格式相对应的解析标准;
通过第二标准解析第二应用程序安装包的文件列表,并根据解析出的文件列表计算所述第二应用程序安装包中压缩数据段的指纹;所述第二标准为与所述第二应用程序安装包格式相对应的解析标准;
通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包,包括:若所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取所述第二应用程序安装包中内部文件对应的压缩数据段的指纹,则生成第一标识,并将所述第一标识以及读取所述第二应用程序安装包中内部文件对应的压缩数据段写入所述补丁包,所述第一标识用于指示针对读取的所述第二应用程序安装包中内部文件的文件头使用所述内部文件对应的压缩数据段。
2.如权利要求1所述的方法,其特征在于,所述通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包,包括:
根据第二应用程序安装包的文件列表判断所述第二应用程序安装包的内部文件是否遍历完毕;
当判断没有遍历完毕时,读取所述第二应用程序安装包中内部文件的文件头,并将所述文件头写入补丁包;
若所述第一应用程序安装包中存在目标压缩数据段的指纹,则生成第二标识,并将所述第二标识写入所述补丁包;所述目标压缩数据段的指纹为与读取的所述内部文件对应的压缩数据段的指纹一致的指纹;所述第二标识用于指示针对读取的所述文件头使用所述目标压缩数据段。
3.如权利要求2所述的方法,其特征在于,所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取的所述内部文件对应的压缩数据段的指纹,包括:
所述第一应用程序安装包中不存在与读取的所述文件头相应的文件;或者
所述第一应用程序安装包中存在与读取的所述文件头相应的文件,但所述相应的文件的压缩数据段的指纹与读取的所述内部文件对应的压缩数据段的指纹不一致。
4.如权利要求2或3所述的方法,其特征在于,当判断遍历完毕时,生成应用程序安装包的补丁包。
5.如权利要求4所述的方法,其特征在于,所述生成应用程序安装包的补丁包之后,还包括:
对所述补丁包进行压缩处理,得到压缩处理后的补丁包。
6.一种应用程序安装包融合方法,其特征在于,包括:
下载应用程序对应的补丁包;所述补丁包为通过权利要求1所述的方法生成的补丁包;
根据所述补丁包进行融合处理,生成所述应用程序对应的融合包,包括:若所述补丁包中的文件头对应有第一标识,则将所述文件头对应的所述第二应用程序安装包中内部文件的压缩数据段写入融合包。
7.如权利要求6所述的方法,其特征在于,所述补丁包为通过权利要求5所述的方法得到的补丁包;所述根据所述补丁包进行融合处理,生成所述应用程序对应的融合包,包括:
对压缩处理后的补丁包进行解压处理,得到解压处理后的补丁包;
根据所述解压处理后的补丁包的文件列表判断所述解压处理后的补丁包的文件头是否遍历完毕;
当判断没有遍历完毕时,将所述解压处理后的补丁包中的文件头写入融合包;
若所述文件头对应有第二标识,则从所述第一应用程序安装包中读取与所述文件头对应的目标压缩数据段,并写入融合包;
当判断遍历完毕时,输出所述融合包。
8.一种应用程序安装包更新装置,其特征在于,包括:
第一解析计算模块,用于通过第一标准解析第一应用程序安装包的文件列表,并根据解析出的文件列表计算所述第一应用程序安装包中压缩数据段的指纹;所述第一标准为与所述第一应用程序安装包格式相对应的解析标准;
第二解析计算模块,用于通过第二标准解析第二应用程序安装包的文件列表,并根据解析出的文件列表计算所述第二应用程序安装包中压缩数据段的指纹;所述第二标准为与所述第二应用程序安装包格式相对应的解析标准;
比对生成模块,用于通过遍历所述第二应用程序安装包的文件列表,将所述第二应用程序安装包中压缩数据段的指纹与所述第一应用程序安装包中压缩数据段的指纹进行比对,生成应用程序安装包的补丁包,包括:第一生成写入单元,用于若所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取所述第二应用程序安装包中内部文件对应的压缩数据段的指纹,则生成第一标识,并将所述第一标识以及读取所述第二应用程序安装包中内部文件对应的压缩数据段写入所述补丁包,所述第一标识用于指示针对读取的所述第二应用程序安装包中内部文件的文件头使用所述内部文件对应的压缩数据段。
9.如权利要求8所述的装置,其特征在于,所述比对生成模块包括:
遍历判断单元,用于根据第二应用程序安装包的文件列表判断所述第二应用程序安装包的内部文件是否遍历完毕;
读取写入单元,用于当判断没有遍历完毕时,读取所述第二应用程序安装包中内部文件的文件头,并将所述文件头写入补丁包;
第二生成写入单元,用于若所述第一应用程序安装包中存在目标压缩数据段的指纹,则生成第二标识,并将所述第二标识写入所述补丁包;所述目标压缩数据段的指纹为与读取的所述内部文件对应的压缩数据段的指纹一致的指纹;所述第二标识用于指示针对读取的所述文件头使用所述目标压缩数据段。
10.如权利要求9所述的装置,其特征在于,所述第一应用程序安装包中所有压缩数据段的指纹都不存在读取的所述内部文件对应的压缩数据段的指纹,包括:
所述第一应用程序安装包中不存在与读取的所述文件头相应的文件;或者
所述第一应用程序安装包中存在与读取的所述文件头相应的文件,但所述相应的文件的压缩数据段的指纹与读取的所述内部文件对应的压缩数据段的指纹不一致。
11.如权利要求9或10所述的装置,其特征在于,所述比对生成模块还包括:
补丁包生成单元,用于当判断遍历完毕时,生成应用程序安装包的补丁包。
12.如权利要求11所述的装置,其特征在于,还包括:
压缩模块,用于在所述补丁包生成单元生成应用程序安装包的补丁包之后,对所述补丁包进行压缩处理,得到压缩处理后的补丁包。
13.一种应用程序安装包融合装置,其特征在于,包括:
下载模块,用于下载应用程序对应的补丁包;所述补丁包为通过权利要求9所述的装置生成的补丁包;
融合生成模块,用于根据所述补丁包进行融合处理,生成所述应用程序对应的融合包,包括:第一写入单元,用于若所述补丁包中的文件头对应有第一标识,则将所述文件头对应的所述第二应用程序安装包中内部文件的压缩数据段写入融合包。
14.如权利要求13所述的装置,其特征在于,所述补丁包为通过权利要求12所述的装置得到的补丁包;所述融合生成模块包括:
解压单元,用于对所述压缩模块压缩处理后的补丁包进行解压处理,得到解压处理后的补丁包;
遍历单元,用于根据所述解压处理后的补丁包的文件列表判断所述解压处理后的补丁包的文件头是否遍历完毕;
文件头写入单元,用于当判断没有遍历完毕时,将所述解压处理后的补丁包中的文件头写入融合包;
第二写入单元,用于若所述文件头对应有第二标识,则从所述第一应用程序安装包中读取与所述文件头对应的目标压缩数据段,并写入融合包;
输出单元,用于当判断遍历完毕时,输出所述融合包。
CN201710109172.6A 2017-02-27 2017-02-27 一种应用程序安装包更新方法、融合方法及相关装置 Active CN108519884B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710109172.6A CN108519884B (zh) 2017-02-27 2017-02-27 一种应用程序安装包更新方法、融合方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710109172.6A CN108519884B (zh) 2017-02-27 2017-02-27 一种应用程序安装包更新方法、融合方法及相关装置

Publications (2)

Publication Number Publication Date
CN108519884A CN108519884A (zh) 2018-09-11
CN108519884B true CN108519884B (zh) 2022-09-27

Family

ID=63432633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710109172.6A Active CN108519884B (zh) 2017-02-27 2017-02-27 一种应用程序安装包更新方法、融合方法及相关装置

Country Status (1)

Country Link
CN (1) CN108519884B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882735B (zh) * 2021-03-11 2024-04-19 百度在线网络技术(北京)有限公司 熔断信息处理方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103713928B (zh) * 2013-12-31 2017-02-22 优视科技有限公司 增量文件生成方法、应用程序安装文件更新方法及装置
CN105988834B (zh) * 2015-02-12 2019-11-19 腾讯科技(深圳)有限公司 一种应用安装包生成、安装方法及装置
CN104615470A (zh) * 2015-03-04 2015-05-13 成都维远艾珏信息技术有限公司 一种嵌入式设备程序更新方法

Also Published As

Publication number Publication date
CN108519884A (zh) 2018-09-11

Similar Documents

Publication Publication Date Title
CN104503780A (zh) 一种提供应用渠道包的方法和装置
CN106055375B (zh) 应用程序安装方法及装置
CN112947983B (zh) 应用程序更新方法及装置、电子设备、存储介质
CN111240722B (zh) 空中升级固件的方法及其所应用的终端、服务器及系统
CN111666497A (zh) 应用程序的加载方法、装置、电子设备及可读存储介质
CN110781658B (zh) 简历解析方法、装置、电子设备和存储介质
CN106293849B (zh) 一种应用更新方法和终端
CN111897846A (zh) 缓存数据校验方法、装置、设备及存储介质
CN112784112A (zh) 报文校验方法及装置
CN108519884B (zh) 一种应用程序安装包更新方法、融合方法及相关装置
CN109002710B (zh) 一种检测方法、装置及计算机可读存储介质
US8615744B2 (en) Methods and system for managing assets in programming code translation
CN106156235B (zh) 一种基于Android平台的图片下载方法及系统
CN102347772B (zh) 基站文件的压缩处理方法及设备
CN112905464A (zh) 应用运行环境数据处理方法及装置
CN111324586B (zh) 一种基于缓存的图片显示方法、装置、电子设备及介质
CN113515447A (zh) 系统自动化测试方法及装置
CN111538651A (zh) 接口测试方法、装置、服务器及存储介质
CN114402286A (zh) 一种文件处理方法、文件处理装置及终端设备
CN114218441B (zh) 对uof文档进行调用和展示的方法
CN111638903B (zh) 不同软件版本的差异信息生成方法及装置
CN112749130B (zh) 一种清除信息的方法及装置
CN111639055B (zh) 差分包计算方法、装置、设备及存储介质
CN116647447A (zh) 一种应用程序的热更新方法、装置、智能设备及存储介质
CN114942911A (zh) 一种文件浏览方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant