编译方法、装置、电子设备及可读存储介质制造方法及图纸

技术编号:24089520 阅读:37 留言:0更新日期:2020-05-09 07:27
本申请公开了一种编译方法、装置、电子设备及可读存储介质,涉及计算机领域中的编译技术领域。具体实现方案为:根据非插件程序与至少一个插件程序的配置信息,在第一编译工程中对待编译的对象进行拆分和编译处理,得到非插件程序的资源编译结果、每个插件程序的资源编译结果、非插件程序的代码编译结果以及每个插件程序的代码编译结果,并分别输出非插件程序和插件程序的可执行文件。该方法使得具有插件化需求的应用程序的插件编译的复杂度低并且可以避免编译报错。

Compilation method, device, electronic equipment and readable storage medium

【技术实现步骤摘要】
编译方法、装置、电子设备及可读存储介质
本申请实施例涉及计算机技术,具体涉及编译技术,尤其涉及一种编译方法、装置、电子设备及可读存储介质。
技术介绍
应用程序在发布之前的研发过程中,可能需要进行多次的编译。在编译时,将应用程序的源代码以及相关的资源输入到编译工具中,由编译工具进行编译,并输出应用程序的应用程序包。以安卓操作系统为例,gradle是应用较为广泛的一种编译工具。对于需要运行在安卓操作系统中的应用程序,可使用gradle进行编译。现有技术中,gradle编译应用程序时,将待编译的应用程序的代码和资源作为一个主程序,统一进行编译,进而得到一个统一的编译结果。但是,对于具有插件化需求的应用程序,使用现有的编译方式可能出现插件拆分复杂度高、难以得到预期的插件编译结果等问题。
技术实现思路
本申请实施例提供一种编译方法、装置、电子设备及可读存储介质,用于解决现有技术中插件拆分复杂度高、难以得到预期的插件编译结果的问题。第一方面,本申请实施例提供一种编译方法,包括:在第一编译工程中获取待编译的对象,所述待编译的对象包括待编译的应用程序的代码和资源,所述代码和资源分别归属于所述应用程序的非插件程序以及至少一个插件程序;根据所述非插件程序与所述至少一个插件程序的配置信息,在第一编译工程中对所述待编译的对象进行处理,得到所述非插件程序的资源编译结果、每个所述插件程序的资源编译结果、所述非插件程序的代码编译结果以及每个所述插件程序的代码编译结果;分别输出所述非插件程序的可执行文件和所述插件程序的可执行文件。作为一种可能的实现方式,所述分别输出所述非插件程序的可执行文件和所述插件程序的可执行文件,包括:根据所述非插件程序的资源编译结果、所述非插件程序的代码编译结果,通过所述第一编译工程输出所述非插件程序的可执行文件;根据所述插件程序的资源编译结果和所述插件程序的代码编译结果,通过第二编译工程输出所述插件程序的可执行文件。作为一种可能的实现方式,所述根据所述非插件程序与所述至少一个插件程序的配置信息,在第一编译工程中对所述待编译的对象进行处理,得到所述非插件程序的资源编译结果、每个所述插件程序的资源编译结果、所述非插件程序的代码编译结果以及每个所述插件程序的代码编译结果,包括:根据所述非插件程序与所述至少一个插件程序的配置信息,对所述待编译的对象进行资源拆分,得到所述非插件程序的资源和每个所述插件程序的资源;对所述非插件程序的资源和每个所述插件程序的资源进行编译,得到所述非插件程序的资源编译结果和每个所述插件程序的资源编译结果;根据所述非插件程序与所述至少一个插件程序的配置信息,对编译后的代码编译结果进行拆分,得到所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果。作为一种可能的实现方式,所述对所述非插件程序的资源和每个所述插件程序的资源进行编译,得到所述非插件程序的资源编译结果和每个所述插件程序的资源编译结果,包括:对所述非插件程序的资源和每个所述插件程序的资源进行编译以及分配标识,得到所述非插件程序的资源编译结果和每个所述插件程序的资源编译结果,所述非插件程序的资源编译结果的标识以及每个所述插件程序的资源编译结果的标识两两不同。作为一种可能的实现方式,所述对编译后的代码编译结果进行拆分,得到所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果之后,还包括:对所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果同时进行混淆处理,得到混淆处理后的所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果。作为一种可能的实现方式,所述根据所述插件程序的资源编译结果和所述插件程序的代码编译结果,通过第二编译工程输出所述插件程序的可执行文件,包括:将所述插件程序的资源编译结果和所述插件程序的代码编译结果输入所述第二编译工程中,以通过所述第二编译工程对所述插件程序的资源编译结果进行替换处理,并根据替换处理后的所述插件程序的资源编译结果以及所述插件程序的代码编译结果,输出插件程序的可执行文件。作为一种可能的实现方式,所述根据所述非插件程序与所述至少一个插件程序的配置信息,对编译后的代码编译结果进行拆分,得到所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果,包括:根据目标配置文件,对编译后的代码编译结果进行拆分,得到所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果;其中,所述目标配置文件用于标识所述配置信息。作为一种可能的实现方式,所述根据所述非插件程序与所述至少一个插件程序的配置信息,对所述待编译的对象进行资源拆分,得到所述非插件程序的资源和每个所述插件程序的资源,包括:根据目标配置文件,对所述待编译的对象进行资源拆分,得到所述非插件程序的资源和每个所述插件程序的资源;其中,所述目标配置文件用于标识所述配置信息。第二方面,本申请实施例提供一种编译装置,包括:获取模块,用于在第一编译工程中获取待编译的对象,所述待编译的对象包括待编译的应用程序的代码和资源,所述代码和资源分别归属于所述应用程序的非插件程序以及至少一个插件程序;处理模块,用于根据所述非插件程序与所述至少一个插件程序的配置信息,在第一编译工程中对所述待编译的对象进行处理,得到所述非插件程序的资源编译结果、每个所述插件程序的资源编译结果、所述非插件程序的代码编译结果以及每个所述插件程序的代码编译结果;输出模块,用于分别输出所述非插件程序的可执行文件和所述插件程序的可执行文件。作为一种可能的实现方式,所述输出模块具体用于:用于根据所述非插件程序的资源编译结果、所述非插件程序的代码编译结果,通过所述第一编译工程输出所述非插件程序的可执行文件;以及,根据所述插件程序的资源编译结果和所述插件程序的代码编译结果,通过第二编译工程输出所述插件程序的可执行文件。作为一种可能的实现方式,所述处理模块具体用于:根据所述非插件程序与所述至少一个插件程序的配置信息,对所述待编译的对象进行资源拆分,得到所述非插件程序的资源和每个所述插件程序的资源;以及,对所述非插件程序的资源和每个所述插件程序的资源进行编译,得到所述非插件程序的资源编译结果和每个所述插件程序的资源编译结果;以及,根据所述非插件程序与所述至少一个插件程序的配置信息,对编译后的代码编译结果进行拆分,得到所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果。作为一种可能的实现方式,所述处理模块具体用于:对所述非插件程序的资源和每个所述插件程序的资源进行编译以及分配标识,得到所述非插件程序的资源编译结果和每个所述插件程序的资源编译结果,所述非插件程序的资源编译结果的标识以及每个所述插件程序的资源编译结果的标识两两不同。作为一种可能的实现方式,所述处理模块还用于:对所述非插件程序本文档来自技高网...

