一种空间优化方法、系统、智能设备及存储介质与流程

文档序号:26823183发布日期:2021-09-29 04:31阅读:91来源:国知局
一种空间优化方法、系统、智能设备及存储介质与流程

1.本发明涉及应用安装技术领域,尤指一种空间优化方法、系统、智能设备及存储介质。


背景技术:

2.展讯平台是指由展讯公司开发的手机基带处理器平台,在智能手机、平板、智能手表等智能设备中也被广泛采用,主要支持gsm,td

scdma,td

lte等通讯标准。目前展讯平台在使用时,经常出现系统可用空间不足的问题,系统可用空间小于60mb的用户占比较高,可能会引起用户投诉或应用无法升级的问题,影响设备的正常使用。因此,需要一种能够优化系统空间,减小应用安装包体积,从而提高用户使用体验的方法。


技术实现要素:

3.本发明的目的是提供一种空间优化方法、系统、智能设备及存储介质,该方案能够优化系统空间,减小应用安装包的体积,从而提高用户的使用体验,避免影响设备的正常使用。
4.本发明提供的技术方案如下:
5.本发明提供一种空间优化方法,包括步骤:
6.在编译预置应用时,剔除每个预置应用中相同的类文件;
7.将被剔除的所述类文件打包输出至预定目录中;
8.从所述预定目录中拉取每个所述预置应用使用的所述类文件;
9.判断每个所述预置应用使用的所述类文件是否相同;
10.若相同,则合并对应的所述类文件。
11.现有技术中,在执行编译时,通常是对安装包的源码进行编译以及打包处理,每个应用中都打包了一些被每个应用都重复使用的基础库文件。该处理方式会造成系统可用空间逐渐不足,影响设备的正常使用。
12.本方案通过在编译预置应用时,剔除每个预置应用中相同的类文件,并将被剔除的类文件打包输出至预定目录中,从预定目录中拉取每个预置应用使用的类文件,判断每个预置应用依赖的类文件是否相同,若相同,则合并对应的类文件,从而使得应用安装包的体积减小,有利于优化系统空间,提高用户的使用体验,避免影响设备的正常使用。
13.具体的,在本实施例中,通过众测用户数据显示,可以为用户节省出约18.8

