一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

安装包的体积优化方法、装置、移动终端及存储介质与流程

2022-12-20 20:08:38 来源:中国专利 TAG:


1.本发明涉及数据处理领域,尤其涉及一种安装包的体积优化方法、装置、移动终端及存储介质。


背景技术:

2.对于安装包的体积优化,目前主要有资源路径混淆方式,业界应用广泛的有andresguard,其优点是能将冗长的资源路径缩短,如,res/drawable/ic_test.png,变成r/d/a.png,从而达到缩短目的,减小包体积。但该方式形资源路径非最短路径,路径混淆不够彻底,安装包的体积优化程序低。


技术实现要素:

3.本发明的主要目的在于解决安装包的体积优化程序低的技术问题。
4.本发明第一方面提供了一种安装包的体积优化方法,所述安装包的体积优化方法包括:
5.获取资源文件的输入目录;
6.对所述输入目录进行资源精简,得到精简目录;
7.根据所述精简目录打包所述资源文件,得到第一安装包;
8.获取所述第一安装包中的arsc文件的资源名称以及资源路径;
9.根据所述资源路径确定单目录的混淆路径并根据所述资源名称确定新资源名称;
10.根据所述新资源名称以及所述混淆路径生成第二安装包。
11.可选的,在本发明第一方面的第一种实现方式中,所述根据所述新资源名称以及所述混淆路径生成第二安装包的步骤包括:
12.获取编译环境版本;
13.根据所述编译环境、所述新资源名称以及所述混淆路径生成所述第二安装包。
14.可选的,在本发明第一方面的第一种实现方式中,所述根据所述编译环境、所述新资源名称以及所述混淆路径生成所述第二安装包的步骤包括:
15.确定所述编译环境版本是否为预设编译环境版本;
16.在所述编译环境版本低于所述预设编译环境版本时,将所述新资源名称对应的文件迁移至所述混淆路径,得到待打包文件;
17.打包所述待打包文件并重新签名,得到所述第二安装包。
18.可选的,在本发明第一方面的第一种实现方式中,所述确定所述编译环境版本是否为预设编译环境版本的步骤之后,所述方法还包括:
19.在所述编译环境版本高于所述预设编译环境版本时,将所述新资源名称对应的文件划分为兼容文件以及非兼容文件;
20.重新生成所述非兼容文件,得到已兼容文件;
21.将所述已兼容文件以及所述兼容文件迁移至所述混淆路径,得到待打包文件;
22.将所述待打包文件打包以及签名,得到所述第二安装包。
23.可选的,在本发明第一方面的第一种实现方式中,所述对所述输入目录进行资源精简,得到精简目录的步骤包括:
24.根据预设的白名单在所述资源文件中确定第三方资源目录;
25.对所述第三方资源目录进行所述资源精简,得到所述精简目录。
26.可选的,在本发明第一方面的第一种实现方式中,所述获取资源文件的输入目录的步骤包括:
27.检测到打包指令时,获取资源打包工具的版本信息;
28.根据所述版本信息获取所述输入目录。
29.可选的,在本发明第一方面的第一种实现方式中,所述获取所述第一安装包中的arsc文件的资源名称以及资源路径的步骤包括:
30.解压并解析所述第一安装包中的所述arsc文件,得到所述资源名称以及所述资源路径。
31.本发明第二方面提供了一种安装包的体积优化装置,包括:
32.检测模块,用于获取资源文件的输入目录;
33.精简模块,用于对所述输入目录进行资源精简,得到精简目录;
34.打包模块,用于根据所述精简目录打包所述资源文件,得到第一安装包;
35.获取模块,用于获取所述第一安装包中的arsc文件的资源名称以及资源路径;
36.优化模块,用于根据所述资源路径确定单目录的混淆路径并根据所述资源名称确定新资源名称;
37.生成模块,用于根据所述新资源名称以及所述混淆路径生成第二安装包。
38.本发明第三方面提供了一种移动终端,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述移动终端执行上述的安装包的体积优化方法。
39.本发明的第四方面提供了一种可读存储介质,所述可读存储介质中存储有指令,当其在设备上运行时,使得设备执行上述的安装包的体积优化方法。
40.在本实施例中,由于资源文件中的资源路径数量较多,移动终端可将资源文件的输入目录进行资源精简,并基于得到的精简目录打包第一安装包,在得到第一安装包时,经过路径混淆可将第一安装包中的资源路径混淆成单目录,从而使得整体的资源路径所占用的体积变小,实现了第一安装包的进一步体积优化,形成了第二安装包,将资源文件转换成第二安装包,提高了安装包的体积优化程度。
附图说明
41.图1为本发明实施例中安装包的体积优化方法的一个实施例示意图;
42.图2为本发明实施例中安装包的体积优化方法的另一个实施例示意图;
43.图3为本发明实施例中安装包的体积优化装置的一个实施例示意图;
44.图4为本发明实施例中移动终端的一个实施例示意图。
具体实施方式
45.本发明实施例提供了一种安装包的体积优化方法、装置、移动终端及存储介质。
46.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
47.为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中安装包的体积优化方法的一个实施例包括:
48.101、获取资源文件的输入目录;
49.具体的,输入目录为资源文件的目录,资源文件可以理解为含有资源的目录,比如含有图片资源等。
50.可选的,检测到打包指令时,获取资源打包工具的版本信息;根据所述版本信息获取所述输入目录。具体的,资源打包工具包括但不限于aapt1或者aapt2,判定资源打包工具是否为aapt1,对于aapt1,在mergeresrouces任务之后,执行dolast操作,获取其输入目录即可得到资源文件;当为aapt2时,输出文件为flat,无法按之前方式获取源文件。为避免污染源目录,转为在mergeresources执行dofirst操作,然后再hook其输入目录。从而获得原始资源,并修改其输入目录,保证处理后的资源生效。
51.在本实施例中,考虑到资源打包工具的不同,分别设置了对应的优化方式,对于部分可能污染源目录的资源打包工具,可针对性的预防源目录被污染。
52.102、对所述输入目录进行资源精简,得到精简目录;
53.具体的,资源精简包括无用资源的检索,将无用资源剔除。在本实施例中,通过对输入目录进行资源精简,将无用或者符合预算规则的目录删除,可得到上述精简目录。
54.可选的,根据预设的白名单在所述资源文件中确定第三方资源目录;对所述第三方资源目录进行所述资源精简,得到所述精简目录。
55.在本实施例中,根据预设的白名单可使得部分标记的输入目录或者符合预设规则的输入目录不受资源精简的影响,对于整体实施例,提高了安装包体积优化的灵活性。
56.103、根据所述精简目录打包所述资源文件,得到第一安装包;
57.具体的,根据精简目录在资源文件中寻找并打包目标文件,得到上述第一安装包,其中,第一安装包的类型为安卓手机应用软件的安装包,安卓手机应用软件定位于开放性应用平台,在面向联想用户的同时,也面向广大的安卓用户,全面适配所有安卓手机和平板电脑机型。在安卓手机应用软件中,囊括了海量应用。android软件开发者可将应用上传到安卓手机应用软件供用户下载。
58.104、获取所述第一安装包中的arsc文件的资源名称以及资源路径;
59.具体的,arsc文件即第一安装包中的arsc格式的文件。
60.可选的,解压并解析所述第一安装包中的所述arsc文件,得到所述资源名称以及所述资源路径。具体的,对输出的第一安装包中的arsc文件进行解压以及解析,获取原始键
值:资源名称,以及对应的值:资源路径。对于键值:资源名称,筛选不在用户输入的白名单的值,直接修改为固定单一值
“‑”
,优化字符串池。
61.105、根据所述资源路径确定单目录的混淆路径并根据所述资源名称确定新资源名称;
62.具体的,对资源路径字符串进行混淆,只保留一个目录,例如:将res/drawable/ic_test.png转为r/a.png,得到单目录的混淆路径。
63.106、根据所述新资源名称以及所述混淆路径生成第二安装包。
64.具体的,按新资源名称的字符串找到文件并迁移到混淆后的路径。
65.可选的,获取编译环境版本;根据所述编译环境、所述新资源名称以及所述混淆路径生成所述第二安装包。
66.可选的,确定所述编译环境版本是否为预设编译环境版本;在所述编译环境版本低于所述预设编译环境版本时,将所述新资源名称对应的文件迁移至所述混淆路径,得到待打包文件;打包所述待打包文件并重新签名,得到所述第二安装包。具体的,判断编译环境版本是否为agp4.2.2以及gradle7.0以上;当为低版本时,直接按资源路径字符串找到文件并迁移到混淆后的路径。
67.可选的,在所述编译环境版本高于所述预设编译环境版本时,将所述新资源名称对应的文件划分为兼容文件以及非兼容文件;重新生成所述非兼容文件,得到已兼容文件;将所述已兼容文件以及所述兼容文件迁移至所述混淆路径,得到待打包文件;将所述待打包文件打包以及签名,得到所述第二安装包。具体的,当为高版本时,在按资源路径字符串找到文件后,处理大小写兼容问题再迁移,以防止文件丢失;按上面生成的新资源名称和混淆路径规则,生成新arsc文件,并和迁移后的资源一并重新打包签名生成第二安装包,即体积优化后的安装包。
68.本发明实施例中,获取原始资源;对所述原始资源进行资源精简,得到第一安装包;获取所述第一安装包中的arsc文件的资源名称以及资源路径;根据所述资源路径确定单目录的混淆路径并根据所述资源名称确定新资源名称;根据所述新资源名称以及所述混淆路径生成第二安装包。由于资源文件中的资源路径数量较多,移动终端可将资源文件的输入目录进行资源精简,并基于得到的精简目录打包第一安装包,在得到第一安装包时,经过路径混淆可将第一安装包中的资源路径混淆成单目录,从而使得整体的资源路径所占用的体积变小,实现了第一安装包的进一步体积优化,形成了第二安装包,将资源文件转换成第二安装包,提高了安装包的体积优化程度。
69.请参阅图2,本发明实施例中安装包的体积优化方法的另一个实施例包括:
70.201、获取编译环境版本;
71.具体的,编译环境版本包括但不限于agp4.2.2以及gradle7.0,判断编译环境版本是否为agp4.2.2以及gradle7.0以上。
72.agp是android-gradle-plugin的缩写,在项目中的配置就是在根目录下的build.gradle文件中的dependencies中配置的classpath"com.android.tools.build:gradle:xxx",在根目录build.gradle的dependencies中配置好agp后就能在任意module的build.gradle文件中apply android提供的各种plugin,常见的就有com.android.application和com.android.library,一般来说build.gradle中apply了
com.android.application的module,使用assemblexxx执行构建命令打出来的产物就是一个apk,而apply了com.android.library的module的产物则是一个aar,当然,还可以直接apply java,这样的module表示是个纯java的模块,打出的产物是个jar。
73.gradle是一个基于jvm的构建工具,是一款通用灵活的构建工具,支持maven,ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于groovy,build脚本使用groovy编写。
74.202、根据所述编译环境、所述新资源名称以及所述混淆路径生成所述第二安装包;
75.具体的,当为低版本时,直接按资源路径字符串找到文件并迁移到混淆后的路径;当为高版本时,在按资源路径字符串找到文件后,需要额外处理大小写兼容问题再迁移,防止文件丢失;按上面生成的新资源名称和混淆路径规则,生成新arsc文件,并和迁移后的资源一并重新打包签名生成第二安装包。
76.可选的,确定所述编译环境版本是否为预设编译环境版本;在所述编译环境版本低于所述预设编译环境版本时,将所述新资源名称对应的文件迁移至所述混淆路径,得到待打包文件;打包所述待打包文件并重新签名,得到所述第二安装包。
77.在本实施例中,当判断编译环境版本是低版本时,可生成契合低版本编译环境的第二安装包,在保证第二安装包契合编译环境的情况下,可使得应用场景更广泛。
78.可选的,在所述编译环境版本高于所述预设编译环境版本时,将所述新资源名称对应的文件划分为兼容文件以及非兼容文件;重新生成所述非兼容文件,得到已兼容文件;将所述已兼容文件以及所述兼容文件迁移至所述混淆路径,得到待打包文件;将所述待打包文件打包以及签名,得到所述第二安装包。
79.在本实施例中,当判断编译环境版本是低版本时,也可生成契合高版本编译环境的第二安装包,在保证第二安装包契合编译环境的情况下,进一步使得应用场景更广泛。
80.本发明实施例中,通过编译环境版本生成的第二安装包可以兼容adroid gradle plugin4.2.2以上版本、gradle7.0以上版本等应用极为广泛的编译环境版本,可投入实际使用。
81.上面对本发明实施例中安装包的体积优化方法进行了描述,下面对本发明实施例中安装包的体积优化装置进行描述,请参阅图3,本发明实施例中安装包的体积优化装置一个实施例包括:
82.检测模块301,用于获取资源文件的输入目录;
83.精简模块302,用于对所述输入目录进行资源精简,得到精简目录;
84.打包模块303,用于根据所述精简目录打包所述资源文件,得到第一安装包;
85.获取模块304,用于获取所述第一安装包中的arsc文件的资源名称以及资源路径;
86.优化模块305,用于根据所述资源路径确定单目录的混淆路径并根据所述资源名称确定新资源名称;
87.生成模块306,用于根据所述新资源名称以及所述混淆路径生成第二安装包。
88.本发明实施例中,由于资源文件中的资源路径数量较多,移动终端可将待优化的资源文件进行资源精简以及将资源路径进行混淆,其中,通过资源精简可将资源文件的体积降低,形成第一安装包,再经过路径混淆可将第一安装包中的资源路径混淆成单目录,从
而使得整体的资源路径所占用的体积变小,实现了第一安装包的进一步体积优化,形成了第二安装包,将资源文件转换成第二安装包,提高了安装包的体积优化程度。
89.可选的,生成模块306还可以具体用于:
90.获取编译环境版本;
91.根据所述编译环境、所述新资源名称以及所述混淆路径生成所述第二安装包。
92.在本实施例中,根据编译环境版本生成的第二安装包可兼容adroid gradle plugin4.2.2以上版本、gradle7.0以上版本等应用极为广泛的编译环境版本。
93.可选的,生成模块306还可以具体用于:
94.确定所述编译环境版本是否为预设编译环境版本;
95.在所述编译环境版本低于所述预设编译环境版本时,将所述新资源名称对应的文件迁移至所述混淆路径,得到待打包文件;
96.打包所述待打包文件并重新签名,得到所述第二安装包。
97.在本实施例中,当判断编译环境版本是低版本时,可生成契合低版本编译环境的第二安装包,提高了使用场景的广泛性。
98.可选的,生成模块304还可以具体用于:
99.在所述编译环境版本高于所述预设编译环境版本时,将所述新资源名称对应的文件划分为兼容文件以及非兼容文件;
100.重新生成所述非兼容文件,得到已兼容文件;
101.将所述已兼容文件以及所述兼容文件迁移至所述混淆路径,得到待打包文件;
102.将所述待打包文件打包以及签名,得到所述第二安装包。
103.在本实施例中,当判断编译环境版本是高版本时,也可生成契合高版本编译环境的第二安装包,也提高了使用场景的广泛性。
104.可选的,精简模块302还可以具体用于:
105.根据预设的白名单在所述资源文件中确定第三方资源目录;
106.对所述第三方资源目录进行所述资源精简,得到所述精简目录。
107.在本实施例中,根据预设的白名单可使得部分标记的资源不受资源精简的影响,提高了安装包体积优化的灵活性。
108.可选的,检测模块301还可以具体用于:
109.检测到打包指令时,获取资源打包工具的版本信息;
110.根据所述版本信息获取所述输入目录。
111.在本实施例中,考虑到资源打包工具的不同,分别设置了对应的优化方式,对于部分可能污染源目录的资源打包工具,可针对性的进行预防。
112.可选的,获取模块304还可以具体用于:
113.解压并解析所述第一安装包中的所述arsc文件,得到所述资源名称以及所述资源路径。
114.在本实施例中,解压并解析所述第一安装包中的arsc文件,解析结果可用于二次优化以生成第二安装包,以提高安装包的体积优化程度。
115.本发明实施例中,有益效果。
116.上面图3从模块化功能实体的角度对本发明实施例中的安装包的体积优化装置进
行详细描述,下面从硬件处理的角度对本发明实施例中移动终端进行详细描述。
117.图4是本发明实施例提供的一种移动终端的结构示意图,该移动终端500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对移动终端500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在移动终端500上执行存储介质530中的一系列指令操作。
118.基于移动终端500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如windows serve,mac os x,unix,linux,freebsd等等。本领域技术人员可以理解,图4示出的移动终端结构并不构成对基于移动终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
119.本发明还提供一种可读存储介质,该可读存储介质可以为非易失性可读存储介质,该可读存储介质也可以为易失性可读存储介质,所述可读存储介质中存储有指令,当所述指令在设备上运行时,使得设备执行所述安装包的体积优化方法的步骤。
120.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
121.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台设备执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
122.以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献