应用程序安装包的构建方法、装置、计算机设备和介质制造方法及图纸

技术编号:28836412 阅读:15 留言:0更新日期:2021-06-11 23:33
本公开提供了一种应用程序安装包的构建方法、装置、计算机设备和介质,其中,该方法包括:生成包含预设空间大小的占桩代码的预留文件,基于所述预留文件生成对应的主dex文件;对所述主dex文件进行反编译得到对应的第一反编译文件;用预先生成的不含任何方法的预设文件替换所述第一反编译文件中所述预留文件对应的反编译子文件,得到第二反编译文件;基于所述第二反编译文件生成应用程序安装包APK。本公开能安全有效的在利用D8工具构建APK时,在主dex文件中预留足够的空间。

【技术实现步骤摘要】
应用程序安装包的构建方法、装置、计算机设备和介质
本公开涉及计算机
,具体而言,涉及一种应用程序安装包的构建方法、装置、计算机设备和介质。
技术介绍
当前,主要采用D8工具构建应用程序包(Androidapplicationpackage,APK),但是采用D8工具构建APK时,在方法数较多的情况下,会导致构成APK的主dex(文件扩展名)文件的方法数会接近上限,没有多余的空间去存储外部的字节码。
技术实现思路
有鉴于此,本公开实施例至少提供一种应用程序安装包的构建方法、装置、计算机设备和介质,通过编译工具在构建APK文件的过程中,在主dex文件中预留一部分空间。第一方面,本公开实施例提供了一种应用程序安装包的构建方法,包括:生成包含预设空间大小的占桩代码的预留文件,基于所述预留文件生成对应的主dex文件;对所述主dex文件进行反编译得到对应的第一反编译文件;用预先生成的不包含任何方法的预设文件替换所述第一反编译文件中所述预留文件对应的反编译子文件,得到第二反编译文件;基于所述第二反编译文件生成应用程序安装包APK。在一种可能的实施方式中,所述生成包含预设空间大小的占桩代码的预留文件,包括:获取所述预设空间大小;基于所述预设空间大小,通过脚本生成包含所述预设空间大小的所述占桩代码的Java类文件;以及基于所述Java类文件生成包含所述预设空间大小的所述占桩代码的class类文件;确定所述class类文件为所述预留文件。在一种可能的实施方式中,所述基于所述第二反编译文件生成应用程序安装包APK,包括:调用编译工具编译所述第二反编译文件生成目标主dex文件;基于所述目标主dex文件生成所述APK。在一种可能的实施方式中,按照以下流程生成所述预设文件:通过脚本生成不包含任何方法的Java类文件,所述不包含任何方法的Java类文件中不包含任何方法;以及基于所述不包含任何方法的Java类文件生成不包含任何方法的class类文件;基于所述反编译子文件的类型,将所述不包含任何方法的class类文件转换为与所述反编译子文件的类型相同的所述预设文件。在一种可能的实施方式中,所述基于所述预留文件生成对应的主dex文件,包括:基于所述预留文件调用构建工具生成对应的主dex文件,所述编译工具包括D8工具;所述对所述主dex文件进行反编译得到对应的第一反编译文件,包括:调用编译工具对所述主dex文件进行反编译得到对应的第一反编译文件,所述编译工具包括basksmali工具,所述反编译子文件的类型包括smali文件。在一种可能的实施方式中,所述占桩代码包括空方法。第二方面,本公开实施例还提供一种应用程序安装包的构建装置,包括:第一生成模块,用于生成包含预设空间大小的占桩代码的预留文件,基于所述预留文件生成对应的主dex文件;反编译模块,用于对所述主dex文件进行反编译得到对应的第一反编译文件;替换模块,用于用预先生成的不包含任何方法的预设文件替换所述第一反编译文件中所述预留文件对应的反编译子文件,得到第二反编译文件;第二生成模块,用于基于所述第二反编译文件生成应用程序安装包APK。在一种可能的实施方式中,在生成包含预设空间大小的占桩代码的预留文件时,所述第一生成模块,具体用于获取所述预设空间大小;基于所述预设空间大小,通过脚本生成包含所述预设空间大小的所述占桩代码的Java类文件;以及基于所述Java类文件生成包含所述预设空间大小的所述占桩代码的class类文件;确定所述class类文件为所述预留文件。在一种可能的实施方式中,在基于所述第二反编译文件生成应用程序安装包APK时,所述第二生成模块,具体用于调用编译工具编译所述第二反编译文件生成目标主dex文件;基于所述目标主dex文件生成所述APK。在一种可能的实施方式中,所述第一生成模块,还用于按照下述方法生成所述预设文件:通过脚本生成不包含任何方法的Java类文件,所述不包含任何方法的Java类文件中不包含任何方法;以及基于所述不包含任何方法的Java类文件生成不包含任何方法的class类文件;基于所述反编译子文件的类型,将所述不包含任何方法的class类文件转换为与所述反编译子文件的类型相同的所述预设文件。在一种可能的实施方式中,在基于所述预留文件生成对应的主dex文件时,所述第一生成模块,具体用于基于所述预留文件调用构建工具生成对应的主dex文件,所述编译工具包括D8工具;在对所述主dex文件进行反编译得到对应的第一反编译文件时,所述反编译模块,具体用于调用编译工具对所述主dex文件进行反编译得到对应的第一反编译文件,所述编译工具包括basksmali工具,所述反编译子文件的类型包括smali文件。在一种可能的实施方式中,所述占桩代码包括空方法。第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。关于上述应用程序安装包的构建装置、计算机设备、及计算机可读存储介质的效果描述参见上述应用程序安装包的构建方法的说明,这里不再赘述。本公开实施例提供的应用程序安装包的构建方法、装置计算机设备及介质,能在通过D8工具构建APK的过程中,在构成主dex文件的预留文件中生成包含预设空间大小的占桩代码,然后将主dex文件反编译得到第一反编译文件,利用不包含任何方法的预设文件替换第一反编译文件中预留文件对应的反编译子文件得到第二反编译文件,基于替换后的第二反编译文件重新编译成新的主dex文件后构建APK,这样就在构建APK的主dex文件中包含了一个预设空间大小的预留空间,实现利用D8工具构建APK文件时,在主dex文件中预留空间。为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1示出了本公开实施例所提供的一种应用程序安装包的构建方法的流程图;图2示出了本公开实施例所提供的一种生成包含预设空间大小的占桩代码的预留文件的流程图;图3示出了本公开实施例所提供的一种生成预设文件的方法的流程图;图4示出了本文档来自技高网...