40.9mb的data分区可用空间,平均提升30mb可用空间,用户终端剩余空间在60mb以下的用户占比由37.95%降低至21.80%,总计降低16.15%,用户终端升级之后的优化版本剩余空间在60mb以下的用户只有1.78%,大大提高了设备的使用体验。
14.进一步地,所述的在编译预置应用时,剔除每个预置应用中相同的类文件,具体包括步骤:
15.对所述预置应用的源码以及外部依赖库进行编译,获取class文件;
16.在打包的流水线最末尾增加一个自定义transform,剔除所述class文件中所述外部依赖库中使用到的所述类文件;
17.生成所述外部依赖库的api接口的proguard文件;
18.对处理后的所述class文件进行混淆、dex,以及打包处理。
19.具体的,在剔除每个预置应用中相同的类文件时,先对预置应用的源码以及外部依赖库进行编译,获取class文件,再在打包的流水线最末尾增加一个自定义transform,以便剔除述class文件中外部依赖库中使用到的类文件;同时,生成外部依赖库的api接口的proguard文件(proguard是java类文件收缩器、优化器、混淆器和预验证器),避免外部依赖库的接口被混淆,之后便能对处理后的class文件进行混淆、dex,以及打包处理。
20.进一步地,所述的判断每个所述预置应用使用的所述类文件是否相同,具体包括步骤:
21.通过文件哈希值校验每个所述预置应用使用的所述类文件是否相同。
22.进一步地,所述的合并对应的所述类文件之后,还包括步骤:
23.通过d8工具将所述类文件的jvm字节码编译成支持在指定平台运行的dex字节码;
24.根据所述dex字节码的数量,生成一个或多个jar文件,并打包所述jar文件。
25.进一步地,所述的将被剔除的所述类文件打包输出至预定目录中之后,还包括步骤:
26.将编译预置应用时,没有被剔除的所述类文件的构造函数中插入preventclassverified.prevent()调用;
27.所述的合并对应的所述类文件,还包括:
28.合并preventclassverified类文件。
29.具体的,在编译预置应用时,可以将没有被剔除的所述类文件的构造函数中插入preventclassverified.prevent()调用,防止虚拟机给类文件打上预校验的标签,避免影响正常的校验过程,在合并对应的所述类文件,同时合并preventclassverified类文件。
30.另外,当预置应用启动运行时,除了加载应用自身apk的dex文件外,还需要把被剔除的依赖库dex文件添加到应用的classloader中,以保证应用拥有完整的可执行文件,能正常运行所有功能。
31.另外,本发明还提供一种空间优化方法系统,包括:
32.剔除模块,用于在编译预置应用时,剔除每个预置应用中相同的类文件;
33.打包模块,与所述剔除模块连接,用于将被剔除的所述类文件打包输出至预定目录中;
34.拉取模块,与所述打包模块连接,用于从所述预定目录中拉取每个所述预置应用使用的所述类文件;
35.判断模块,与所述拉取模块连接,用于判断每个所述预置应用使用的所述类文件是否相同;
36.合并模块,与所述判断模块连接,用于在判断每个所述预置应用使用的所述类文件相同时,合并对应的所述类文件。
37.本方案通过在编译预置应用时,通过剔除模块剔除每个预置应用中相同的类文件,并将被剔除的类文件通过打包模块打包输出至预定目录中,再通过拉取模块从预定目
录中拉取每个预置应用使用的类文件,判断模块判断每个预置应用使用的类文件是否相同,若相同,则通过合并模块合并对应的类文件,从而使得应用安装包的体积减小,有利于优化系统空间,提高用户的使用体验,避免影响设备的正常使用。
38.进一步地,所述剔除模块包括:
39.编译和解包单元,用于对所述预置应用的源码以及外部依赖库进行编译,获取class文件;
40.剔除单元,用于在打包的流水线最末尾增加一个自定义transform,剔除所述class文件中所述外部依赖库中使用到的所述类文件;
41.proguard文件生成单元,用于生成所述外部依赖库的api接口的proguard文件;
42.处理单元,用于对处理后的所述class文件进行混淆、dex,以及打包处理。
43.具体的,在剔除外部依赖库中使用到的类文件时,先通过编译和解包单元对预置应用的源码以及外部依赖库进行编译,获取class文件,再通过剔除单元在打包的流水线最末尾增加一个自定义transform,以便剔除述class文件中外部依赖库中使用到的类文件;同时,通过proguard文件生成单元生成外部依赖库的api接口的proguard文件(proguard是java类文件收缩器、优化器、混淆器和预验证器),避免外部依赖库的接口被混淆,之后便能通过处理单元实现对处理后的class文件进行混淆、dex,以及打包处理。
44.进一步地,还包括:
45.编译模块,与所述合并模块连接,用于通过d8工具将所述类文件的jvm字节码编译成支持在指定平台运行的dex字节码;
46.打包模块,与所述编译模块连接,用于根据所述dex字节码的数量,生成一个或多个jar文件,并打包所述jar文件。
47.另外,本发明还提供一种智能设备,包括:
48.存储器,用于存放运行程序;
49.处理器,用于执行所述存储器内存放的运行程序,实现上述的空间优化方法所述执行的操作。
50.另外,本发明还提供一种存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述的空间优化方法所执行的操作。
51.根据本发明提供的一种空间优化方法、系统、智能设备及存储介质,通过在编译预置应用时,剔除每个预置应用中相同的类文件,并将被剔除的类文件打包输出至预定目录中,从预定目录中拉取每个预置应用使用的类文件,判断每个预置应用使用的类文件是否相同,若相同,则合并对应的类文件,从而使得应用安装包的体积减小,有利于优化系统空间,提高用户的使用体验,避免影响设备的正常使用。
附图说明
52.下面将以明确易懂的方式,结合附图说明优选实施方式,对本方案的上述特性、技术特征、优点及其实现方式予以进一步说明。
53.图1是本发明实施例的整体结构示意图;
54.图2是本发明实施例的编译流程示意图;
55.图3是本发明实施例的外部依赖库打包流程示意图;
56.图4是本发明实施例的系统结构示意图;
57.图5是本发明实施例的智能设备结构示意图。
58.图中标号:1

剔除模块;11

编译和解包单元;12

剔除单元;13

proguard文件生成单元;14

处理单元;2

打包模块;3

拉取模块;4

判断模块;5

合并模块;6

编译模块;7

打包模块;100

存储器;200

处理器;300

通信接口;400

通信总线;500

