CN109558145A - 一种面向安卓应用的安装包体积优化方法及装置 - Google Patents

一种面向安卓应用的安装包体积优化方法及装置 Download PDF

Info

Publication number
CN109558145A
CN109558145A CN201710882005.5A CN201710882005A CN109558145A CN 109558145 A CN109558145 A CN 109558145A CN 201710882005 A CN201710882005 A CN 201710882005A CN 109558145 A CN109558145 A CN 109558145A
Authority
CN
China
Prior art keywords
class
identification information
dex
debugged
package 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.)
Granted
Application number
CN201710882005.5A
Other languages
English (en)
Other versions
CN109558145B (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.)
Beijing Kingsoft Internet Security Software Co Ltd
Original Assignee
Beijing Kingsoft Internet Security Software 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 Beijing Kingsoft Internet Security Software Co Ltd filed Critical Beijing Kingsoft Internet Security Software Co Ltd
Priority to CN201710882005.5A priority Critical patent/CN109558145B/zh
Publication of CN109558145A publication Critical patent/CN109558145A/zh
Application granted granted Critical
Publication of CN109558145B publication Critical patent/CN109558145B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供了一种面向安卓应用的安装包体积优化方法、装置及电子设备,所述方法包括:遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到封装文件classes.dex中的类标识信息;针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;如果该类标识信息为不需要进行调试的类的类标识信息,删除该类标识信息对应的类中包含的调试信息。因此,通过本发明实施例提供的技术方案,可以只将不需要调试的类中包含的调试信息删除,而不像现有技术那样,删除封装文件classes.dex中所有的调试信息,从而在减小安装包体积的同时,能够保留需要调试的类的调试信息,以使得开发者在后续的开发过程中,能够对需要调试的类进行调试。

Description

