安卓系统安装包瘦身方法、装置、终端及存储介质与流程

文档序号:17212110发布日期:2019-03-27 10:53阅读:224来源:国知局
安卓系统安装包瘦身方法、装置、终端及存储介质与流程

本发明涉及移动终端技术领域,具体涉及一种安卓系统安装包瘦身方法、装置、终端及存储介质。



背景技术:

目前,终端应用程序(application,app)都是采用安装包的形式。安装包主要由两大部分内容组成:代码文件和资源文件(如图片,音视频文件等)。随着app功能不断地丰富,安装包也变得越来越大,相应地冗余资源也越来越多,当用户进行应用程序升级时,必然会消耗更多的流量。

对app安装包的瘦身主要从代码文件维度和资源文件维度两方面来进行。而现有技术中,对代码文件的瘦身大多依赖于编译过程,分析时间较长,因而工作效率低下,且瘦身效果并不理想。而对资源文件的瘦身,虽通过工具很容易实现,但无法进行精确定位,也无法给出统一的报告供研发人员查看对哪些地方进行了瘦身。



技术实现要素:

鉴于以上内容,有必要提出一种安卓系统安装包瘦身方法、装置、终端及存储介质,能够从代码文件维度和资源文件维度两大方面对安卓系统中的应用程序安装包进行了优化和瘦身,无需依赖编译过程。

本发明的第一方面提供一种安卓系统安装包瘦身方法,应用于终端中,所述方法包括:

对待瘦身的应用程序安装包文件进行解压缩处理;

获取解压缩处理后的文件中的dex文件;

对所述dex文件进行优化;

对所述解压缩处理后的文件中的资源文件进行优化;

根据优化后的dex文件和优化后的资源文件生成新的安装包文件。

根据本发明的一个优选实施例,在所述根据优化后的dex文件和优化后的资源文件生成新的安装包文件之后,所述方法还包括:

将优化前的dex文件和资源文件及优化后的dex文件和资源文件进行映射,并生成具有映射关系的优化报告。

根据本发明的一个优选实施例,对所述dex文件进行优化包括以下一种或多种的组合:

对所述dex文件进行精简处理,所述精简处理包括:删除代码注释、删除无意义或者多余的空白、替换函数名、替换路径;

遍历所述dex文件中的所有函数,将没有访问到的函数进行删除。

根据本发明的一个优选实施例,所述替换函数名包括:

获取字符数大于或者等于预设字符数阈值的函数名;

根据预设替换规则对字符数大于所述预设字符数阈值的函数名进行替换。

根据本发明的一个优选实施例,所述根据预设替换规则对字符数大于所述预设字符数阈值的函数名进行替换包括:

获取函数名的字符中的首字符和尾字符;

将所述首字符和尾字符进行组合为新的字符;

将所述字符数大于所述预设字符数阈值的函数名替换为所述新的字符。

根据本发明的一个优选实施例所述对所述解压缩处理后的文件中的资源文件进行优化包括:

计算所述解压缩处理后的文件中的每一个资源文件的循环冗余校验码,其中,所述资源文件包括:图标、图片、配置文件及xml文件,计算所述图标、所述图片、所述配置文件及所述xml文件的循环冗余校验码为并行计算;

判断所述资源文件中是否存在具有相同循环冗余校验码的资源文件,包括:

判断所述图标中是否存在具有相同循环冗余校验码的图标;

判断所述图片中是否存在具有相同循环冗余校验码的图片;

判断所述配置文件中是否存在具有相同循环冗余校验码的配置文件;

判断所述xml文件中是否存在具有相同循环冗余校验码的xml文件;

将具有相同循环冗余校验码的资源文件中的一个资源文件进行保留,剩余资源文件进行删除。

根据本发明的一个优选实施例,在将具有相同循环冗余校验码的资源文件中的一个资源文件进行保留,剩余资源文件进行删除之后,所述方法还包括:

获取图片格式为png格式的图片,将图片格式为png格式的图片进行压缩处理。

本发明的第二方面提供一种安卓系统安装包瘦身装置,运行于终端中,所述装置包括:

解压缩模块,用于对待瘦身的应用程序安装包文件进行解压缩处理;

获取模块,用于获取解压缩处理后的文件中的dex文件;

第一优化模块,用于对所述dex文件进行优化;

第二优化模块,用于对所述解压缩处理后的文件中的资源文件进行优化;

