APK文件压缩方法及装置与流程

文档序号:12733029阅读:1078来源:国知局
本发明涉及网络通信
技术领域
:,特别是涉及一种APK文件压缩方法及装置。
背景技术
::智能手机安装的各种软件,是通过应用商店、浏览器等途径下载并安装。当用户下载或升级应用时,经常存在需要对同属一个系列的所有应用进行下载或更新的情况,例如,office系列的APK,或者是同一公司推出的多个应用,此时用户需要逐个分别下载同一系列的所有应用,然后进行安装,这样用户就需要消耗较多的手机流量以及等待较长时间,从而降低了下载效率。技术实现要素:鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决或者减缓上述问题的APK文件压缩方法及装置。根据本发明的一个方面,提供了一种一种APK文件压缩的方法,包括:获取需要推送给客户端的打包文件,所述打包文件为多个APK文件和/或增量升级包;统一处理获取的所有文件,对其进行合并,得到合并数据;对所述合并数据进行压缩处理,生成新的压缩文件存储在云端服务器中;当接收到客户端发来的下载请求或升级请求消息时,将所述新的压缩文件提供给所述客户端。进一步地,还包括:存储在云端服务器中后,向客户端发送软件安装或升级的推送信息。进一步地,所述将获取的所有文件进行合并包括:识别各文件的内容格式;将所述内容格式相同的解压数据合并为一个待压缩单元;其中,所述合并数据包含有至少一个所述待压缩单元。进一步地,所述对所述合并数据进行压缩处理,生成新的压缩数据,包括:根据所述待压缩单元所包含的文件的内容格式,选取对应的压缩算法;根据选取的所述压缩算法,对所述待压缩单元进行压缩处理,生成所述待压缩单元对应的压缩数据;其中,所述新的压缩数据包括有所述合并数据中包含的所有APK的打包数据。进一步地,还包括:提取包含所有APK的打包文件中的元数据信息;将所述元数据信息和所述新的压缩数据重新打包成压缩文件。进一步地,所述元数据信息包括:包含所有APK的打包文件的目录信息和文件头信息。进一步地,还包括:获取所述新的压缩文件在压缩时的压缩参数;将所述压缩参数保存到所述元数据信息中,以根据所述元数据信息中的所述压缩参数对所述新的压缩文件进行解压缩。进一步地,还包括:预先对高版本软件安装包和当前软件安装包进行比较,采用预定算法对二者之间的差异文件进行计算,生成针对所述高版本软件安装包的增量升级包。根据本发明的另一个方面,提供了一种APK文件压缩的装置,包括:获取模块,用于获取需要推送给客户端的打包文件,所述打包文件为多个APK文件和/或增量升级包;合并模块,用于统一处理获取的所有文件,对其进行合并,得到合并数据;压缩模块,用于对所述合并数据进行压缩处理,生成新的压缩文件存储在云端服务器中;文件提供模块,用于当接收到客户端发来的下载请求或升级请求消息时,将所述新的压缩文件提供给所述客户端。进一步地,还包括:消息发送模块,用于存储在云端服务器中后,向客户端发送软件安装或升级的推送信息。进一步地,所述合并模块进一步用于,识别各文件的内容格式;将所述内容格式相同的解压数据合并为一个待压缩单元;其中,所述合并数据包含有至少一个所述待压缩单元。进一步地,所述压缩模块进一步用于,根据所述待压缩单元所包含的文件的内容格式,选取对应的压缩算法;根据选取的所述压缩算法,对所述待压缩单元进行压缩处理,生成所述待压缩单元对应的压缩数据;其中,所述新的压缩数据包括有所述合并数据中包含的所有APK的打包数据。进一步地,所述压缩模块还用于,提取包含所有APK的打包文件中的元数据信息;将所述元数据信息和所述新的压缩数据重新打包成压缩文件。进一步地,所述元数据信息包括:包含所有APK的打包文件的目录信息和文件头信息。进一步地,所述压缩模块还用于,获取所述新的压缩文件在压缩时的压缩参数;将所述压缩参数保存到所述元数据信息中,以根据所述元数据信息中的所述压缩参数对所述新的压缩文件进行解压缩。进一步地,所述获取模块还用于,预先对高版本软件安装包和当前软件安装包进行比较,采用预定算法对二者之间的差异文件进行计算,生成针对所述高版本软件安装包的增量升级包。本发明的有益效果为:本发明压缩后的APK文件数据量更小,因此,用户下载APK文件及APK增量数据包时候可节省一定的下载流量,缩短下载等待时间,提高了下载效率。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1是本发明方法实施例的流程示意图;图2是本发明装置实施例的结构示意图。具体实施例下面结合附图和具体的实施方式对本发明作进一步的描述。首先结合附图1对本发明实施例所述方法进行详细说明。如图1所示,图1为本发明方法实施例所的流程示意图,本实施例提供的所述方法的执行主体可以是文件处理装置,该装置可具体为服务端设备,如云端设备,该方法具体可以包括如下步骤:步骤101:云端服务器获取需要推送给客户端的打包文件;所述打包文件为多个APK和/或APK增量升级包;具体的说就是,APK是AndroidPackage的缩写,即Android安装包(APK)。APK是类似SymbianSis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件和sis一样,把androidsdk编译的工程打包成一个安装程序文件,格式为apk。当用户下载或升级应用时,经常存在需要对同属一个系列的所有应用进行下载或更新的情况,例如,office系列的APK,或者是同一公司推出的多个关联应用,因此,云端服务器获取的需要推送给客户端的打包文件可以是多个APK的软件安装包,也可以是多个APK增 量升级包,还可以是至少一个APK的软件安装包和至少一个APK增量数据包;其中,该APK增量数据包的生成过程包括:预先对高版本软件安装包和当前软件安装包进行比较,采用预定算法(例如差分算法)对二者之间的差异文件进行计算,生成针对所述高版本软件安装包的APK增量升级包。本发明方法实施例中,客户端可以是任何可供用户使用、能够安装各种应用软件的终端设备,例如手机、ipad等。云端服务器具有数据存储及处理的功能,例如在云端服务器的数据中存储有多个APK和APK增量升级包,可以根据主动推送软件安装消息或升级消息给客户端,也可以根据客户端的下载请求消息或升级消息,提供相应的APK和APK增量升级包给客户端。步骤102:统一处理获取的所有文件,对其将进行合并,得到合并数据;具体的说就是,如果有APK软件安装包或者APK增量数据包本身就是压缩格式,那么在合并之前需要先采用通过的解压缩算法进行解压缩,每个APK软件安装包或者APK增量数据包经过解压缩后都会得到对应的一组文件;如果某个APK软件安装包或者APK增量数据包本身是非压缩格式,那么就不用进行任何处理。对于上述非压缩格式的所有文件(包括经过上述解压缩处理的所有多组文件),识别各文件的内容格式,将其中内容格式相同的解压数据合并为一个待压缩单元,其中,内容格式的识别可通过识别文件扩展名和识别文件头,这两种方式来实现。采用识别文件扩展名的方式识别速度快,但准确度要低于采用识别文件头的方式。例如,扩展名是.zip和.jar都是zip格式。文件头是PK开头,表示是zip格式。所有格式都可采用lzma2/lzma作为压缩算法。格式内容识别后进行合并处理得到合并数据包,该合并数据包含有至少一个待压缩单元。例如,应用安装包中包含两种内容格式的解压数据,一种是zip格式;另一种是PNG(PortableNetworkGraphic,可移植网络图形)格式。步骤103:对上述合并数据进行压缩处理,生成新的压缩文件存储在云端服务器中;具体的说就是,根据所述待压缩单元所包含的文件的内容格式,选取对应的压缩算法,根据选取的压缩算法,对待压缩单元进行压缩处理,生成所述待压缩单元对应的压缩数据,即新的压缩数据,新的压缩数据包括有合并数据中包含的所有APK的打包数据。其中压缩的过程包括:提取所有APK文件或者APK增量数据包中的元数据信息,将多个元数据信息进行整理合并,然后和上述合并数据重新进行压缩生成新的压缩文件,其中元数据信息包括:目录信息和文件头信息,目录信息主要记录合并前每个文件的位置,每个文件对应一个文件头信息,文件头信息主要用以区别于其他文件。另外,上述压缩处理时还可以获取所述新的压缩文件在压缩时的压缩参数;将压缩参数保存到元数据信息中,以根据元数据信息中的压缩参数对新的压缩文件进行解压缩。这是由于采用现有解压缩算法,压缩数据可能绝大部分能被完整的解出(即内容完全一样),但还是有有些部分不太可能恢复的与原包一模一样。虽然,从运行结构来看,并不存在任何影响,但还是有出错的可能。为了保证压缩数据解出的解压数据与原包完全一样,且保证不出错,本发明实施例即采用上述过程将所述新的压缩数据在压缩时的压缩参数记录下来并保存到元数据信息中。步骤104:向客户端发送软件安装或升级的推送信息;步骤105:当接收到客户端发来的下载请求或升级请求消息时,将新的压缩文件提供给所述客户端。接下来结合附图2对本发明装置实施例进行详细说明。如图2所示,图2为本发明装置实施例的结构示意图,具体就可以包括:获取模块201,用于获取需要推送给客户端的打包文件,所述打包文件为多个APK文件和/或增量升级包;获取模块还用于,预先对高版本软件安装包和当前软件安装包进行比较,采用预定算法对二者 之间的差异文件进行计算,生成针对所述高版本软件安装包的增量升级包。合并模块202,用于统一处理获取的所有文件,对其进行合并,得到合并数据;具体的说就是,合并模块202识别各文件的内容格式;将内容格式相同的解压数据合并为一个待压缩单元;其中,合并数据包含有至少一个待压缩单元。压缩模块203,用于对所述合并数据进行压缩处理,生成新的压缩文件存储在云端服务器中;具体的说就是,压缩模块203根据所述待压缩单元所包含的文件的内容格式,选取对应的压缩算法;根据选取的压缩算法,对待压缩单元进行压缩处理,生成待压缩单元对应的压缩数据;其中,新的压缩数据包括有合并数据中包含的所有APK的打包数据。压缩模块203还用于,提取包含所有APK的打包文件中的元数据信息;将所述元数据信息和所述新的压缩数据重新打包成压缩文件。以及,获取所述新的压缩文件在压缩时的压缩参数;将所述压缩参数保存到所述元数据信息中,以根据所述元数据信息中的所述压缩参数对所述新的压缩文件进行解压缩。其中,元数据信息包括:包含所有APK的打包文件的目录信息和文件头信息。文件提供模块204,用于当接收到客户端发来的请求下载或升级消息时,将压缩模块203处理后的新的压缩文件提供给所述客户端。作为本发明装置实施例的最佳实施例,还可以包括:消息发送模块205,用于存储在云端服务器中后,向客户端发送软件安装或升级的推送信息。需要说明的是,对于上述装置的具体实现过程,上述方法已进行详细说明,故此处不再赘述。综上所述,本发明实施例提供了一种APK文件压缩方法及装置,与采用现有技术相比相比,压缩后的APK文件数据量更小,因此,用户下载APK文件及APK增量数据包时候可节省一定的下载流量,缩短下载等待时间,提高了下载效率。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。本文中所称的“一个实施例”、“实施例”或者“一个或者多个实施例”意味着,结合实施例描述的特定特征、结构或者特性包括在本发明的至少一个实施例中。此外,请注意,这里“在一个实施例中”的词语例子不一定全指同一个实施例。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。此外,还应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1