一种面向安卓应用的安装包体积优化方法及装置
技术领域
本发明涉及安卓应用开发技术领域,特别是涉及一种面向安卓应用的安装包体积优化方法及装置。
背景技术
随着业务的快速迭代增长,APP(Application,应用程序)里不断引入新的业务逻辑代码、图片资源和第三方SDK(software development kit,软件开发包),直接导致APK(AndroidPackage,安卓安装包)体积不断增长,进而安装包体积的增长带来的问题越来越多,如用户安装成功率降低,甚至可能会影响用户的留存率。常见的安装包体积优化技术有:Zip格式优化、classes.dex优化、资源的优化等。
目前,针对classes.dex的优化,提供的方法是通过ProGuard工具对classes.dex进行优化处理,其中,Proguard提供了大量java语言的代码压缩技术,其中有一项重要的优化技术是移除代码中的调试信息,通过移除调试信息,相对原有的代码体积可以降低10%~20%。但是Proguard只能整体保留或者去除classes.dex的调试信息,如果Proguard整体保留classes.dex的调试信息,会造成安装包的体积较大;如果Proguard整体去除classes.dex的调试信息,会造成开发者在后续的开发过程中,不能对代码进行调试。
发明内容
本发明实施例的目的在于提供一种面向安卓应用的安装包体积优化方法、装置、电子设备及可读存储介质,以实现在减小安装包体积的同时,能够保留需要调试的类的调试信息。具体技术方案如下:
第一方面,本发明实施例提供了一种面向安卓应用的安装包体积优化方法,所述方法包括:
遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到所述封装文件classes.dex中的类标识信息;
针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;
若为是,删除所述该类标识信息对应的类中包含的调试信息。
可选的,所述遍历安卓系统安装包APK中的封装文件classes.dex,得到所述封装文件classes.dex中的类标识信息的步骤,包括:
遍历所述封装文件classes.dex中的各个类,获得所述各个类的类名称,将所述类名称作为所述类标识信息。
可选的,所述删除所述该类标识信息对应的类中包含的调试信息的步骤,包括:
根据所述该类标识信息,确定与所述该类标识信息所对应的目标类;
将所述目标类中所有method中包含的调试信息删除。
可选的,所述预设的不需要进行调试的类的类标识信息存储于预设的目标清单中;
所述判断该类标识信息是否为预设的不需要进行调试的类的类标识信息的步骤,包括:
判断该类标识信息是否在预设的目标清单中。
可选的,所述方法还包括:
在对所述封装文件classes.dex进行调试后,重新确定不需要进行调试的类,并更新所述目标清单。
可选的,在所述判断该类标识信息是否为预设的不需要进行调试的类的类标识信息的步骤之前,所述方法还包括:
获得该类别标识信息对应的类中包含的各个method;
针对每个method,判断是否被所述封装文件classes.dex中的其他method调用;
将未被其他method调用的method删除。
第二方面,本发明实施例还提供了一种面向安卓应用的安装包体积优化装置,所述装置包括:
遍历模块,用于遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到所述封装文件classes.dex中的类标识信息;
第一判断模块,用于针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;
第一删除模块,用于如果所述判断模块判断出该类标识信息为预设的不需要进行调试的类的类标识信息,删除所述该类标识信息对应的类中包含的调试信息。
可选的,所述遍历模块,具体用于:
遍历所述封装文件classes.dex中的各个类,获得所述各个类的类名称,将所述类名称作为所述类标识信息。
可选的,所述删除模块,包括:
确定单元,用于根据所述该类标识信息,确定与所述该类标识信息所对应的目标类;
删除单元,用于将所述目标类中所有method中包含的调试信息删除。
可选的,所述预设的不需要进行调试的类的类标识信息存储于预设的目标清单中;
所述判断模块,具体用于:
判断该类标识信息是否在预设的目标清单中。
可选的,所述装置还包括:
更新模块,用于在对所述封装文件classes.dex进行调试后,重新确定不需要进行调试的类,并更新所述目标清单。
可选的,所述装置还包括:
获取模块,用于在所述判断该类标识信息是否为预设的不需要进行调试的类的类标识信息的步骤之前,获得该类别标识信息对应的类中包含的各个method;
第二判断模块,用于针对每个method,判断是否被所述封装文件classes.dex中的其他method调用;
第二删除模块,用于将未被其他method调用的method删除。
第三方面,本发明实施还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一面向安卓应用的安装包体积优化方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一面向安卓应用的安装包体积优化方法。
与现有技术相比,本发明实施例提供的技术方案,遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到封装文件classes.dex中的类标识信息;针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;如果该类标识信息为不需要进行调试的类的类标识信息,删除该类标识信息对应的类中包含的调试信息。因此,通过本发明实施例提供的技术方案,可以只将不需要调试的类中包含的调试信息删除,而不像现有技术那样,删除封装文件classes.dex中所有的调试信息,从而在减小安装包体积的同时,能够保留需要调试的类的调试信息,以使得开发者在后续的开发过程中,能够对需要调试的类进行调试。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例所提供的一种面向安卓应用的安装包体积优化方法的流程示意图;
图2为本发明实施例所提供的一种面向安卓应用的安装包体积优化装置的结构示意图;
图3为本发明实施例所提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术问题,本发明实施例提供了一种面向安卓应用的安装包体积优化方法、装置、电子设备及可读存储介质,以在减小安装包体积的同时,能够保留需要调试的类的调试信息,以使得开发者在后续的开发过程中,能够对需要调试的类进行调试。
第一方面,下面将对本发明实施例所提供的一种面向安卓应用的安装包体积优化方法进行介绍。
如图1所示,本发明实施例所提供的一种面向安卓应用的安装包体积优化方法,包括如下步骤:
S101,遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到该封装文件classes.dex中的类标识信息;
通过UnZip将待优化安卓系统安装包APK解压之后,得到一个封装文件classes.dex,该封装文件中包含一个类或者多个类,且每个类均有一个类标识信息。因此,通过遍历封装文件classes.dex,可以得到该封装文件classes.dex中的类标识信息。
可选的,遍历安卓系统安装包APK中的封装文件classes.dex,得到该封装文件classes.dex中的类标识信息的步骤,包括:
遍历该封装文件classes.dex中的各个类,获得该各个类的类名称,将该类名称作为该类标识信息。
由于每个类都具有其自身的类名称,且某个类的类名称与封装文件中其他类的类名称不同,也就是说,类与类名称具有一一对应关系,通过类名称即可将各个类区分开来,因此,可以将类名称作为类标识信息。
当然,类标识信息除了是类名称之外,还可以是其他能够其标识作用的信息,例如,可以对类进行编号,此时类编号也可以作为类标识信息。因此,本发明实施例对类标识信息不做具体限定。
S102,针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;
需要说明的是,类标识信息与类具有一一对应关系,每个类中包括方法method,每个方法method包括代码和能够调试该代码的调试信息。
发明人经过大量的实验发现:封装文件classes.dex中的类可以分为三种:第一种类为:开发者已经对其进行了多次调试,这些类已经被调试好,因此,开发人员在后续开发过程中,不需要再对这些类进行调试,也就是说,这些类中的调试信息可以被删除;第二种类为:开发者已经对其进行了几次调试,但是这些类还没用被调试好,因此,开发人员在后续开发过程中,还需要再对这些类进行调试,也就是说,这些类中的调试信息不能被删除;第三种类为:这些类包含的代码为新增代码,因此,开发人员在后续开发过程中,还需要再对这些类进行调试,即这些类中的调试信息不能被删除。
由于调试信息对应一种方法method,一种方法method对应一个类,也就是说,调试信息与类也具有对应关系,如果一个类不需要被调试,说明该类中包含的调试信息可以被删除,因此,可以在该待优化安卓系统对应的电子设备中,预先设置不需要进行调试的类的类标识信息,以便后续步骤中Proguard能够将安装包中没用的调试信息删除。
可选的,预设的不需要进行调试的类的类标识信息存储于预设的目标清单中;
判断该类标识信息是否为预设的不需要进行调试的类的类标识信息的步骤,包括:
判断该类标识信息是否在预设的目标清单中。
在一种实现方式中,可以将预设的不需要进行调试的类的类标识信息存储于预设的目标清单中,举例而言,类1、类2、类5是不需要进行调试的类,可以将类1、类2、类5的类标识信息存储在该预设的目标清单中。
在遍历得到封装文件classes.dex中的类标识信息之后,对于每一个类标识信息,判断该类标识信息是否在该预设的目标清单中,进而能够判断该类标识信息对应的类是否为不需要调试的类。
当然,预设的不需要进行调试的类的类标识信息可以存储于预设的目标清单中,还可以存储在其他任何可以存储信息的文件中,例如,存储在数组中,本发明实施例对不需要进行调试的类的类标识信息的存储位置不做具体限定。
S103,如果判断出该类标识信息为预设的不需要进行调试的类的类标识信息,删除该类标识信息对应的类中包含的调试信息。
在判断出该类标识信息为不需要进行调试的类的类标识信息时,说明该类标识信息对应的类中包含的调试信息为没用的调试信息,因此,可以将该类标识信息对应的类中包含的调试信息删除。
可选的,删除该类标识信息对应的类中包含的调试信息的步骤,包括:
根据该类标识信息,确定与该类标识信息所对应的目标类;将目标类中所有method中包含的调试信息删除。
在判断出该类标识信息为预设的不需要进行调试的类的类标识信息之后,根据类标识信息与类的一一对应关系,确定该类标识信息所对应的目标类,然后将该目标类中的所有method中包含的调试信息删除。
继续以步骤S103所举的例子为例,在遍历得到封装文件classes.dex中的类标识信息后,判断出类1、类2、类5的类标识信息为预设的不需要进行调试的类的类目标信息,因此,可以将类1、类2、类5确定为目标类,然后将类1、类2、类5中的所有method中包含的调试信息删除。
与现有技术相比,本发明实施例提供的技术方案,遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到封装文件classes.dex中的类标识信息;针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;如果该类标识信息为不需要进行调试的类的类标识信息,删除该类标识信息对应的类中包含的调试信息。因此,通过本发明实施例提供的技术方案,可以只将不需要调试的类中包含的调试信息删除,而不像现有技术那样,删除封装文件classes.dex中所有的调试信息,从而在减小安装包体积的同时,能够保留需要调试的类的调试信息,以使得开发者在后续的开发过程中,能够对需要调试的类进行调试。
可选的,在对封装文件classes.dex进行调试后,重新确定不需要进行调试的类,并更新目标清单。
在对封装文件classes.dex的代码进行调试后,可能存在这样的情况:在对封装文件classes.dex的代码进行调试之前,某些类为需要进行调试的类,在对封装文件classes.dex的代码进行调试之后,某些类变为不需要调试的类。因此,在对封装文件classes.dex的代码进行调试之后,需要重新确定不需要进行调试的类,并更新目标清单,其中,该目标清单存储有不需要进行调试的类的类标识信息。
举例而言,在对封装文件classes.dex的代码进行调试之前,类8为需要进行调试的类;而对封装文件classes.dex的代码进行调试之后,开发员根据实际需要判断出类8为不需要进行调试的类,因此,将类8加入到目标清单中,以便Proguard能够将类8中包含的调试信息删除,进而使得安装包的体积减小。
需要强调的是,开发人员在开发的过程中,可能会在封装文件classes.dex中新增代码,这些新增代码通常是需要进行反复调试的,即这些新增代码所属的类为需要调试的类,因此,开发人员不会将新增代码所属的类的类标识信息添加到目标清单中,进而待优化安卓系统对应的电子设备不会将用来调试新增代码的调试信息删除,从而方便开发员对新增代码进行调试。
可选的,在判断该类标识信息是否为预设的不需要进行调试的类的类标识信息的步骤之前,所述方法还可以包括:
获得该类别标识信息对应的类中包含的各个method;
针对每个method,判断是否被所述封装文件classes.dex中的其他method调用;
将未被其他method调用的method删除。
为了进一步减小安装包的体积,在判断该类标识信息是否为预设的不需要进行调试的类的类标识信息的步骤之前,还可以将没用的method删除掉,此处,没用的method为没有被所述封装文件classes.dex中的其他method调用的method,以免没用的method使得安装包的体积变大。
具体的,首先获得封装文件classes.dex中包含的各个method,然后针对各一个method,判断该method是否被其他method调用。该method可以被其对应的类中的method调用,也可以被其他类中的method调用,只要是被封装文件classes.dex中包含的其他method调用即可。
如果该method没有被封装文件classes.dex中的其他method调用,则可以判断出该method没用,否则,该method有用。如果该method没用,则将该method全部删除;如果该method有用,即不删除该method。
与现有技术相比,本发明实施例提供的技术方案,可以只将不需要调试的类中包含的调试信息删除,而不像现有技术那样,删除封装文件classes.dex中所有的调试信息,从而在减小安装包体积的同时,能够保留需要调试的类的调试信息,以使得开发者在后续的开发过程中,能够对需要调试的类进行调试。而且,待优化安卓系统对应的电子设备不会将用来调试新增代码的调试信息删除,从而方便开发员对新增代码进行调试。
第二方面,下面将对本发明实施例所提供的一种面向安卓应用的安装包体积优化装置进行介绍。
如图2所示,本发明实施例所提供的一种面向安卓应用的安装包体积优化装置,所述装置包括:
遍历模块,用于遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到所述封装文件classes.dex中的类标识信息;
第一判断模块,用于针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;第一删除模块,用于如果所述判断模块判断出该类标识信息为预设的不需要进行调试的类的类标识信息,删除所述该类标识信息对应的类中包含的调试信息。
与现有技术相比,本发明实施例提供的技术方案,遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到封装文件classes.dex中的类标识信息;针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;如果该类标识信息为不需要进行调试的类的类标识信息,删除该类标识信息对应的类中包含的调试信息。因此,通过本发明实施例提供的技术方案,可以只将不需要调试的类中包含的调试信息删除,而不像现有技术那样,删除封装文件classes.dex中所有的调试信息,从而在减小安装包体积的同时,能够保留需要调试的类的调试信息,以使得开发者在后续的开发过程中,能够对需要调试的类进行调试。
可选的,所述遍历模块,具体用于:
遍历所述封装文件classes.dex中的各个类,获得所述各个类的类名称,将所述类名称作为所述类标识信息。
可选的,所述删除模块,包括:
确定单元,用于根据所述该类标识信息,确定与所述该类标识信息所对应的目标类;删除单元,用于将所述目标类中所有method中包含的调试信息删除。可选的,所述预设的不需要进行调试的类的类标识信息存储于预设的目标清单中;
所述判断模块,具体用于:
判断该类标识信息是否在预设的目标清单中。
可选的,所述装置还包括:
更新模块,用于在对所述封装文件classes.dex进行调试后,重新确定不需要进行调试的类,并更新所述目标清单。
可选的,所述装置还包括:
获取模块,用于在所述判断该类标识信息是否为预设的不需要进行调试的类的类标识信息的步骤之前,获得该类别标识信息对应的类中包含的各个method;
第二判断模块,用于针对每个method,判断是否被所述封装文件classes.dex中的其他method调用;
第二删除模块,用于将未被其他method调用的method删除。
与现有技术相比,本发明实施例提供的技术方案,可以只将不需要调试的类中包含的调试信息删除,而不像现有技术那样,删除封装文件classes.dex中所有的调试信息,从而在减小安装包体积的同时,能够保留需要调试的类的调试信息,以使得开发者在后续的开发过程中,能够对需要调试的类进行调试。而且,待优化安卓系统对应的电子设备不会将用来调试新增代码的调试信息删除,从而方便开发员对新增代码进行调试。
第三方面,本发明实施例还提供了一种电子设备,如图3所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信,
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,实现上述方法实施例所述的任一面向安卓应用的安装包体积优化方法。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
与现有技术相比,本发明实施例提供的技术方案,遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到封装文件classes.dex中的类标识信息;针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;如果该类标识信息为不需要进行调试的类的类标识信息,删除该类标识信息对应的类中包含的调试信息。因此,通过本发明实施例提供的技术方案,可以只将不需要调试的类中包含的调试信息删除,而不像现有技术那样,删除封装文件classes.dex中所有的调试信息,从而在减小安装包体积的同时,能够保留需要调试的类的调试信息,以使得开发者在后续的开发过程中,能够对需要调试的类进行调试。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述方法实施例所述的任一面向安卓应用的安装包体积优化方法。
与现有技术相比,本发明实施例提供的技术方案,遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到封装文件classes.dex中的类标识信息;针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;如果该类标识信息为不需要进行调试的类的类标识信息,删除该类标识信息对应的类中包含的调试信息。因此,通过本发明实施例提供的技术方案,可以只将不需要调试的类中包含的调试信息删除,而不像现有技术那样,删除封装文件classes.dex中所有的调试信息,从而在减小安装包体积的同时,能够保留需要调试的类的调试信息,以使得开发者在后续的开发过程中,能够对需要调试的类进行调试。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及可读存储介质的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种面向安卓应用的安装包体积优化方法,其特征在于,所述方法包括:
遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到所述封装文件classes.dex中的类标识信息;
针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;
若为是,删除所述该类标识信息对应的类中包含的调试信息。
2.根据权利要求1所述的方法,其特征在于,所述遍历安卓系统安装包APK中的封装文件classes.dex,得到所述封装文件classes.dex中的类标识信息的步骤,包括:
遍历所述封装文件classes.dex中的各个类,获得所述各个类的类名称,将所述类名称作为所述类标识信息。
3.根据权利要求1所述的方法,其特征在于,所述删除所述该类标识信息对应的类中包含的调试信息的步骤,包括:
根据所述该类标识信息,确定与所述该类标识信息所对应的目标类;
将所述目标类中所有method中包含的调试信息删除。
4.根据权利要求1所述的方法,其特征在于,所述预设的不需要进行调试的类的类标识信息存储于预设的目标清单中;
所述判断该类标识信息是否为预设的不需要进行调试的类的类标识信息的步骤,包括:
判断该类标识信息是否在预设的目标清单中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在对所述封装文件classes.dex进行调试后,重新确定不需要进行调试的类,并更新所述目标清单。
6.根据权利要求1所述的方法,其特征在于,在所述判断该类标识信息是否为预设的不需要进行调试的类的类标识信息的步骤之前,所述方法还包括:
获得该类别标识信息对应的类中包含的各个method;
针对每个method,判断是否被所述封装文件classes.dex中的其他method调用;
将未被其他method调用的method删除。
7.一种面向安卓应用的安装包体积优化装置,其特征在于,所述装置包括:
遍历模块,用于遍历待优化安卓系统安装包APK中的封装文件classes.dex,得到所述封装文件classes.dex中的类标识信息;
第一判断模块,用于针对每个类标识信息,判断该类标识信息是否为预设的不需要进行调试的类的类标识信息;
第一删除模块,用于如果所述判断模块判断出该类标识信息为预设的不需要进行调试的类的类标识信息,删除所述该类标识信息对应的类中包含的调试信息。
8.根据权利要求7所述的装置,其特征在于,所述遍历模块,具体用于:
遍历所述封装文件classes.dex中的各个类,获得所述各个类的类名称,将所述类名称作为所述类标识信息。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法步骤。
CN201710882005.5A 2017-09-26 2017-09-26 一种面向安卓应用的安装包体积优化方法及装置 Active CN109558145B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710882005.5A CN109558145B (zh) 2017-09-26 2017-09-26 一种面向安卓应用的安装包体积优化方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710882005.5A CN109558145B (zh) 2017-09-26 2017-09-26 一种面向安卓应用的安装包体积优化方法及装置