【技术保护点】
1.一种应用程序安装包的构建方法,其特征在于,包括:/n生成包含预设空间大小的占桩代码的预留文件,基于所述预留文件生成对应的主dex文件;/n对所述主dex文件进行反编译得到对应的第一反编译文件;/n用预先生成的不包含任何方法的预设文件替换所述第一反编译文件中所述预留文件对应的反编译子文件,得到第二反编译文件;/n基于所述第二反编译文件生成应用程序安装包APK。/n

【技术特征摘要】
1.一种应用程序安装包的构建方法,其特征在于,包括:
生成包含预设空间大小的占桩代码的预留文件,基于所述预留文件生成对应的主dex文件;
对所述主dex文件进行反编译得到对应的第一反编译文件;
用预先生成的不包含任何方法的预设文件替换所述第一反编译文件中所述预留文件对应的反编译子文件,得到第二反编译文件;
基于所述第二反编译文件生成应用程序安装包APK。


2.基于权利要求1所述的构建方法,其特征在于,所述生成包含预设空间大小的占桩代码的预留文件,包括:
获取所述预设空间大小;
基于所述预设空间大小,通过脚本生成包含所述预设空间大小的所述占桩代码的Java类文件;以及
基于所述Java类文件生成包含所述预设空间大小的所述占桩代码的class类文件;
确定所述class类文件为所述预留文件。


3.基于权利要求1所述的构建方法,其特征在于,所述基于所述第二反编译文件生成应用程序安装包APK,包括:
调用编译工具编译所述第二反编译文件生成目标主dex文件;
基于所述目标主dex文件生成所述APK。


4.基于权利要求1或3所述的构建方法,其特征在于,按照以下流程生成所述预设文件:
通过脚本生成不包含任何方法的Java类文件;以及
基于所述不包含任何方法的Java类文件生成不包含任何方法的class类文件;
基于所述反编译子文件的类型,将所述不包含任何方法的class类文件转换为与所述反编译子文件的类型相同的所述预设文件。


5.根据权利要求3所述的构建方法,其特征在于,所述基于所述预留文件生成对应的主dex文件,包括:
基于所述预留文件调用构建工具生成对应的主dex文件,所述编译工具包括D8工具;
所述对所述主dex文件进行反编译得到对应的第一反编译文件,包括:
调用编译工具对所述主dex文件进行反编译得到对应的第一反编译文件,所述编译工具包括basksmali工具,所述反编译子文件的类型包括smali文件。


6.根据权利要求1所述的构建方法,其特征在于,所述占桩代码包括空方法。


7.一种应用程序安装包的构建装置,其特征在于,包括:
第一生成模块,用于生成包含预设空间大小的占桩代码的预留文件,基于所述预留文件生成对应的主dex文件;
反编译模块,用于对所述主dex文件进行反编译得到对应的第一反编译文件;
替换模块,用于用预先生成的不包含任何方法的预设文件替换...

【专利技术属性】
技术研发人员:答奇孙克静魏君成薛章斌
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:北京;11

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

1