生成模块,用于根据优化后的dex文件和优化后的资源文件生成新的安装包文件。

本发明的第三方面提供一种终端,所述终端包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述安卓系统安装包瘦身方法。

本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述安卓系统安装包瘦身方法。

本发明所述的安卓系统安卓包瘦身方法、装置、终端及存储介质,能够从代码文件维度和资源文件维度两大方面对安卓系统中的应用程序安装包进行了优化和瘦身,无需依赖编译过程,且生成的优化报告中记录了优化前的dex文件和资源文件与优化后的dex文件和资源文件的映射关系,从而能够精确定位到进行优化的代码位置,便于后续运行应用程序出现问题时,能够快速进行还原。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例一提供的安卓系统安装包瘦身方法的流程图。

图2是本发明实施例二提供的安卓系统安装包瘦身装置的结构图。

图3是本发明实施例三提供的终端的示意图。

如下具体实施方式将结合上述附图进一步说明本发明。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

优选地,本发明的安卓系统安装包瘦身方法应用在一个或者多个终端或者服务器中。所述终端是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。

所述终端可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端可以与客户客户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。

实施例一

图1是本发明实施例一提供的安卓系统安装包瘦身方法的流程图。

在本实施例中,所述安卓系统安装包瘦身方法可以应用于具备显示功能的终端或者固定终端中,所述终端并不限定于个人电脑、智能手机、平板电脑、安装有摄像头的台式机或一体机等。

所述安卓系统安装包瘦身方法也可以应用于由终端和通过网络与所述终端进行连接的服务器所构成的硬件环境中。网络包括但不限于:广域网、城域网或局域网。本发明实施例的安卓系统安装包瘦身方法可以由服务器来执行,也可以由终端来执行,还可以是由服务器和终端共同执行。

例如,对于需要进行安卓系统安装包瘦身的终端,可以直接在终端上集成本发明的方法所提供的安卓系统安装包瘦身功能,或者安装用于实现本发明的方法的客户端。再如,本发明所提供的方法还可以软件开发工具包(softwaredevelopmentkit,sdk)的形式运行在服务器等设备上。

如图1所示,所述安卓系统安装包瘦身方法具体包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。

s11:对待瘦身的应用程序安装包文件进行解压缩处理。

安卓(android)系统中的应用程序安装包(androidpackage,apk)文件是android系统上的应用程序(application,app)的安装程序文件。apk文件是由程序源码(源代码)文件被编译打包后生成的,源码文件的大小决定了安装包的大小。

apk文件实质上为zip格式文件,但apk文件的后缀名为apk,故对待瘦身的应用程序安装包文件进行解压缩是指将apk文件的后缀名改为zip格式后,再用压缩软件(例如,winrar/winzip/7-zip)进行解压。

s12:获取解压缩处理后的文件中的dex文件。

apk文件通常包括:程序全局配置文件,classes.dex文件,编译后的二进制资源文件、用于存放签名信息的文件夹、用于存放资源文件的文件夹及用于存放配置文件的文件夹等。其中,classes.dex文件是源码编译后生成的java字节码文件。dex是dalvikvmexecutes的全称,即androiddalvik执行程序。利用解析工具可以将其转换成java来加以阅读和理解。

s13:对所述dex文件进行优化。

本实施例中,对所述dex文件进行优化可以包括:

1)对所述dex文件进行精简处理。

对所述dex文件进行精简的目的是为了减少代码体积,其中,精简处理可以包括:删除代码注释;删除无意义或者多余的空白;替换函数名;替换路径。

本实施例中,所述无意义或者多余的空白可以包括:空格、制表符、回车及换行。将无意义或者多余的空白删除是指将空格、制表符、回车及换行进行删除。

本实施例中,所述替换函数名具体可以包括:

11)获取字符数大于或者等于预设字符数阈值的函数名;

预设字符数阈值为预先预设的字符数的临界值,例如,可以预先设置字符数阈值为5。获取所述dex文件中的每一个函数名后,统计函数名的字符数。判断每一个函数名的字符数是否大于所述预设字符数阈值。当函数名的字符数大于所述预设字符数阈值时,则获取所述函数名。当函数名的字符数小于或者等于所述预设字符数阈值时,则不需获取所述函数名。

举例而言,所述dex文件中包括函数名1为mydesktopupdate及函数名1为myget。统计函数名1的字符数为15,大于预设字符数阈值5,则获取函数名1:mydesktopupdate。统计函数名2的字符数为5,等于预设字符数阈值5,则不获取函数名2:mydesktopupdate。

