一种程序安装文件的生成、处理方法及装置
文献发布时间:2023-06-19 11:03:41
技术领域
本申请涉及互联网技术领域,具体涉及一种程序安装文件的生成、处理方法及装置。
背景技术
在安卓(Android)平台中,应用程序的所有文件会被编译并打包成APK(Androidapplication package,Android应用程序包)格式的APK可执行文件,APK文件可用于分发和安装基于Android平台的应用程序随着项目不断的升级迭代,代码和资源均在累加,使得APK文件越来越大,使得用户在获取APK文件时,不仅消耗流量资源而且加大下载时长,从而降低应用程序的安装速率,影响用户使用体验。
发明内容
有鉴于此,本申请实施例提供一种程序安装文件的生成、处理方法及装置,以减小程序安装文件,提高程序安装文件的下载速率以及节省网络资源。
为解决上述问题,本申请实施例提供的技术方案如下:
一种程序安装文件的生成方法,所述方法包括:
确定待打包文件中的待压缩文件;
将所述待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件;
将所述压缩文件转换为第一动态库文件;
将所述待打包文件中的非待压缩文件以及所述第一动态库文件进行打包操作生成第一程序安装文件。
在一种可能的实现方式中,所述确定待打包文件中的待压缩文件,包括:
获取所述待打包文件中预定义的待压缩文件;
和/或,
获取各个待打包文件的文件大小,将文件大小超过阈值的待打包文件确定为待压缩文件。
在一种可能的实现方式中,在确定待打包文件中的待压缩文件之前,所述方法还包括:
将类文件编译生成安卓可执行文件,将所述安卓可执行文件确定为待打包文件,或者,解压第二程序安装文件获取安卓可执行文件,将所述安卓可执行文件确定为待打包文件。
在一种可能的实现方式中,当所述待压缩文件为动态库类型的文件时,所述将所述压缩文件转换为第一动态库文件,包括:
将所述压缩文件的最后一级扩展名删除,得到第一动态库文件;
当所述待压缩文件为非动态库类型的文件时,所述将所述压缩文件转换为第一动态库文件,包括:
将所述压缩文件的最后一级扩展名替换为动态库类型的扩展名,得到第一动态库文件。
在一种可能的实现方式中,所述将所述待打包文件中的非待压缩文件以及所述第一动态库文件进行打包操作生成第一程序安装文件,包括:
将所述待打包文件中的非待压缩文件中的第二动态库文件以及所述第一动态库文件进行第二压缩操作,生成第三动态库文件;
将其他非待压缩文件以及所述第三动态库文件进行打包操作生成第一程序安装文件。
一种程序安装文件的处理方法,所述方法包括:
对程序安装文件进行解包操作,获得第一动态库文件;
将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作。
在一种可能的实现方式中,所述对程序安装文件进行解包操作,获得第一动态库文件,包括:
对程序安装文件进行解包操作,获得第三动态库文件;
从所述第三动态库文件中确定第一动态库文件。
在一种可能的实现方式中,所述从所述第三动态库文件中确定第一动态库文件,包括:
将所述第三动态库文件进行第二解压缩操作,从所述第二解压缩操作得到的动态库类型的文件中识别第一动态库文件。
在一种可能的实现方式中,所述将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,包括:
识别所述第一动态库文件对应的原始文件类型;
当识别所述第一动态库文件对应的原始文件类型为动态库类型,直接将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,得到动态库类型的文件;
当识别所述第一动态库文件对应的原始文件类型为非动态库类型,将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,将所述第一解压缩操作得到的动态库类型的文件的最后一级扩展名删除,得到原始文件类型的文件。
在一种可能的实现方式中,所述识别所述第一动态库文件对应的原始文件类型,包括:
根据第一动态库文件对应的文件名查询对应的原始文件类型;
或者,
识别所述第一动态库文件中的文件类型标志位,确定所述第一动态库文件对应的原始文件类型;
或者,
当所述第一动态库文件中仅包括动态库类型的扩展名时,识别所述第一动态库文件对应的原始文件类型为动态库类型,当所述第一动态库文件中包括动态库类型的扩展名以及非动态库类型的扩展名时,根据所包括的非动态库类型的扩展名识别所述第一动态库文件对应的原始文件类型。
一种程序安装文件的生成装置,所述装置包括:
确定单元,用于确定待打包文件中的待压缩文件;
第一生成单元,用于将所述待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件;
转换单元,用于将所述压缩文件转换为第一动态库文件;
第二生成单元,用于将所述待打包文件中的非待压缩文件以及所述第一动态库文件进行打包操作生成第一程序安装文件。
在一种可能的实现方式中,所述确定单元,具体用于获取所述待打包文件中预定义的待压缩文件;和/或,获取各个待打包文件的文件大小,将文件大小超过阈值的待打包文件确定为待压缩文件。
在一种可能的实现方式中,所述装置还包括:
第三生成单元,用于在执行所述确定单元之前,将类文件编译生成安卓可执行文件,将所述安卓可执行文件确定为待打包文件,或者,
获取单元,用于解压第二程序安装文件获取安卓可执行文件,将所述安卓可执行文件确定为待打包文件。
在一种可能的实现方式中,当所述待压缩文件为动态库类型的文件时,所述转换单元,具体用于将所述压缩文件的最后一级扩展名删除,得到第一动态库文件;
当所述待压缩文件为非动态库类型的文件时,所述转换单元,具体用于将所述压缩文件的最后一级扩展名替换为动态库类型的扩展名,得到第一动态库文件。
在一种可能的实现方式中,所述第二生成单元,具体包括:
第一生成子单元,用于将所述待打包文件中的非待压缩文件中的第二动态库文件以及所述第一动态库文件进行第二压缩操作,生成第三动态库文件;
第二生成子单元,用于将其他非待压缩文件以及所述第三动态库文件进行打包操作生成第一程序安装文件。
一种程序安装文件的处理装置,所述装置包括:
解包单元,用于对程序安装文件进行解包操作,获得第一动态库文件;
解压单元,用于将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作。
在一种可能的实现方式中,所述解包单元,包括:
解包子单元,用于对程序安装文件进行解包操作,获得第三动态库文件;
确定子单元,用于从所述第三动态库文件中确定第一动态库文件。
在一种可能的实现方式中,所述确定子单元,具体用于将所述第三动态库文件进行第二解压缩操作,从所述第二解压缩操作得到的动态库类型的文件中识别第一动态库文件。
在一种可能的实现方式中,所述解压单元,包括:
识别子单元,用于识别所述第一动态库文件对应的原始文件类型;
第一解压子单元,用于当识别所述第一动态库文件对应的原始文件类型为动态库类型,直接将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,得到动态库类型的文件;
第二解压子单元,用于当识别所述第一动态库文件对应的原始文件类型为非动态库类型,将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,将所述第一解压缩操作得到的动态库类型的文件的最后一级扩展名删除,得到原始文件类型的文件。
在一种可能的实现方式中,所述识别子单元,具体用于根据第一动态库文件对应的文件名查询对应的原始文件类型;或者,识别所述第一动态库文件中的文件类型标志位,确定所述第一动态库文件对应的原始文件类型;或者,当所述第一动态库文件中仅包括动态库类型的扩展名时,识别所述第一动态库文件对应的原始文件类型为动态库类型,当所述第一动态库文件中包括动态库类型的扩展名以及非动态库类型的扩展名时,根据所包括的非动态库类型的扩展名识别所述第一动态库文件对应的原始文件类型。
一种用于程序安装文件的生成装置,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
确定待打包文件中的待压缩文件;
将所述待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件;
将所述压缩文件转换为第一动态库文件;
将所述待打包文件中的非待压缩文件以及所述第一动态库文件进行打包操作生成第一程序安装文件。
一种计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行所述的程序安装文件的生成方法。
一种用于程序安装文件的处理装置,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
对程序安装文件进行解包操作,获得第一动态库文件;
将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作。
一种计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行所述的程序安装文件的处理方法。
由此可见,本申请实施例具有如下有益效果:
本申请实施例中在打包生成程序安装文件之前,首先确定待打包文件中的待压缩文件,并将该待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件,再将压缩文件转换为第一动态库文件。最后,将待打包文件中的非待压缩文件以及第一动态库文件进行打包操作生成第一程序安装文件。即,对于待打包文件中较大的文件,即待压缩文件,可以采用高压缩比的压缩算法进行第一压缩操作,实现大幅度减小待压缩文件,进而减小打包后的第一程序安装文件。当用户需要安装第一程序安装文件对应的应用程序时,可以直接下载第一程序安装文件,由于第一程序安装文件较小,可以节省网络资源,提高安装速率以及用户使用体验。
附图说明
图1为本申请实施例提供的一种应用场景实施例;
图2为本申请实施例提供的一种程序安装文件的生成方法的流程图;
图3为本申请实施例提供的一种程序安装文件的生成框架图;
图4为本申请实施例提供的一种程序安装文件的处理方法的流程图;
图5为本申请实施例提供的一种程序安装文件的处理框架图;
图6为本申请实施例提供的一种程序安装文件的生成装置结构图;
图7为本申请实施例提供的一种程序安装文件的处理装置结构图;
图8为本申请实施例提供的一种服务器结构图;
图9为本申请实施例提供的另一种程序安装文件的处理装置结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。
为便于理解本申请提供的技术方案,下面将先对本申请的背景技术进行说明。
发明人在对传统的APK文件精减方法研究中发现,传统的精减方法主要集中在裁减无用资源、分割dex文件以及去除冗余native库等。其中,去除冗余native是指根据CPU指令集,生成对应的动态库(native库)文件,去除不需要的native库文件。例如,存在x86、arm、arm-v7、arm64-v8a等不同指令集,则需要为每一种指令集编译生成一个动态库文件,但是使用x86指令集的安卓设备数量非常少,就可以不提供该指令集对应的动态库文件,这样会减小安装文件的大小。但随着应用程序的不断升级,相应的的代码和资源也在不断增加,传统的精减方法无法对APK文件进行有效的瘦身,影响APK文件的下载和安装。
基于此,本申请实施例提供了一种程序安装文件的生成方法,在生成程序安装文件之前,先确定待打包文件中的待压缩文件,即将待打包文件中比较大的文件确定为待压缩文件。然后,采用预设的压缩方式对待压缩文件进行第一压缩操作,生成压缩文件。即,对较大的文件采用预设的压缩方法进行压缩,减小较大文件所占的存储资源。同时,将压缩文件转换为第一动态库文件,并将待打包文件中的非待压缩文件以及第一动态文件进行打包操作生成第一程序安装文件。即,通过本申请实施例提供的方法,可以对待压缩文件进行高压缩比的压缩操作,从而使得打包生成的第一程序安装文件较小,减小用户在安装时对网络资源的消耗,以及提高安装速率。
为便于理解本申请实施例提供的参见图1,该图为本申请实施例提供的示例性应用场景的框架示意图。其中,本申请实施例提供的程序安装文件的生成方法可以应用于服务器20。
具体地,服务器20可以获取待打包文件,并从待打包文件中确定待压缩文件,即确定待压缩的大文件。然后,采用预设的压缩方式对待压缩文件进行第一压缩操作,生成压缩文件,同时将压缩文件转换为第一动态库文件。再将待打包文件中的非待压缩文件以及第一动态库文件进行打包操作生成第一程序安装文件。
当用户利用终端10安装第一程序安装文件时,可以将第一程序安装文件从服务器20中下载到本地,并对第一程序安装文件进行解包操作,获得第一动态库文件。同时,采用预设的解压方法对第一动态库文件进行第一解压缩操作,获得可操作文件,进而实现应用程序的安装。
本领域技术人员可以理解,图1所示的框架示意图仅是本申请的实施方式可以在其中得以实现的一个示例。本申请实施方式的适用范围不受到该框架任何方面的限制。
需要注意的是,终端10可以是现有的、正在研发的或将来研发的、能够通过任何形式的有线和/或无线连接(例如,Wi-Fi、LAN、蜂窝、同轴电缆等)相互交互的任何用户设备,包括但不限于:现有的、正在研发的或将来研发的智能可穿戴设备、智能手机、非智能手机、平板电脑、膝上型个人计算机、桌面型个人计算机、小型计算机、中型计算机、大型计算机等。本申请的实施方式在此方面不受任何限制。还需要注意的是,本申请实施例中服务器20可以是现有的、正在研发的或将来研发的、能够向用户提供应用程序下载服务的设备的一个示例。本申请的实施方式在此方面不受任何限制。
为便于理解本申请实施例提供的技术方案,下面将结合附图对本申请实施例提供的生成方法进行说明。
参见图2,该图为本申请实施例提供的一种程序安装文件的生成方法的流程图,如图2所示,该方法可以包括:
S201:确定待打包文件中的待压缩文件。
在对待打包文件进行打包之前,为减小打包后文件所占用的存储空间,先从待打包文件中确定待压缩文件。在Android平台中,待打包文件可以包括classes.dex文件、resources.arsc文件以及lib、res、assets等目录下的文件,待压缩文件可以从上述待打包文件中确定。
在具体实现时,本实施例提供了两种从待打包文件中确定待压缩文件的实现方式,一种是,获取待打包文件中预定义的待压缩文件。即,用户可以预先定义需要进行压缩的文件,然后判断待打包文件中是否包括预定义的待压缩文件,如果存在,则获取该待压缩文件。例如,预先定义的待压缩文件为扩展名为.dex和.arsc文件,如果待打包文件中包括.dex和.arsc文件,则获取.dex和.arsc文件,将其作为待压缩文件。
另一种是,获取各个待打包文件的文件大小,将文件超过阈值的待打包文件确定为待压缩文件。即,将待打包文件中较大文件确定为待压缩文件,其中较大文件可以通过阈值筛选获得。
需要说明的是,在实际应用中,可以选择其中一种方式确定待压缩文件,也可以同时利用上述两种方式确定待压缩文件,具体选择方式可以根据实际应用情况确定,本实施例在此不做限定。
在实际应用时,由于APK文件中的dex文件(即一种安卓可执行文件)无法直接获得,则本实施例还提供两种生成dex文件的方式并将dex文件确定为待打包文件。在这两种实现方式中,一种是将类文件预编译生成安卓可执行文件,将安卓可执行文件确定为待打包文件;另一种是解压第二程序安装文件获取安卓可执行文件,将安卓可执行文件确定为待打包文件。即,可以将尚未编译的class文件(即类文件)进行预编译获得安卓可执行文件,将该安卓可执行文件确定为待打包文件。或者,对于已经按照传统方式生成的第二程序安装文件,先对其进行解压以获得安卓可执行文件,将该安卓可执行文件确定为待打包文件,然后再按照本申请提供的程序安装文件的生成方法进行后续处理。
S202:将待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件。
当确定出待压缩文件后,可以利用预设的压缩方式对待压缩文件进行第一压缩操作,获得压缩文件。即,对待压缩文件进行压缩,以减小压缩文件的大小。其中,预设的压缩方式可以为高压缩比的压缩方式,例如LZMA(Lempel-Ziv-Markov chain-Algorithm),生成的压缩文件为.lzma类型的文件。
S203:将压缩文件转换为第一动态库文件。
当获得压缩文件后,将其转换为第一动态库文件,第一动态库文件为动态库类型的文件,由压缩文件转换得到,以方便后续可以对第一动态库文件进行其他操作。
在具体实现过程中,针对不同类型的待压缩文件所生成的压缩文件在进行转换时,采用不同的转换方法。当待压缩文件为动态库类型的文件时,在将待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件之后,将压缩文件转换为第一动态库文件时,可以将压缩文件的最后一级扩展名删除,得到第一动态库文件。当待压缩文件为非动态库类型的文件时,在将待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件之后,将压缩文件转换为第一动态库文件时,可以将压缩文件的最后一级扩展名替换为动态库类型的扩展名,得到第一动态库文件。其中,压缩文件的最后一级扩展名为压缩算法的扩展名。
例如,在Android平台中,动态库类型的文件对应的扩展名可以为.so。当待压缩文件为动态库类型的文件如libcore.so时,使用LZMA压缩方式进行压缩,生成压缩文件libcore.so.lzma,将最后一级扩展名删除,获得第一动态库文件libcore.so。当待压缩文件为classes.dex文件时,对classes.dex文件进行LZMA压缩,生成的压缩文件为classes.dex.lzma,将最后一级扩展名替换为.so,获得第一动态库文件classes.dex.so。
可以理解的是,当待压缩文件本身为动态库类型的文件时,待压缩文件的文件名与其对应的第一动态库文件的文件名是相同的;当待压缩文件本身为非动态库类型的文件时,其对应的第一动态库文件无法体现其自身的文件类型。为便于后续安装文件时,在将压缩文件转换为第一动态库文件时,还可以预先存储每个第一动态库文件对应的原始文件类型,以便在后续解压完成后,可以参照预先存储的信息将文件的类型还原为原始文件类型。
S204:将待打包文件中的非待压缩文件以及第一动态库文件进行打包操作生成第一程序安装文件。
在获得第一动态库文件后,将待打包文件中的非待压缩文件以及第一动态库文件进行打包处理,获得第一程序安装文件。
在具体实现时,本实施例提供了一种对待压缩文件以及第一动态库文件进行打包处理的实现方式,具体为,将待打包文件中的非待压缩文件中的第二动态库文件以及第一动态库文件进行第二压缩操作,生成第三动态库文件;再将其他非待压缩文件以及第三动态库文件进行打包操作生成第一程序安装文件。即,第二动态库文件为待打包文件中的非待压缩文件中动态库类型的文件,则首先从待打包文件中的非待压缩文件中筛选出动态库类型的文件(即第二动态库文件),然后对第二动态库文件以及经过第一次压缩操作获取的第一动态库文件进行第二次压缩操作,获得第三动态库文件,实现进一步地压缩,以减小打包后的程序安装文件的大小。
通过上述描述可知,本申请实施例中在打包生成程序安装文件之前,首先确定待打包文件中的待压缩文件,并将该待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件,再将压缩文件转换为第一动态库文件。最后,将待打包文件中的非待压缩文件以及第一动态库文件进行打包操作生成第一程序安装文件。即,对于待打包文件中较大的文件,即待压缩文件,可以采用高压缩比的压缩算法进行第一压缩操作,实现大幅度减小待压缩文件,进而减小打包后的第一程序安装文件。当用户需要安装第一程序安装文件对应的应用程序时,可以直接下载第一程序安装文件,由于第一程序安装文件较小,可以节省网络资源,提高安装速率以及用户使用体验。
为便于理解本申请提供的程序安装文件的生成方法,参见图3所示生成框架图,首先获取待打包文件,并从中确定待压缩文件。对待压缩文件进行第一压缩操作获得压缩文件,再将压缩文件转换为第一动态库文件。然后,将待打包文件中第二动态库文件以及第一动态库文件进行第二压缩操作,获得第三动态库文件。最后,将第三动态库文件以及非待压缩文件进行打包操作获得第一程序安装文件。
当用户想要安装第一程序安装文件对应的应用程序时,用户可以通过终端从服务器中下载第一程序安装文件,并对第一程序文件进行处理后获得可以安装的程序文件,具体处理过程将结合附图进行说明。
参见图4,该图为本申请实施例提供的一种程序安装文件的处理方法的流程图,如图4所示,该方法可以包括:
S401:对程序安装文件进行解包操作,获得第一动态库文件。
由于服务器中所存储的程序安装文件为打包处理后的文件,即第一程序安装文件,因此在终端获取到程序安装文件时,需要对该程序安装文件进行解包操作,获得第一动态库文件。
在具体实现时,当终端所获取的程序安装文件为经过两次压缩操作所生成的文件时,所述对程序安装文件进行解包操作,获得第一动态库文件,包括:对程序安装文件进行解包操作,获得第三动态库文件;从第三动态库文件中确定第一动态库文件。其中,从第三动态库文件中确定第一动态库文件可以为将第三动态库文件进行第二解压缩操作,从第二解压缩操作得到的动态库类型的文件中识别第一动态库文件。
可以理解的是,由于第三动态库文件中既包括通过第一压缩操作获得的第一动态库文件,又包括本身为动态库类型的文件。因此,需要从第二解压缩操作得到的动态库类型的文件中识别出第一动态库文件。在具体实现时,可以根据预先存储的配置文件中识别哪些动态库类型的文件为第一动态库文件。该配置文件可以在进行第二压缩操作时生成,以记录进行第二压缩操作的文件中哪些动态库类型的文件为第一动态库文件。
S402:将第一动态库文件采用预设的解压缩方式进行第一解压缩操作。
可以理解的是,由于在生成第一动态库文件时,是采用预设的压缩方式进行第一压缩操作获得的,因此,需采用对应的解压缩方式对第一动态库文件进行第一解压缩操作,获得解压缩的文件。例如,在生成程序安装文件时,采用LZMA压缩方式进行第一压缩操作,则在解压时,采用LZMA解压缩方式对第一动态库文件进行压缩操作。
在具体实现时,本实施例提供了一种对第一动态库文件采用预设的解压缩方式进行第一解压操作实现方式,具体为,识别第一动态库文件对应的原始文件类型;当识别第一动态库文件对应的原始文件类型为动态库类型,直接将第一动态库文件采用预设的解压缩方式进行第一解压缩操作,得到动态库类型的文件;当识别第一动态库文件对应的原始文件类型为非动态库类型,将第一动态库文件采用预设的解压缩方式进行第一解压缩操作,将第一解压缩操作得到的动态库类型的文件的最后一级扩展名删除,得到原始文件类型的文件。
可以理解的是,通过图3所述实施例可知,在将压缩文件转换为第一动态库文件时,被转换的压缩文件既可以由动态库类型的文件压缩得到,也可以由非动态库类型的文件压缩得到,无论是哪种类型的文件均被转换动态库类型的文件。因此,在对第一动态库文件进行解压缩时,还需识别第一动态库文件对应的原始文件类型,即为动态库类型还是非动态库类型。其中,关于识别第一动态库文件对应的原始文件类型的具体实现,将在后续实施例进行说明。
如果第一动态库文件对应的原始文件类型为动态库类型,则直接对第一动态库文件进行解压缩操作,获得动态库类型的文件。例如,第一动态库文件为libcore.so,其对应的原始文件类型为动态库类型,则直接对libcore.so进行解压获得动态库类型的文件libcore.so。如果第一动态库文件对应的原始文件类型为非动态库类型,先对第一动态库文件进行解压缩操作,得到动态库类型的文件,再对将该动态库类型的文件的最后一级扩展名删除,得到原始文件类型的文件。例如,第一动态库文件为classes.dex.so,其对应的原始文件类型为非动态库类型,则先对classes.dex.so进行解压,获得动态库类型文件classes.dex.so,将该文件的最后一级扩展名删除,得到原始文件类型的文件classes.dex。
在具体实现时,当第一动态库文件对应的原始文件类型为动态库类型时,直接对其进行解压,解压后的文件可以存储在第一动态库文件所在的目录下;当第一动态库文件对应的原始文件类型为非动态库类型时,解压后的文件可以存储在预设的目录下,以便在启动应用程序时,可以在预设的目录下读取到所需的文件。
在一种可能的实现方式中,本实施例提供了以下几种识别第一动态库文件对应的原始文件类型的可实现方式,具体为:
一种是,根据第一动态库文件对应的文件名查询对应的原始文件类型。
即,在将压缩文件转换为第一动态库文件时,记录第一动态库文件对应的文件名与第一动态库文件对应的原始文件类型的映射关系,在需要获取第一动态库文件对应的原始文件类型时,可以根据第一动态库文件对应的文件名查询对应的原始文件类型。
另一种是,识别第一动态库文件中的文件类型标志位,确定第一动态库文件对应的原始文件类型。
即,通过第一动态库文件中的文件类型标志位来表征该第一动态库文件对应的原始文件类型,在需要获取第一动态库文件中对应的原始文件类型时,通过识别标志位即可获知原始文件类型。例如,文件类型标志位为1表示第一动态库文件的原始文件类型为动态库类型,标志位为0表示第一动态库文件的原始文件类型为非动态类型,通过识别标志位可以确定第一动态库文件的原始文件类型。
再一种是,当第一动态库文件中仅包括动态库类型的扩展名时,识别第一动态库文件对应的原始文件类型为动态库类型,当第一动态库文件中包括动态库类型的扩展名以及非动态库类型的扩展名时,根据所包括的非动态库类型的扩展名识别第一动态库文件对应的原始文件类型。
可以理解的是,由于在将压缩文件转换为第一动态库文件时,如果压缩文件本身为动态库类型的文件,在进行转换时只需将压缩文件的最后一级扩展名(压缩方式对应的扩展名)删除,保留了动态库类型的扩展名。如果压缩文件本身为非动态库类型的文件,在进行转换时只需将压缩文件的最后一级扩展名(压缩方式对应的扩展名)替换为动态库类型的扩展名,保留了非动态库类型的扩展名。即,无论如何转换均保留了原始文件类型的扩展名,因此,可以通过判断第一动态库文件所包括的扩展名来识别第一动态库文件对应的原始文件类型。
当第一动态库文件仅包括动态库类型的扩展名,表示其对应的原始文件类型为动态库类型。例如,第一动态库文件为libcore.so,其仅包括动态库类型的扩展名.so,则该第一动态库文件对应的原始文件类型为动态库类型;当第一动态库文件既包括动态库类型的扩展名,又包括非动态库类型的扩展名时,表示其对应的原始文件类型为非动态库类型。例如,第一动态库文件为classe.dex.so,其包括了动态库类型的扩展名.so,也包括非动态库类型的扩展名.dex,则该第一动态库文件对应的原始文件类型为非动态库类型。
为便于理解,参见图5所示处理框架图,首先对获取的程序安装文件进行解包操作,获得第三动态库文件以及其他文件。再对第三动态库文件进行第二解压操作,获得第一动态库文件以及第二动态库文件。最后,对第一动态库文件进行第一压缩操作,获得动态库类型的文件以及非动态库类型的文件。
通过上述实施例可知,在利用终端启动应用程序时,对程序安装文件进行解压处理,以支持应用程序。另外,由于终端下载的程序安装文件为较小的文件,可以节省网络资源,提高安装速率以及用户使用体验。
基于上述方法实施例,本申请提供了一种程序安装文件的生成装置和处理装置,下面将结合附图对该装置进行说明。
参见图6,一种程序安装文件的生成装置结构图,如图6所示,所述装置包括:
确定单元601,用于确定待打包文件中的待压缩文件;
第一生成单元602,用于将所述待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件;
转换单元603,用于将所述压缩文件转换为第一动态库文件;
第二生成单元604,用于将所述待打包文件中的非待压缩文件以及所述第一动态库文件进行打包操作生成第一程序安装文件。
在一种可能的实现方式中,所述确定单元,具体用于获取所述待打包文件中预定义的待压缩文件;和/或,获取各个待打包文件的文件大小,将文件大小超过阈值的待打包文件确定为待压缩文件。
在一种可能的实现方式中,所述装置还包括:
第三生成单元,用于在执行所述确定单元之前,将类文件编译生成安卓可执行文件,将所述安卓可执行文件确定为待打包文件,或者,
获取单元,用于解压第二程序安装文件获取安卓可执行文件,将所述安卓可执行文件确定为待打包文件。
在一种可能的实现方式中,当所述待压缩文件为动态库类型的文件时,所述转换单元,具体用于将所述压缩文件的最后一级扩展名删除,得到第一动态库文件;
当所述待压缩文件为非动态库类型的文件时,所述转换单元,具体用于将所述压缩文件的最后一级扩展名替换为动态库类型的扩展名,得到第一动态库文件。
在一种可能的实现方式中,所述第二生成单元,具体包括:
第一生成子单元,用于将所述待打包文件中的非待压缩文件中的第二动态库文件以及所述第一动态库文件进行第二压缩操作,生成第三动态库文件;
第二生成子单元,用于将其他非待压缩文件以及所述第三动态库文件进行打包操作生成第一程序安装文件。
需要说明的是,本实施例中各个单元的实现可以参见上述方法实施例,本实施例在此不做限定。
参见图7,该图为本申请实施例提供的一种程序安装文件的处理装置结果图,如图7所示,所述装置包括:
解包单元701,用于对程序安装文件进行解包操作,获得第一动态库文件;
解压单元702,用于将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作。
在一种可能的实现方式中,所述解包单元,包括:
解包子单元,用于对程序安装文件进行解包操作,获得第三动态库文件;
确定子单元,用于从所述第三动态库文件中确定第一动态库文件。
在一种可能的实现方式中,所述确定子单元,具体用于将所述第三动态库文件进行第二解压缩操作,从所述第二解压缩操作得到的动态库类型的文件中识别第一动态库文件。
在一种可能的实现方式中,所述解压单元,包括:
识别子单元,用于识别所述第一动态库文件对应的原始文件类型;
第一解压子单元,用于当识别所述第一动态库文件对应的原始文件类型为动态库类型,直接将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,得到动态库类型的文件;
第二解压子单元,用于当识别所述第一动态库文件对应的原始文件类型为非动态库类型,将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,将所述第一解压缩操作得到的动态库类型的文件的最后一级扩展名删除,得到原始文件类型的文件。
在一种可能的实现方式中,所述识别子单元,具体用于根据第一动态库文件对应的文件名查询对应的原始文件类型;或者,识别所述第一动态库文件中的文件类型标志位,确定所述第一动态库文件对应的原始文件类型;或者,当所述第一动态库文件中仅包括动态库类型的扩展名时,识别所述第一动态库文件对应的原始文件类型为动态库类型,当所述第一动态库文件中包括动态库类型的扩展名以及非动态库类型的扩展名时,根据所包括的非动态库类型的扩展名识别所述第一动态库文件对应的原始文件类型。
需要说明的是,本实施例中各个单元的实现可以参见上述方法实施例,本实施例在此不做限定。
图8是本发明实施例中服务器的结构示意图。该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在服务器800上执行存储介质830中的一系列指令操作。
服务器800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口856,一个或一个以上键盘856,和/或,一个或一个以上操作系统841,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
在具体实现时,中央处理器822可以执行如下指令:
确定待打包文件中的待压缩文件;
将所述待压缩文件采用预设的压缩方式进行第一压缩操作,生成压缩文件;
将所述压缩文件转换为第一动态库文件;
将所述待打包文件中的非待压缩文件以及所述第一动态库文件进行打包操作生成第一程序安装文件。
可选的,所述确定待打包文件中的待压缩文件,包括:
获取所述待打包文件中预定义的待压缩文件;和/或,
获取各个待打包文件的文件大小,将文件大小超过阈值的待打包文件确定为待压缩文件。
可选的,在确定待打包文件中的待压缩文件之前,所述方法还包括:
将类文件编译生成安卓可执行文件,将所述安卓可执行文件确定为待打包文件,或者,解压第二程序安装文件获取安卓可执行文件,将所述安卓可执行文件确定为待打包文件。
可选的,当所述待压缩文件为动态库类型的文件时,所述将所述压缩文件转换为第一动态库文件,包括:
将所述压缩文件的最后一级扩展名删除,得到第一动态库文件;
当所述待压缩文件为非动态库类型的文件时,所述将所述压缩文件转换为第一动态库文件,包括:
将所述压缩文件的最后一级扩展名替换为动态库类型的扩展名,得到第一动态库文件。
可选的,所述将所述待打包文件中的非待压缩文件以及所述第一动态库文件进行打包操作生成第一程序安装文件,包括:
将所述待打包文件中的非待压缩文件中的第二动态库文件以及所述第一动态库文件进行第二压缩操作,生成第三动态库文件;
将其他非待压缩文件以及所述第三动态库文件进行打包操作生成第一程序安装文件。
图9示出了一种程序安装文件的处理装置900的框图。例如,装置900可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图9,装置900可以包括以下一个或多个组件:处理组件902,存储器904,电源组件909,多媒体组件908,音频组件910,输入/输出(I/O)的接口99,传感器组件914,以及通信组件916。
处理组件902通常控制装置900的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件902可以包括一个或多个处理器920来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件902可以包括一个或多个模块,便于处理组件902和其他组件之间的交互。例如,处理部件902可以包括多媒体模块,以方便多媒体组件909和处理组件902之间的交互。
存储器904被配置为存储各种类型的数据以支持在设备900的操作。这些数据的示例包括用于在装置900上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器904可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件909为装置900的各种组件提供电力。电源组件909可以包括电源管理系统,一个或多个电源,及其他与为装置900生成、管理和分配电力相关联的组件。
多媒体组件908包括在所述装置900和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件908包括一个前置摄像头和/或后置摄像头。当设备900处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件910被配置为输出和/或输入音频信号。例如,音频组件910包括一个麦克风(MIC),当装置900处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器904或经由通信组件916发送。在一些实施例中,音频组件910还包括一个扬声器,用于输出音频信号。
I/O接口为处理组件902和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件914包括一个或多个传感器,用于为装置900提供各个方面的状态评估。例如,传感器组件914可以检测到设备900的打开/关闭状态,组件的相对定位,例如所述组件为装置900的显示器和小键盘,传感器组件914还可以检测装置900或装置900一个组件的位置改变,用户与装置900接触的存在或不存在,装置900方位或加速/减速和装置900的温度变化。传感器组件914可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件914还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件914还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件916被配置为便于装置900和其他设备之间有线或无线方式的通信。装置900可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件916经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件916还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置900可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行下述方法:
对程序安装文件进行解包操作,获得第一动态库文件;
将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作。
可选的,所述对程序安装文件进行解包操作,获得第一动态库文件,包括:
对程序安装文件进行解包操作,获得第三动态库文件;
从所述第三动态库文件中确定第一动态库文件。
可选的,所述从所述第三动态库文件中确定第一动态库文件,包括:
将所述第三动态库文件进行第二解压缩操作,从所述第二解压缩操作得到的动态库类型的文件中识别第一动态库文件。
可选的,所述将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,包括:
识别所述第一动态库文件对应的原始文件类型;
当识别所述第一动态库文件对应的原始文件类型为动态库类型,直接将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,得到动态库类型的文件;
当识别所述第一动态库文件对应的原始文件类型为非动态库类型,将所述第一动态库文件采用预设的解压缩方式进行第一解压缩操作,将所述第一解压缩操作得到的动态库类型的文件的最后一级扩展名删除,得到原始文件类型的文件。
可选的,所述识别所述第一动态库文件对应的原始文件类型,包括:
根据第一动态库文件对应的文件名查询对应的原始文件类型;
或者,
识别所述第一动态库文件中的文件类型标志位,确定所述第一动态库文件对应的原始文件类型;
或者,
当所述第一动态库文件中仅包括动态库类型的扩展名时,识别所述第一动态库文件对应的原始文件类型为动态库类型,当所述第一动态库文件中包括动态库类型的扩展名以及非动态库类型的扩展名时,根据所包括的非动态库类型的扩展名识别所述第一动态库文件对应的原始文件类型。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
- 一种程序安装文件的生成、处理方法及装置
- 增量文件生成方法、应用程序安装文件更新方法及装置