输入/输出接口。
具体实施方式
59.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
60.为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
61.实施例1
62.本发明的一个实施例,如图1所示,本发明提供一种空间优化方法,包括步骤:
63.s1、在编译预置应用时,剔除每个预置应用中相同的类文件。
64.s2、将被剔除的类文件打包输出至预定目录中。
65.s3、从预定目录中拉取每个预置应用使用的类文件。
66.s4、判断每个预置应用使用的类文件是否相同。
67.s5、若相同,则合并对应的类文件。
68.现有技术中,在执行编译时,通常是对安装包的源码进行编译以及打包处理,每个应用中都打包了一些被每个应用都重复使用的基础库文件。但该处理方式会造成系统可用空间逐渐不足,影响设备的正常使用。
69.如图2所示,本方案通过在编译预置应用时,剔除每个预置应用中相同的类文件,并将被剔除的类文件打包输出至预定目录中,从预定目录中拉取每个预置应用使用的类文件,判断每个预置应用使用的类文件是否相同,若相同,则合并对应的类文件,从而使得应用安装包的体积减小,有利于优化系统空间,提高用户的使用体验,避免影响设备的正常使用。
70.具体的,在本实施例中,通过众测用户数据显示,可以为用户节省出约18.8

40.9mb的data分区可用空间,平均提升30mb可用空间,用户终端剩余空间在60mb以下的用户占比由37.95%降低至21.80%,总计降低16.15%,用户终端升级之后的优化版本剩余空间在60mb以下的用户只有1.78%,大大提高了设备的使用体验。
71.实施例2
72.本发明的一个实施例,如图1所示,本发明提供一种空间优化方法,包括步骤:s1、在编译预置应用时,剔除每个预置应用中相同的类文件。
73.s11、对预置应用的源码以及外部依赖库进行编译,获取class文件。
74.s12、在打包的流水线最末尾增加一个自定义transform,剔除class文件中外部依
赖库中使用到的类文件。
75.s13、生成外部依赖库的api接口的proguard文件。
76.s14、对处理后的class文件进行混淆、dex,以及打包处理。
77.具体的,在剔除每个预置应用中相同的类文件时,先对预置应用的源码以及外部依赖库进行编译,获取class文件,再在打包的流水线最末尾增加一个自定义transform,以便剔除述class文件中外部依赖库中使用到的类文件;同时,生成外部依赖库的api接口的proguard文件(proguard是java类文件收缩器、优化器、混淆器和预验证器),避免外部依赖库的接口被混淆,之后便能对处理后的class文件进行混淆、dex,以及打包处理。
78.s2、将被剔除的类文件打包输出至预定目录中。
79.s3、从预定目录中拉取每个预置应用使用的类文件。
80.s4、判断每个预置应用使用的类文件是否相同。
81.优选的,判断每个预置应用依赖的类文件是否相同,具体包括步骤:
82.通过文件哈希值校验每个预置应用使用的类文件是否相同。
83.s5、若相同,则合并对应的类文件。
84.现有技术中,在执行编译时,通常是对安装包的源码进行编译以及打包处理,每个应用中都打包了一些被每个应用都重复使用的基础库文件。但该处理方式会造成系统可用空间逐渐不足,影响设备的正常使用。
85.本方案通过在编译预置应用时,剔除每个预置应用中相同的类文件,并将被剔除的类文件打包输出至预定目录中,从预定目录中拉取每个预置应用使用的类文件,判断每个预置应用使用的类文件是否相同,若相同,则合并对应的类文件,从而使得应用安装包的体积减小,有利于优化系统空间,提高用户的使用体验,避免影响设备的正常使用。
86.具体的,在本实施例中,通过众测用户数据显示,可以为用户节省出约18.8

40.9mb的data分区可用空间,平均提升30mb可用空间,用户终端剩余空间在60mb以下的用户占比由37.95%降低至21.80%,总计降低16.15%,用户终端升级之后的优化版本剩余空间在60mb以下的用户只有1.78%,大大提高了设备的使用体验。
87.实施例3
88.本发明的一个实施例,如图1所示,本发明提供一种空间优化方法,包括步骤:
89.s1、在编译预置应用时,剔除每个预置应用中相同的类文件。
90.s2、将被剔除的类文件打包输出至预定目录中。
91.s3、从预定目录中拉取每个预置应用使用的类文件。
92.s4、判断每个预置应用使用的类文件是否相同。
93.s5、若相同,则合并对应的类文件。
94.现有技术中,在执行编译时,通常是对安装包的源码进行编译以及打包处理,每个应用中都打包了一些被每个应用都重复使用的基础库文件但该处理方式会造成系统可用空间逐渐不足,影响设备的正常使用。
95.本方案通过在编译预置应用时,剔除每个预置应用中相同的类文件,并将被剔除的类文件打包输出至预定目录中,从预定目录中拉取每个预置应用使用的类文件,判断每个预置应用使用的类文件是否相同,若相同,则合并对应的类文件,从而使得应用安装包的体积减小,有利于优化系统空间,提高用户的使用体验,避免影响设备的正常使用。
96.具体的,在本实施例中,通过众测用户数据显示,可以为用户节省出约18.8