12)根据预设替换规则对字符数大于所述预设字符数阈值的函数名进行替换。

所述预设替换规则可以包括:

获取函数名的字符中的首字符和尾字符;

将所述首字符和尾字符进行组合为新的字符;

将所述字符数大于所述预设字符数阈值的函数名替换为所述新的字符。

举例而言,假设所述dex文件中的某个函数名为myfoosuccesscallback,该函数名的字符数为20,显然该函数名的字符数大于预设字符数阈值,则根据预设替换规则,将该函数名的首字符m和尾字符k组合为新的字符mk,将函数名为myfoosuccesscallback替换为mk。

所述替换路径的具体过程同所述替换函数名的过程,在此不再详细赘述。

通常为了使得代码的可读性较强,类的完整路径、源文件的路径及函数名称等会采取较长的字符串代表,然而较长的字符串增加了代码的大小,且虚拟机运行字节码的时候并不关心这些字符串信息是否可读性强,因而,在所述dex文件中,通过使用无意义和简短的字符来替换函数名的完整的字符串信息,可以减少总的代码大小。

2)遍历所述dex文件中的所有函数,将没有访问到的函数进行删除。

在大型项目的源代码中,不可避免的会存在很多无用的代码,移除这些无用代码,不仅能减少最终apk的大小,而且不会带来任何副作用。在某些方面,无用代码的移除类似于标记清除(mark-sweep)垃圾回收算法。

具体地,可以从主函数开始遍历各个条件分支和函数调用,并生成函数调用关系图;在所述函数调用关系图中标记访问到的代码;对没有访问到的代码进行删除。

s14:对所述解压缩处理后的文件中的资源文件进行优化。

本实施例中,对所述解压缩处理后的文件中的资源文件进行优化具体可以包括:

1)计算所述解压缩处理后的文件中的每一个资源文件的循环冗余校验码。

所述资源文件可以包括:图标、图片、配置文件及xml文件等。

计算所述解压缩处理后的文件中的资源文件的循环冗余校验码包括:分别计算所述图标的循环冗余校验码、图片的循环冗余校验码、配置文件的循环冗余校验码及xml文件的循环冗余校验码等。

本实施例中,可以预先设置多个线程,每个线程用于执行一个循环冗余校验码的计算过程。例如,预先设置第一线程、第二线程、第三线程及第四线程,第一线程用于执行计算所述图标的循环冗余校验码的过程,第二线程用于执行计算图片的循环冗余校验码,第三线程用于执行配置文件的循环冗余校验码的过程,第四线程用于执行计算xml文件的循环冗余校验码。设置多个线程可以并行执行对图标、图片、配置文件及xml文件的循环冗余校验码的计算。并行计算能够提高处理的速度,提升优化解压缩处理后的文件中的资源文件的效率。

所述循环冗余校验码的计算方法为现有技术,本文再此不再赘述。

2)判断所述资源文件中是否存在具有相同循环冗余校验码的资源文件。

所述判断所述资源文件中是否存在具有相同循环冗余校验码的资源文件包括:分别判断所述图标中是否存在具有相同循环冗余校验码的图标、判断所述图片中是否存在具有相同循环冗余校验码的图片、判断所述配置文件中是否存在具有相同循环冗余校验码的配置文件及判断所述xml文件中是否存在具有相同循环冗余校验码的xml文件。

以一个例子来说明如何判断所述图片中是否存在具有相同循环冗余校验码的图片,假设所述资源文件中存在多个图片:图片1、图片2、图片3、图片4、图片5、图片6、图片7及图片8。其中,所述图片1、图片2、图片3、图片4、图片5、图片6、图片7及图片8的循环冗余校验码分别为c1、c2、c1、c1、c2、c3、c2、c4,即所述图片1与所述图片3及所述图片4具有相同的循环冗余校验码(c1),所述图片2与所述图片5及所述图片7具有相同的循环冗余校验码(c2),则确定所述图片中存在具有相同循环冗余校验码的图片。

