一种空间优化方法、系统、智能设备及存储介质技术方案

技术编号:30229681 阅读:13 留言:0更新日期:2021-09-29 10:00
本发明专利技术提供了一种空间优化方法、系统、智能设备及存储介质,其方法包括步骤:在编译预置应用时,剔除每个预置应用中相同的类文件;将被剔除的所述类文件打包输出至预定目录中;从所述预定目录中拉取每个所述预置应用使用的所述类文件;判断每个所述预置应用使用的所述类文件是否相同;若相同,则合并对应的所述类文件。该方案能够优化系统空间,减小应用安装包的体积,从而提高用户的使用体验,避免影响设备的正常使用。响设备的正常使用。响设备的正常使用。

【技术实现步骤摘要】
一种空间优化方法、系统、智能设备及存储介质


[0001]本专利技术涉及应用安装
,尤指一种空间优化方法、系统、智能设备及存储介质。

技术介绍

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

SCDMA,TD

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

技术实现思路

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

40.9Mb的data分区可用空间,平均提升30Mb可用空间,用户终端剩余空间在60Mb以下的用户占比由37.95%降低至21.80%,总计降低16.15%,用户终端升级之后的优化版本剩余空间在60Mb以下的用户只有1.78%,大大提高了设备的使用体验。
[0014]进一步地,所述的在编译预置应用时,剔除每个预置应用中相同的类文件,具体包括步骤:
[0015]对所述预置应用的源码以及外部依赖库进行编译,获取class文件;
[0016]在打包的流水线最末尾增加一个自定义Transform,剔除所述class文件中所述外部依赖库中使用到的所述类文件;
[0017]生成所述外部依赖库的API接口的proguard文件;
[0018]对处理后的所述class文件进行混淆、Dex,以及打包处理。
[0019]具体的,在剔除每个预置应用中相同的类文件时,先对预置应用的源码以及外部依赖库进行编译,获取class文件,再在打包的流水线最末尾增加一个自定义Transform,以便剔除述class文件中外部依赖库中使用到的类文件;同时,生成外部依赖库的API接口的proguard文件(ProGuard是Java类文件收缩器、优化器、混淆器和预验证器),避免外部依赖库的接口被混淆,之后便能对处理后的class文件进行混淆、Dex,以及打包处理。
[0020]进一步地,所述的判断每个所述预置应用使用的所述类文件是否相同,具体包括步骤:
[0021]通过文件哈希值校验每个所述预置应用使用的所述类文件是否相同。
[0022]进一步地,所述的合并对应的所述类文件之后,还包括步骤:
[0023]通过D8工具将所述类文件的jvm字节码编译成支持在指定平台运行的dex字节码;
[0024]根据所述dex字节码的数量,生成一个或多个Jar文件,并打包所述Jar文件。
[0025]进一步地,所述的将被剔除的所述类文件打包输出至预定目录中之后,还包括步骤:
[0026]将编译预置应用时,没有被剔除的所述类文件的构造函数中插入PreventClassVerified.prevent()调用;
[0027]所述的合并对应的所述类文件,还包括:
[0028]合并PreventClassVerified类文件。
[0029]具体的,在编译预置应用时,可以将没有被剔除的所述类文件的构造函数中插入PreventClassVerified.prevent()调用,防止虚拟机给类文件打上预校验的标签,避免影响正常的校验过程,在合并对应的所述类文件,同时合并PreventClassVerified类文件。
[0030]另外,当预置应用启动运行时,除了加载应用自身apk的dex文件外,还需要把被剔除的依赖库dex文件添加到应用的Classloader中,以保证应用拥有完整的可执行文件,能正常运行所有功能。
[0031]另外,本专利技术还提供一种空间优化方法系统,包括:
[0032]剔除模块,用于在编译预置应用时,剔除每个预置应用中相同的类文件;
[0033]打包模块,与所述剔除模块连接,用于将被剔除的所述类文件打包输出至预定目录中;
[0034]拉取模块,与所述打包模块连接,用于从所述预定目录中拉取每个所述预置应用使用的所述类文件;
[0035]判断模块,与所述拉取模块连接,用于判断每个所述预置应用使用的所述类文件是否相同;
[0036]合并模块,与所述判断模块连接,用于在判断每个所述预置应用使用的所述类文件相同时,合并对应的所述类文件。
[0037]本方案通过在编译预置应用时,通过剔除模块剔除每个预置应用中相同的类文件,并将被剔除的类文件通过打包模块打包输出至预定目录中,再通过拉取模块从预定目
录中拉取每个预置应用使用的类文件,判断模块判断每个预置应用使用的类文件是否相同,若相同,则通过合并模块合并对应的类文件,从而使得应用安装包的体积减小,有利于优化系统空间,提高用户的使用体验,避免影响设备的正常使用。
[0038]进一步地,所述剔除模块包括:
[0039]编译和解包单元,用于对所述预置应用的源码以及外部依赖库进行编译,获取class文件;
[0040]剔除单元,用于在打包的流水线最末尾增加一个自定义Transform,剔除所述class文件中所述外部依赖库中使用到的所述类文件;
[0041]proguard文件生成单元,用于生成所述外部依赖库的API接口的proguard文件;
[0042]处理单元,用于对处理后的所述class文件进行混淆、Dex,以及打包处理。
[0043]具体的,在剔除外部依赖库中使用到的类文件时,先通过本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种空间优化方法,其特征在于,包括步骤:在编译预置应用时,剔除每个预置应用中相同的类文件;将被剔除的所述类文件打包输出至预定目录中;从所述预定目录中拉取每个所述预置应用使用的所述类文件;判断每个所述预置应用使用的所述类文件是否相同;若相同,则合并对应的所述类文件。2.根据权利要求1所述的一种空间优化方法,其特征在于,所述的在编译预置应用时,剔除每个预置应用中相同的类文件,具体包括步骤:对所述预置应用的源码以及外部依赖库进行编译,获取class文件;在打包的流水线最末尾增加一个自定义Transform,剔除所述class文件中所述外部依赖库中使用到的所述类文件;生成所述外部依赖库的API接口的proguard文件;对处理后的所述class文件进行混淆、Dex,以及打包处理。3.根据权利要求1所述的一种空间优化方法,其特征在于,所述的判断每个所述预置应用使用的所述类文件是否相同,具体包括步骤:通过文件哈希值校验每个所述预置应用使用的所述类文件是否相同。4.根据权利要求1所述的一种空间优化方法,其特征在于,所述的合并对应的所述类文件之后,还包括步骤:通过D8工具将所述类文件的jvm字节码编译成支持在指定平台运行的dex字节码;根据所述dex字节码的数量,生成一个或多个Jar文件,并打包所述Jar文件。5.根据权利要求1至4任一所述的一种空间优化方法,其特征在于,所述的将被剔除的所述类文件打包输出至预定目录中之后,还包括步骤:将编译预置应用时,没有被剔除的所述类文件的构造函数中插入PreventClassVerified.prevent()调用;所述的合并对应的所述类文件,还包括:合并PreventClassVerified类文件。6.一种空间优化方法系统,其特征在于,包括:剔除...

【专利技术属性】
技术研发人员:陈仁杰欧阳鹏
申请(专利权)人:东莞市小精灵教育软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1