40.9mb的data分区可用空间,平均提升30mb可用空间,用户终端剩余空间在60mb以下的用户占比由37.95%降低至21.80%,总计降低16.15%,用户终端升级之后的优化版本剩余空间在60mb以下的用户只有1.78%,大大提高了设备的使用体验。
97.s6通过d8工具将类文件的jvm字节码编译成支持在指定平台运行的dex字节码。
98.s7根据dex字节码的数量,生成一个或多个jar文件,并打包jar文件。
99.具体的,如图3所示,在合并对应的类文件,可以通过d8工具将类文件的jvm字节码编译成支持在指定平台运行的dex字节码,再根据dex字节码的数量,生成一个或多个jar文件,并打包jar文件。
100.另外,当预置应用启动运行时,除了加载应用自身apk的dex文件外,还需要把被剔除的依赖库dex文件添加到应用的classloader中,以保证应用拥有完整的可执行文件,能正常运行所有功能。
101.实施例4
102.本发明的一个实施例,如图1所示,本发明提供一种空间优化方法,包括步骤:
103.s1、在编译预置应用时,剔除每个预置应用中相同的类文件。
104.s2、将被剔除的类文件打包输出至预定目录中。
105.优选的,将被剔除的类文件打包输出至预定目录中之后,还包括步骤:
106.将编译预置应用时,没有被剔除的类文件的构造函数中插入preventclassverified.prevent()调用。
107.s3、从预定目录中拉取每个预置应用使用的类文件。
108.s4、判断每个预置应用使用的类文件是否相同。
109.s5、若相同,则合并对应的类文件。
110.优选的,合并对应的类文件,还包括:
111.合并preventclassverified类文件。
112.具体的,在编译预置应用时,可以将没有被剔除的类文件的构造函数中插入preventclassverified.prevent()调用,防止虚拟机给类文件打上预校验的标签,避免影响正常的校验过程,在合并对应的类文件,同时合并preventclassverified类文件。
113.现有技术中,在执行编译时,通常是对安装包的源码进行编译以及打包处理,每个应用中都打包了一些被每个应用都重复使用的基础库文件。但该处理方式会造成系统可用空间逐渐不足,影响设备的正常使用。
114.本方案通过在编译预置应用时,剔除每个预置应用中相同的类文件,并将被剔除的类文件打包输出至预定目录中,从预定目录中拉取每个预置应用使用的类文件,判断每个预置应用使用的类文件是否相同,若相同,则合并对应的类文件,从而使得应用安装包的体积减小,有利于优化系统空间,提高用户的使用体验,避免影响设备的正常使用。
115.具体的,在本实施例中,通过众测用户数据显示,可以为用户节省出约18.8

40.9mb的data分区可用空间,平均提升30mb可用空间,用户终端剩余空间在60mb以下的用户占比由37.95%降低至21.80%,总计降低16.15%,用户终端升级之后的优化版本剩余空间在60mb以下的用户只有1.78%,大大提高了设备的使用体验。
116.实施例5
117.本发明的一个实施例,如图4所示,本发明还提供一种空间优化方法系统,包括剔除模块1、打包模块2、拉取模块3、判断模块4和合并模块5。
118.剔除模块1用于在编译预置应用时,剔除每个预置应用中相同的类文件;打包模块2与剔除模块1连接,用于将被剔除的类文件打包输出至预定目录中;拉取模块3与打包模块2连接,用于从预定目录中拉取每个预置应用使用的类文件;判断模块4与拉取模块3连接,用于判断每个预置应用使用的类文件是否相同;合并模块5与判断模块4连接,用于在判断每个预置应用使用的类文件相同时,合并对应的类文件。
119.现有技术中,在执行编译时,通常是对安装包的源码进行编译、以及打包处理,每个应用中都打包了一些被每个应用都重复使用的基础库文件。但该处理方式会造成系统可用空间逐渐不足,影响设备的正常使用。
120.本方案通过在编译预置应用时,通过剔除模块1每个预置应用中相同的类文件,并将被剔除的类文件通过打包模块2打包输出至预定目录中,再通过拉取模块3从预定目录中拉取每个预置应用使用的类文件,判断模块4判断每个预置应用使用的类文件是否相同,若相同,则通过合并模块5合并对应的类文件,从而使得应用安装包的体积减小,有利于优化系统空间,提高用户的使用体验,避免影响设备的正常使用。
121.具体的,在本实施例中,通过众测用户数据显示,可以为用户节省出约18.8