当确定所述图标中存在具有相同循环冗余校验码的图标,或者当确定所述图片中存在具有相同循环冗余校验码的图片,或者当确定所述配置文件中存在具有相同循环冗余校验码的配置文件,或者当确定所述xml文件中存在具有相同循环冗余校验码的xml文件时,认为所述资源文件中存在具有相同循环冗余校验码的资源文件。当确定所述图标中不存在具有相同循环冗余校验码的图标,且确定所述图片中不存在具有相同循环冗余校验码的图片,且确定所述配置文件中不存在具有相同循环冗余校验码的配置文件,且确定所述xml文件中不存在具有相同循环冗余校验码的xml文件时,认为所述资源文件中不存在具有相同循环冗余校验码的资源文件。

3)将具有相同循环冗余校验码的资源文件中的一个资源文件进行保留,剩余资源文件进行删除。

将具有相同循环冗余校验码的资源文件中的一个资源文件进行保留,剩余资源文件进行删除是指将具有相同循环冗余校验码的图标中的一个图标进行保留,剩余图标进行删除;将具有相同循环冗余校验码的图片中的一个图片进行保留,剩余图片进行删除,将具有相同循环冗余校验码的配置文件中的一个配置文件进行保留,剩余配置文件进行删除,将具有相同循环冗余校验码的xml文件中的一个xml文件进行保留,剩余xml文件进行删除。

例如,上述中的图片1、图片3及图片4具有相同的循环冗余校验码,将图片1进行保留,图片3及图片4进行删除。

进一步地,在将具有相同循环冗余校验码的资源文件中的一个资源文件进行保留,剩余资源文件进行删除之后,所述方法还可以包括:获取图片格式为png格式的图片,将图片格式为png格式的图片进行压缩处理。

由于png格式的图片占用较大的空间,其他格式的图片占用的空间较少,因而需要对png格式的图片进行压缩处理。可以使用开源工具pngquant对png格式的图片进行压缩处理。

s15:根据优化后的dex文件和优化后的资源文件生成新的安装包文件。

对dex文件和资源文件进行优化后,对解压缩处理后的文件进行重新打包,生成新的安装包,新的安装包将小于原有的安装包的大小。

进一步地,在所述根据优化后的dex文件和优化后的资源文件生成新的安装包文件之后,所述方法还可以包括:将优化前的dex文件和资源文件及优化后的dex文件和资源文件进行映射,并生成具有映射关系的优化报告。

具有映射关系的优化报告可以便于当根据新的安装包对应的应用程序运行时出现问题需要定位时,可以根据优化前的dex文件和资源文件与优化后的dex文件和资源文件的映射关系,将新的安装包中的dex文件和资源文件进行还原。

综上所述,本发明安卓系统安装包瘦身方法,对待瘦身的应用程序安装包文件进行解压缩处理;获取解压缩处理后的文件中的dex文件;对所述dex文件进行优化;对所述解压缩处理后的文件中的资源文件进行优化;根据优化后的dex文件和优化后的资源文件生成新的安装包文件。本发明能够从代码文件维度和资源文件维度两大方面对安卓系统中的应用程序安装包进行优化和瘦身,无需依赖编译过程,且生成的优化报告中记录了优化前的dex文件和资源文件与优化后的dex文件和资源文件的映射关系,从而能够精确定位到进行优化的代码位置,便于后续运行应用程序出现问题时,能够快速进行还原。

上述图1详细介绍了本发明的安卓系统安装包瘦身方法,下面结合第2~3图,分别对实现所述安卓系统安装包瘦身方法的软件装置的功能模块以及实现所述安卓系统安装包瘦身方法的硬件装置架构进行介绍。

应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。

实施例二

参阅图2所示,是本发明安卓系统安装包瘦身装置的较佳实施例中的功能模块图。

在一些实施例中,所述安卓系统安装包瘦身装置20运行于终端中。所述安卓系统安装包瘦身装置20可以包括多个由程序代码段所组成的功能模块。所述安卓系统安装包瘦身装置20中的各个程序段的程序代码可以存储于终端的存储器中,并由所述至少一个处理器所执行,以执行(详见图1描述)对安卓系统中的安装包进行瘦身。

本实施例中,所述安卓系统安装包瘦身装置20根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:解压缩模块201、获取模块202、第一优化模块203、第二优化模块204、生成模块205及映射模块206。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。

解压缩模块201,用于对待瘦身的应用程序安装包文件进行解压缩处理。

安卓(android)系统中的应用程序安装包(androidpackage,apk)文件是android系统上的应用程序(application,app)的安装程序文件。apk文件是由程序源码(源代码)文件被编译打包后生成的,源码文件的大小决定了安装包的大小。

