一种布局文件的处理方法、装置、设备及存储介质制造方法及图纸

技术编号:36647937 阅读:19 留言:0更新日期:2023-02-18 13:08
本公开提供了一种布局文件的处理方法、装置、设备及存储介质,所述方法包括:首先,确定目标布局文件中的字符串常量池数组和属性值resMap数组,然后,将resMap数组中的字符串确定为目标字符串,进而,将字符串常量池数组中与目标字符串名称相同的字符串替换为空字符串。可见,本公开实施例通过将目标布局文件中的字符串常量池数组中的部分字符串替换为空字符串,缩减了该目标布局文件所属的APK的包体积大小。体积大小。体积大小。

【技术实现步骤摘要】
一种布局文件的处理方法、装置、设备及存储介质


[0001]本公开涉及数据处理领域,尤其涉及一种布局文件的处理方法、装置、设备及存储介质。

技术介绍

[0002]随着业务迭代开发效率的提升,安卓应用程序包(英文:Android application package;缩写:APK)体积爆炸式增长的现象越来越严重,为了缩减APK体积,越来越多的包体积优化方案应运而生。
[0003]由于APK中图片文件大小占比重较大,因此,目前的包体积优化方案一般是对图片文件的优化,另外,由于字符串名称混淆与java代码混淆一脉相承,因此,目前的包体积优化方案中也会对文件的字符串名称进行优化。
[0004]但是,我们发现即使从图片文件和文件字符串名称两个方向对APK进行了包体积的优化,优化后的APK的体积仍然较大。为此,如何进一步实现对APK的包体积的优化,以缩减APK的包体积大小,是目前亟需解决的技术问题。

技术实现思路

[0005]为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种布局文件的处理方法,通过对APK中布局文件的优化,进一步的缩减了APK的包体积大小。
[0006]第一方面,本公开提供了一种布局文件的处理方法,所述方法包括:
[0007]确定目标布局文件中的字符串常量池数组和属性值resMap数组;
[0008]将所述resMap数组中的字符串确定为目标字符串;
[0009]将所述字符串常量池数组中与所述目标字符串名称相同的字符串替换为空字符串。
[0010]一种可选的实施方式中,所述方法还包括:
[0011]将所述字符串常量池数组中的命名空间字符串替换为空字符串。
[0012]一种可选的实施方式中,所述将所述字符串常量池数组中的命名空间字符串替换为空字符串之前,还包括:
[0013]确定所述目标布局文件中的命名空间节点;
[0014]获取所述命名空间节点中的命名空间名称和命名空间值;
[0015]基于所述命名空间名称和所述命名空间值,确定所述字符串常量池数组中的命名空间字符串。
[0016]一种可选的实施方式中,所述方法还包括:
[0017]确定所述目标布局文件中与所述字符串常量池数组对应的偏移数组;其中,所述偏移数组中的偏移值用于指示所述字符串常量池数组中与所述偏移值对应的字符串的存储位置;
[0018]在所述偏移数组中,确定与所述字符串常量池数组中的空字符串分别对应的偏移
值,并从所述空字符串分别对应的偏移值中确定目标偏移值;
[0019]将所述偏移数组中与所述空字符串分别对应的偏移值,修改为所述目标偏移值。
[0020]一种可选的实施方式中,所述目标偏移值包括所述空字符串中的第一个空字符串对应的偏移值。
[0021]一种可选的实施方式中,所述目标布局文件为待优化安卓应用程序包APK中的任一布局文件,所述布局文件为用于描述所述待优化APK中的界面显示内容的二进制文件;
[0022]所述将所述字符串常量池数组中与所述目标字符串名称相同的字符串替换为空字符串之后,还包括:
[0023]在获取到所述待优化APK中的每个布局文件分别对应的替换后布局文件之后,基于各个替换后布局文件,生成所述待优化APK对应的优化后APK。
[0024]第二方面,本公开提供了一种布局文件的处理装置,所述装置包括:
[0025]第一确定模块,用于确定目标布局文件中的字符串常量池数组和属性值resMap数组;
[0026]第二确定模块,用于将所述resMap数组中的字符串确定为目标字符串;
[0027]第一替换模块,用于将所述字符串常量池数组中与所述目标字符串名称相同的字符串替换为空字符串。
[0028]第三方面,本公开提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现上述的方法。
[0029]第四方面,本公开提供了一种设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的方法。
[0030]第五方面,本公开提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法。
[0031]本公开实施例提供的技术方案与现有技术相比具有如下优点:
[0032]本公开实施例提供了一种布局文件的处理方法,首先,确定目标布局文件中的字符串常量池数组和属性值resMap数组,然后,将resMap数组中的字符串确定为目标字符串,进而,将字符串常量池数组中与目标字符串名称相同的字符串替换为空字符串。可见,本公开实施例通过将目标布局文件中的字符串常量池数组中的部分字符串替换为空字符串,缩减了该目标布局文件所属的APK的包体积大小。
附图说明
[0033]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0034]为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0035]图1为本公开实施例提供的一种布局文件的内容示意图;
[0036]图2为本公开实施例提供的一种布局文件的处理方法流程图;
[0037]图3为本公开实施例提供的另一种布局文件的处理方法流程图;
[0038]图4为本公开实施例提供的又一种布局文件的处理方法流程图;
[0039]图5为本公开实施例提供的另一种布局文件的内容示意图;
[0040]图6为本公开实施例提供的一种布局文件的处理装置的结构示意图;
[0041]图7为本公开实施例提供的一种布局文件的处理设备的结构示意图。
具体实施方式
[0042]为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
[0043]在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
[0044]目前,对于安卓应用程序包(英文:Android application package;缩写:APK)的包体积优化的方向主要有以下两个:其一,由于APK中图片文件大小占比重较大,因此着重于对APK中图片文件大小的优化;其二,由于字符串名称混淆与java代码混淆一脉相承,因此,比较容易想到通过对字符串名称混淆,缩减APK包体积的大小。
[0045]但是,专利技术人发现,即使从上述两个方向对AP本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种布局文件的处理方法,其特征在于,所述方法包括:确定目标布局文件中的字符串常量池数组和属性值resMap数组;将所述resMap数组中的字符串确定为目标字符串;将所述字符串常量池数组中与所述目标字符串名称相同的字符串替换为空字符串。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述字符串常量池数组中的命名空间字符串替换为空字符串。3.根据权利要求2所述的方法,其特征在于,所述将所述字符串常量池数组中的命名空间字符串替换为空字符串之前,还包括:确定所述目标布局文件中的命名空间节点;获取所述命名空间节点中的命名空间名称和命名空间值;基于所述命名空间名称和所述命名空间值,确定所述字符串常量池数组中的命名空间字符串。4.根据权利要求1

3中任一项所述的方法,其特征在于,所述方法还包括:确定所述目标布局文件中与所述字符串常量池数组对应的偏移数组;其中,所述偏移数组中的偏移值用于指示所述字符串常量池数组中与所述偏移值对应的字符串的存储位置;在所述偏移数组中,确定与所述字符串常量池数组中的空字符串分别对应的偏移值,并从所述空字符串分别对应的偏移值中确定目标偏移值;将所述偏移数组中与所述空字符串分别对应的偏移值,修改为所述目标偏移值。5.根据权利要求4所述的方法,其特征在于,所述目标偏移值包括所述空字符串中的第一个空字符串对应的偏移值。6.根据权利要求1所述的方法,其特征在于,所述目...

【专利技术属性】
技术研发人员:张祖桥甘晓霖
申请(专利权)人:北京字跳网络技术有限公司
类型:发明
国别省市:

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

1