40.9mb的data分区可用空间,平均提升30mb可用空间,用户终端剩余空间在60mb以下的用户占比由37.95%降低至21.80%,总计降低16.15%,用户终端升级之后的优化版本剩余空间在60mb以下的用户只有1.78%,大大提高了设备的使用体验。
122.实施例6
123.本发明的一个实施例,如图4所示,在实施例5的基础上,剔除模块1包括编译和解包单元11、剔除单元12、proguard文件生成单元13和处理单元14。
124.编译和解包单元11用于对预置应用的源码以及外部依赖库进行编译,获取class文件。
125.剔除单元12用于在打包的流水线最末尾增加一个自定义transform,剔除class文件中外部依赖库中使用到的类文件。
126.proguard文件生成单元13用于生成外部依赖库的api接口的proguard文件。
127.处理单元14用于对处理后的class文件进行混淆、dex,以及打包处理。
128.具体的,在剔除每个预置应用中相同的类文件时,先通过编译和解包单元11对预置应用的源码以及外部依赖库进行编译,获取class文件,再通过剔除单元12在打包的流水线最末尾增加一个自定义transform,以便剔除述class文件中外部依赖库中使用到的类文件;同时,通过proguard文件生成单元13生成外部依赖库的api接口的proguard文件(proguard是java类文件收缩器、优化器、混淆器和预验证器),避免外部依赖库的接口被混淆,之后便能通过处理单元14实现对处理后的class文件进行混淆、dex,以及打包处理。
129.实施例7
130.本发明的一个实施例,如图4所示,在实施例5或实施例6的基础上,本发明提供的空间优化方法系统还包括编译模块6和打包模块7。
131.编译模块6与合并模块5连接,用于通过d8工具将类文件的jvm字节码编译成支持在指定平台运行的dex字节码。
132.打包模块7与编译模块6连接,用于根据dex字节码的数量,生成一个或多个jar文件,并打包所述jar文件。
133.优选的,判断每个预置应用依赖的类文件是否相同,具体包括步骤:
134.通过文件哈希值校验每个预置应用依赖的类文件是否相同。
135.优选的,将被剔除的类文件打包输出至预定目录中之后,还包括将编没有被剔除的类文件的构造函数中插入preventclassverified.prevent()调用。合并对应的类文件时还包括:合并preventclassverified类文件。
136.另外,当预置应用启动运行时,除了加载应用自身apk的dex文件外,还需要把被剔除的依赖库dex文件添加到应用的classloader中,以保证应用拥有完整的可执行文件,能正常运行所有功能。
137.实施例8
138.另外,如图5所示,本发明还提供一种智能设备,包括存储器100和处理器200,存储器100用于存放运行程序,处理器200用于执行存储器内存放的运行程序,实现实施例1至实施例4任一所述的空间优化方法所执行的操作。
139.具体的,智能设备还可以包括通信接口300、通信总线400和输入/输出接口500,其中,处理器200、存储器100、输入/输出接口500和通信接口300通过通信总线400完成相互间的通信。
140.通信总线400是连接所描述的元素的电路并且在这些元素之间实现传输。例如,处理器200通过通信总线400从其它元素接收到命令,解密接收到的命令,根据解密的命令执行计算或数据处理。存储器100可以包括程序模块,例如内核(kernel),中间件(middleware),应用程序编程接口(application programming interface,api)和应用。该程序模块可以是有软件、固件或硬件、或其中的至少两种组成。输入/输出接口500转发用户通过输入输出设备(例如感应器、键盘、触摸屏)输入的命令或数据。通信接口300将该智能设备与其它网络设备、用户设备、网络进行连接。例如,通信接口300可以通过有线或无线连接到网络以连接到外部其它的网络设备或用户设备。无线通信可以包括以下至少一种:无线保真(wifi),蓝牙(bt),近距离无线通信技术(nfc),全球卫星定位系统(gps)和蜂窝通信等等。有线通信可以包括以下至少一种:通用串行总线(usb),高清晰度多媒体接口(hdmi),异步传输标准接口(rs

232)等等。网络可以是电信网络和通信网络。通信网络可以为计算机网络、因特网、物联网、电话网络。智能设备可以通过通信接口300连接网络,智能设备和其它网络设备通信所用的协议可以被应用、应用程序编程接口(api)、中间件、内核和通信接口至少一个支持。
141.实施例9
142.另外,本发明还提供一种存储介质,存储介质中存储有至少一条指令,指令由处理器加载并执行以实现实施例1至实施例4任一所述的空间优化方法所执行的操作。例如,计算机可读存储介质可以是只读内存(rom)、随机存取存储器(ram)、只读光盘(cd

rom)、磁带、软盘和光数据存储设备等。它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
143.应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1