apk文件实质上为zip格式文件,但apk文件的后缀名为apk,故对待瘦身的应用程序安装包文件进行解压缩是指将apk文件的后缀名改为zip格式后,再用压缩软件(例如,winrar/winzip/7-zip)进行解压。

获取模块202,用于获取解压缩处理后的文件中的dex文件。

apk文件通常包括:程序全局配置文件,classes.dex文件,编译后的二进制资源文件、用于存放签名信息的文件夹、用于存放资源文件的文件夹及用于存放配置文件的文件夹等。其中,classes.dex文件是源码编译后生成的java字节码文件。dex是dalvikvmexecutes的全称,即androiddalvik执行程序。利用解析工具可以将其转换成java来加以阅读和理解。

第一优化模块203,用于对所述dex文件进行优化。

本实施例中,所述第一优化模块203对所述dex文件进行优化可以包括:

1)对所述dex文件进行精简处理。

对所述dex文件进行精简的目的是为了减少代码体积,其中,精简处理可以包括:删除代码注释;删除无意义或者多余的空白;替换函数名;替换路径。

本实施例中,所述无意义或者多余的空白可以包括:空格、制表符、回车及换行。将无意义或者多余的空白删除是指将空格、制表符、回车及换行进行删除。

本实施例中,所述替换函数名具体可以包括:

11)获取字符数大于或者等于预设字符数阈值的函数名;

预设字符数阈值为预先预设的字符数的临界值,例如,可以预先设置字符数阈值为5。获取所述dex文件中的每一个函数名后,统计函数名的字符数。判断每一个函数名的字符数是否大于所述预设字符数阈值。当函数名的字符数大于所述预设字符数阈值时,则获取所述函数名。当函数名的字符数小于或者等于所述预设字符数阈值时,则不需获取所述函数名。

举例而言,所述dex文件中包括函数名1为mydesktopupdate及函数名1为myget。统计函数名1的字符数为15,大于预设字符数阈值5,则获取函数名1:mydesktopupdate。统计函数名2的字符数为5,等于预设字符数阈值5,则不获取函数名2:mydesktopupdate。

12)根据预设替换规则对字符数大于所述预设字符数阈值的函数名进行替换。

所述预设替换规则可以包括:

获取函数名的字符中的首字符和尾字符;

将所述首字符和尾字符进行组合为新的字符;

将所述字符数大于所述预设字符数阈值的函数名替换为所述新的字符。

举例而言,假设所述dex文件中的某个函数名为myfoosuccesscallback,该函数名的字符数为20,显然该函数名的字符数大于预设字符数阈值,则根据预设替换规则,将该函数名的首字符m和尾字符k组合为新的字符mk,将函数名为myfoosuccesscallback替换为mk。

所述替换路径的具体过程同所述替换函数名的过程,在此不再详细赘述。

通常为了使得代码的可读性较强,类的完整路径、源文件的路径及函数名称等会采取较长的字符串代表,然而较长的字符串增加了代码的大小,且虚拟机运行字节码的时候并不关心这些字符串信息是否可读性强,因而,在所述dex文件中,通过使用无意义和简短的字符来替换函数名的完整的字符串信息,可以减少总的代码大小。

2)遍历所述dex文件中的所有函数,将没有访问到的函数进行删除。

在大型项目的源代码中,不可避免的会存在很多无用的代码,移除这些无用代码,不仅能减少最终apk的大小,而且不会带来任何副作用。在某些方面,无用代码的移除类似于标记清除(mark-sweep)垃圾回收算法。

具体地,可以从主函数开始遍历各个条件分支和函数调用,并生成函数调用关系图;在所述函数调用关系图中标记访问到的代码;对没有访问到的代码进行删除。

第二优化模块204,用于对所述解压缩处理后的文件中的资源文件进行优化。

本实施例中,第二优化模块204对所述解压缩处理后的文件中的资源文件进行优化具体可以包括:

1)计算所述解压缩处理后的文件中的每一个资源文件的循环冗余校验码。

所述资源文件可以包括:图标、图片、配置文件及xml文件等。

计算所述解压缩处理后的文件中的资源文件的循环冗余校验码包括:分别计算所述图标的循环冗余校验码、图片的循环冗余校验码、配置文件的循环冗余校验码及xml文件的循环冗余校验码等。

