[发明专利]一种编译方法及装置有效
申请号: | 202210038682.X | 申请日: | 2022-01-13 |
公开(公告)号: | CN114371852B | 公开(公告)日: | 2023-10-24 |
发明(设计)人: | 王龙海 | 申请(专利权)人: | 抖音视界有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京中知法苑知识产权代理有限公司 11226 | 代理人: | 李明 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 编译 方法 装置 | ||
本公开提供了一种编译方法及装置,首先获取目标源文件,并生成所述目标源文件对应的待编译文件目录;然后,响应于所述第一源代码的编译过程启动,将所述资源索引文件的文件标识从所述待编译文件目录中移除,并基于移除所述资源索引文件的文件标识后的待编译文件目录,对所述第一源代码进行编译;最后,响应于所述第二源代码的编译过程启动,将所述资源索引文件的文件标识添加至所述待编译文件目录中,并基于添加所述资源索引文件的文件标识后的待编译文件目录,对所述第二源代码进行编译。
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种编译方法及装置。
背景技术
科特林(Kotlin)是一种用于多平台应用的静态编程语言,可以编译成Java字节码、JavaScript或二进制代码,便于在没有Java虚拟机的设备上运行,由于Kotlin的各种优点,开发人员使用Kotlin也越来越频繁。通常,Kotlin代码的编译需要花费较长的时间,在为了降低耗时引入一些开发工具或插件之后,发现了许多由于内存不足导致编译失败的情况。内存不足(Out Of Memory,OOM)通常是由于虚拟机本身可用的内存不足,或者应用占用的内存没有被释放导致的内存泄漏或者内存溢出引起的。目前,难以在使用插件保证编译速度的同时避免OOM问题,Kotlin编译的效率较低。
发明内容
本公开实施例至少提供一种编译方法及装置。
第一方面,本公开实施例提供了一种编译方法,包括:
获取目标源文件,并生成所述目标源文件对应的待编译文件目录;所述目标源文件中包含基于第一编程语言编写的第一源代码、基于第二编程语言编写的第二源代码、打包后的资源文件和资源索引文件;所述待编译文件目录中包含所述第一源代码的文件标识、所述第二源代码的文件标识、所述打包后的资源文件的文件标识以及所述资源索引文件的文件标识;
响应于所述第一源代码的编译过程启动,将所述资源索引文件的文件标识从所述待编译文件目录中移除,并基于移除所述资源索引文件的文件标识后的待编译文件目录,对所述第一源代码进行编译;
响应于所述第二源代码的编译过程启动,将所述资源索引文件的文件标识添加至所述待编译文件目录中,并基于添加所述资源索引文件的文件标识后的待编译文件目录,对所述第二源代码进行编译。
一种可选的实施方式中,所述方法还包括:
将对所述第一源代码进行编译得到的第一编译产物及对所述第二源代码进行编译得到的第二编译产物融合,得到第三编译产物;
对所述第三编译产物进行格式转换,得到所述目标源文件对应的可执行文件。
一种可选的实施方式中,所述基于移除所述资源索引文件的文件标识后的待编译文件目录,对所述第一源代码进行编译,包括:
基于移除所述资源索引文件的文件标识后的待编译文件目录,对所述第一源代码的注释进行处理,得到所述第一源代码的注释对应的中间代码;
基于移除所述资源索引文件的文件标识后的待编译文件目录,对所述中间代码及所述第一源代码进行编译,得到第一编译产物。
一种可选的实施方式中,所述获取目标源文件,包括:
获取待编译的初始源文件;所述初始源文件包括初始资源文件、所述第一源代码和所述第二源代码;
将所述初始资源文件打包,得到所述打包后的资源文件以及所述打包后的资源文件对应的所述资源索引文件;
将所述资源索引文件、所述打包后的资源文件、所述第一源代码及所述第二源代码作为所述目标源文件所述目标源文件。
一种可选的实施方式中,所述资源索引文件为R.Java文件;所述待编译文件目录为SourceSet目录。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于抖音视界有限公司,未经抖音视界有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210038682.X/2.html,转载请声明来源钻瓜专利网。