Publications (2)

Publication Number Publication Date
CN109558145A true CN109558145A (zh) 2019-04-02
CN109558145B CN109558145B (zh) 2022-04-22

Family

ID=65862691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710882005.5A Active CN109558145B (zh) 2017-09-26 2017-09-26 一种面向安卓应用的安装包体积优化方法及装置

Country Status (1)

Country Link
CN (1) CN109558145B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110489159A (zh) * 2019-08-02 2019-11-22 北京字节跳动网络技术有限公司 安装包精简方法及数据解析方法、装置、介质和设备
CN110795114A (zh) * 2019-10-29 2020-02-14 北京五八信息技术有限公司 应用程序安装包的监测方法、装置、电子设备及存储介质
CN111580824A (zh) * 2020-03-30 2020-08-25 北京达佳互联信息技术有限公司 程序优化方法、装置及存储介质
CN112306542A (zh) * 2020-10-30 2021-02-02 北京奇艺世纪科技有限公司 一种应用程序包处理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120216292A1 (en) * 2011-02-23 2012-08-23 Lookout, Inc. User Account Creation Involving a Mobile Device
CN103870303A (zh) * 2014-02-10 2014-06-18 广东欧珀移动通信有限公司 减小软件安装包大小的方法及装置
CN106599151A (zh) * 2016-12-07 2017-04-26 Tcl集团股份有限公司 一种Android工程无用资源并行清理的方法及系统
CN106997364A (zh) * 2016-01-26 2017-08-01 阿里巴巴集团控股有限公司 一种终端的应用资源检测方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120216292A1 (en) * 2011-02-23 2012-08-23 Lookout, Inc. User Account Creation Involving a Mobile Device
CN103870303A (zh) * 2014-02-10 2014-06-18 广东欧珀移动通信有限公司 减小软件安装包大小的方法及装置
CN106997364A (zh) * 2016-01-26 2017-08-01 阿里巴巴集团控股有限公司 一种终端的应用资源检测方法及装置
CN106599151A (zh) * 2016-12-07 2017-04-26 Tcl集团股份有限公司 一种Android工程无用资源并行清理的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
胡宝全: "如何压缩减小少APK安卓安装包大小", 《HTTPS://BLOG.CSDN.NET/HUBAOQUANU/ARTICLE/DETAILS/65934728》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110489159A (zh) * 2019-08-02 2019-11-22 北京字节跳动网络技术有限公司 安装包精简方法及数据解析方法、装置、介质和设备
CN110795114A (zh) * 2019-10-29 2020-02-14 北京五八信息技术有限公司 应用程序安装包的监测方法、装置、电子设备及存储介质
CN111580824A (zh) * 2020-03-30 2020-08-25 北京达佳互联信息技术有限公司 程序优化方法、装置及存储介质
CN111580824B (zh) * 2020-03-30 2024-05-07 北京达佳互联信息技术有限公司 程序优化方法、装置及存储介质
CN112306542A (zh) * 2020-10-30 2021-02-02 北京奇艺世纪科技有限公司 一种应用程序包处理方法、装置、电子设备及存储介质
CN112306542B (zh) * 2020-10-30 2023-09-05 北京奇艺世纪科技有限公司 一种应用程序包处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN109558145B (zh) 2022-04-22