本实施例中,可以预先设置多个线程,每个线程用于执行一个循环冗余校验码的计算过程。例如,预先设置第一线程、第二线程、第三线程及第四线程,第一线程用于执行计算所述图标的循环冗余校验码的过程,第二线程用于执行计算图片的循环冗余校验码,第三线程用于执行配置文件的循环冗余校验码的过程,第四线程用于执行计算xml文件的循环冗余校验码。设置多个线程可以并行执行对图标、图片、配置文件及xml文件的循环冗余校验码的计算。并行计算能够提高处理的速度,提升优化解压缩处理后的文件中的资源文件的效率。

所述循环冗余校验码的计算方法为现有技术,本文再此不再赘述。

2)判断所述资源文件中是否存在具有相同循环冗余校验码的资源文件。

所述判断所述资源文件中是否存在具有相同循环冗余校验码的资源文件包括:分别判断所述图标中是否存在具有相同循环冗余校验码的图标、判断所述图片中是否存在具有相同循环冗余校验码的图片、判断所述配置文件中是否存在具有相同循环冗余校验码的配置文件及判断所述xml文件中是否存在具有相同循环冗余校验码的xml文件。

以一个例子来说明如何判断所述图片中是否存在具有相同循环冗余校验码的图片,假设所述资源文件中存在多个图片:图片1、图片2、图片3、图片4、图片5、图片6、图片7及图片8。其中,所述图片1、图片2、图片3、图片4、图片5、图片6、图片7及图片8的循环冗余校验码分别为c1、c2、c1、c1、c2、c3、c2、c4,即所述图片1与所述图片3及所述图片4具有相同的循环冗余校验码(c1),所述图片2与所述图片5及所述图片7具有相同的循环冗余校验码(c2),则确定所述图片中存在具有相同循环冗余校验码的图片。

当确定所述图标中存在具有相同循环冗余校验码的图标,或者当确定所述图片中存在具有相同循环冗余校验码的图片,或者当确定所述配置文件中存在具有相同循环冗余校验码的配置文件,或者当确定所述xml文件中存在具有相同循环冗余校验码的xml文件时,认为所述资源文件中存在具有相同循环冗余校验码的资源文件。当确定所述图标中不存在具有相同循环冗余校验码的图标,且确定所述图片中不存在具有相同循环冗余校验码的图片,且确定所述配置文件中不存在具有相同循环冗余校验码的配置文件,且确定所述xml文件中不存在具有相同循环冗余校验码的xml文件时,认为所述资源文件中不存在具有相同循环冗余校验码的资源文件。

3)将具有相同循环冗余校验码的资源文件中的一个资源文件进行保留,剩余资源文件进行删除。

将具有相同循环冗余校验码的资源文件中的一个资源文件进行保留,剩余资源文件进行删除是指将具有相同循环冗余校验码的图标中的一个图标进行保留,剩余图标进行删除;将具有相同循环冗余校验码的图片中的一个图片进行保留,剩余图片进行删除,将具有相同循环冗余校验码的配置文件中的一个配置文件进行保留,剩余配置文件进行删除,将具有相同循环冗余校验码的xml文件中的一个xml文件进行保留,剩余xml文件进行删除。

例如,上述中的图片1、图片3及图片4具有相同的循环冗余校验码,将图片1进行保留,图片3及图片4进行删除。

进一步地,在将具有相同循环冗余校验码的资源文件中的一个资源文件进行保留,剩余资源文件进行删除之后,所述方法还可以包括:获取图片格式为png格式的图片,将图片格式为png格式的图片进行压缩处理。

由于png格式的图片占用较大的空间,其他格式的图片占用的空间较少,因而需要对png格式的图片进行压缩处理。可以使用开源工具pngquant对png格式的图片进行压缩处理。

生成模块205,用于根据优化后的dex文件和优化后的资源文件生成新的安装包文件。

对dex文件和资源文件进行优化后,对解压缩处理后的文件进行重新打包,生成新的安装包,新的安装包将小于原有的安装包的大小。

进一步地,在所述根据优化后的dex文件和优化后的资源文件生成新的安装包文件之后,所述安卓系统安装包瘦身装置还可以包括:映射模块206,用于将优化前的dex文件和资源文件及优化后的dex文件和资源文件进行映射,并生成具有映射关系的优化报告。

具有映射关系的优化报告可以便于当根据新的安装包对应的应用程序运行时出现问题需要定位时,可以根据优化前的dex文件和资源文件与优化后的dex文件和资源文件的映射关系,将新的安装包中的dex文件和资源文件进行还原。