【技术保护点】
1.一种编译方法,其特征在于,包括:/n在第一编译工程中获取待编译的对象,所述待编译的对象包括待编译的应用程序的代码和资源,所述代码和资源分别归属于所述应用程序的非插件程序以及至少一个插件程序;/n根据所述非插件程序与所述至少一个插件程序的配置信息,在第一编译工程中对所述待编译的对象进行处理,得到所述非插件程序的资源编译结果、每个所述插件程序的资源编译结果、所述非插件程序的代码编译结果以及每个所述插件程序的代码编译结果;/n分别输出所述非插件程序的可执行文件和所述插件程序的可执行文件。/n

【技术特征摘要】
1.一种编译方法,其特征在于,包括:
在第一编译工程中获取待编译的对象,所述待编译的对象包括待编译的应用程序的代码和资源,所述代码和资源分别归属于所述应用程序的非插件程序以及至少一个插件程序;
根据所述非插件程序与所述至少一个插件程序的配置信息,在第一编译工程中对所述待编译的对象进行处理,得到所述非插件程序的资源编译结果、每个所述插件程序的资源编译结果、所述非插件程序的代码编译结果以及每个所述插件程序的代码编译结果;
分别输出所述非插件程序的可执行文件和所述插件程序的可执行文件。


2.根据权利要求1所述的方法,其特征在于,所述分别输出所述非插件程序的可执行文件和所述插件程序的可执行文件,包括:
根据所述非插件程序的资源编译结果、所述非插件程序的代码编译结果,通过所述第一编译工程输出所述非插件程序的可执行文件;
根据所述插件程序的资源编译结果和所述插件程序的代码编译结果,通过第二编译工程输出所述插件程序的可执行文件。


3.根据权利要求1所述的方法,其特征在于,所述根据所述非插件程序与所述至少一个插件程序的配置信息,在第一编译工程中对所述待编译的对象进行处理,得到所述非插件程序的资源编译结果、每个所述插件程序的资源编译结果、所述非插件程序的代码编译结果以及每个所述插件程序的代码编译结果,包括:
根据所述配置信息,对所述待编译的对象进行资源拆分,得到所述非插件程序的资源和每个所述插件程序的资源;
对所述非插件程序的资源和每个所述插件程序的资源进行编译,得到所述非插件程序的资源编译结果和每个所述插件程序的资源编译结果;
根据所述配置信息,对编译后的代码编译结果进行拆分,得到所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果。


4.根据权利要求3所述的方法,其特征在于,所述对所述非插件程序的资源和每个所述插件程序的资源进行编译,得到所述非插件程序的资源编译结果和每个所述插件程序的资源编译结果,包括:
对所述非插件程序的资源和每个所述插件程序的资源进行编译以及分配标识,得到所述非插件程序的资源编译结果和每个所述插件程序的资源编译结果,所述非插件程序的资源编译结果的标识以及每个所述插件程序的资源编译结果的标识两两不同。


5.根据权利要求3所述的方法,其特征在于,所述对编译后的代码编译结果进行拆分,得到所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果之后,还包括:
对所述非插件程序的代码编译结果和每个所述插件程序的代码编译结果同时进行混淆处理,得到混淆处理后的所述非插件程序的代码编译结果和每...

【专利技术属性】
技术研发人员:高飞张岱帅
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京;11

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

1