Similar Documents

Publication Publication Date Title
US10409937B2 (en) Modelling and simulation method
CN109558145A (zh) 一种面向安卓应用的安装包体积优化方法及装置
WO2018049888A1 (zh) 应用数据的迁移方法及装置
CN107609004B (zh) 应用程序埋点方法和装置、计算机设备和存储介质
CN108304175B (zh) 代码文件隔离打包方法及装置
CN110321226A (zh) 主机的自动扩缩容方法、装置、主机及存储介质
CN109800005B (zh) 一种客户端热更新方法及装置
CN111176717B (zh) 生成安装包的方法、装置及电子设备
US20220179642A1 (en) Software code change method and apparatus
CN111611145B (zh) 崩溃信息收集方法、装置、存储介质及电子设备
CN110321134A (zh) 一种生成应用安装包的方法、存储介质以应用服务器
CN108804100B (zh) 创建界面元素的方法、装置、存储介质及移动终端
CN110990356B (zh) 一种用于逻辑镜像的实时自动扩容方法和系统
JP2007141072A (ja) トレース情報出力装置
CN111124382A (zh) Java中的属性赋值方法、装置及服务器
CN114253587A (zh) 应用程序更新方法、装置、电子设备及可读存储介质
CN113127000A (zh) 应用程序组件的编译方法、装置、设备及存储介质
CN110442353B (zh) 一种安装包管理的方法、装置及电子设备
CN110727565B (zh) 一种网络设备平台信息收集方法及系统
CN111104200A (zh) 一种虚拟机管理方法、装置、存储介质及服务器
CN109388459A (zh) 图片加载方法、装置、计算机设备及存储介质
CN112882708A (zh) 列表界面的实现方法及装置、电子设备、存储介质
CN111273940B (zh) 将程序文件上传至代码仓库的方法及装置
CN115176231A (zh) 用于处理数据的方法和设备
CN110750746A (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