综上所述,本发明安卓系统安装包瘦身装置,对待瘦身的应用程序安装包文件进行解压缩处理;获取解压缩处理后的文件中的dex文件;对所述dex文件进行优化;对所述解压缩处理后的文件中的资源文件进行优化;根据优化后的dex文件和优化后的资源文件生成新的安装包文件。本发明能够从代码文件维度和资源文件维度两大方面对安卓系统中的应用程序安装包进行了优化和瘦身,无需依赖编译过程,且生成的优化报告中记录了优化前的dex文件和资源文件与优化后的dex文件和资源文件的映射关系,从而能够精确定位到进行优化的代码位置,便于后续运行应用程序出现问题时,能够快速进行还原。

实施例三

参阅图3所示,为本发明实施例提供的终端的结构示意图。在本发明较佳实施例中,所述终端3包括存储器31、至少一个处理器32、至少一条通信总线33及显示屏幕34。

本领域技术人员应该了解,图3示出的终端的结构并不构成本发明实施例的限定,既可以是总线型结构,也可以是星形结构,所述终端3还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。

在一些实施例中,所述终端3包括一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的终端,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器、嵌入式设备等。所述终端3还可包括客户客户设备,所述客户客户设备包括但不限于任何一种可与客户客户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、数码相机等。

需要说明的是,所述终端3仅为举例,其他现有的或今后可能出现的电子产品如可适应于本发明,也应包含在本发明的保护范围以内,并以引用方式包含于此。

在一些实施例中,所述存储器31用于存储程序代码和各种数据,例如安装在所述终端3中的安卓系统安装包瘦身装置20,并在终端3的运行过程中实现高速、自动地完成程序或数据的存取。所述存储器31包括只读存储器(read-onlymemory,rom)、随机存储器(randomaccessmemory,ram)、可编程只读存储器(programmableread-onlymemory,prom)、可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)、一次可编程只读存储器(one-timeprogrammableread-onlymemory,otprom)、电子擦除式可复写只读存储器(electrically-erasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。

在一些实施例中,所述至少一个处理器32可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(centralprocessingunit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述至少一个处理器32是所述终端3的控制核心(controlunit),利用各种接口和线路连接整个终端3的各个部件,通过运行或执行存储在所述存储器31内的程序或者模块,以及调用存储在所述存储器31内的数据,以执行终端3的各种功能和处理数据,例如执行安卓系统安装包瘦身的功能。

在一些实施例中,所述至少一条通信总线33被设置为实现所述存储器31、所述至少一个处理器32以及所述显示屏幕34等之间的连接通信。

在一些实施例中,所述显示屏幕34可用于显示由观看者输入的信息或提供给观看者的信息以及终端3的各种图形观看者接口,这些图形观看者接口可以由图形、文本、图标、视频和其任意组合来构成。所述显示屏幕34可包括显示面板,可选的,可以采用液晶显示屏幕(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板。

所述显示屏幕34还可以包括触摸面板。如果所述显示屏幕34包括触摸面板,所述显示屏幕34可以被实现为触摸屏,以接收来自观看者的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。上述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与上述触摸或滑动操作相关的持续时间和压力。所述显示面板与所述触摸面板可以作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将所述显示面板与所述触摸面板进行集成而实现输入和输出功能。

尽管未示出,所述终端3还可以包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理装置与所述至少一个处理器32逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述终端3还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。

应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。

上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。

在进一步的实施例中,结合图1,所述至少一个处理器32可执行所述终端3的操作装置以及安装的各类应用程序(如所述的安卓系统安装包瘦身装置20)、程序代码等,例如,上述的各个模块。

所述存储器31中存储有程序代码,且所述至少一个处理器32可调用所述存储器31中存储的程序代码以执行相关的功能。例如,图2中所述的各个模块是存储在所述存储器31中的程序代码,并由所述至少一个处理器32所执行,从而实现所述各个模块的功能以达到安卓系统安装包瘦身的目的。

在本发明的一个实施例中,所述存储器31存储多个指令,所述多个指令被所述至少一个处理器32所执行以实现安卓系统应用程序的安装包文件的瘦身。

具体地,所述至少一个处理器32对上述指令的执行包括:

对待瘦身的应用程序安装包文件进行解压缩处理;

获取解压缩处理后的文件中的dex文件;

对所述dex文件进行优化;

对所述解压缩处理后的文件中的资源文件进行优化;

根据优化后的dex文件和优化后的资源文件生成新的安装包文件。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

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