CN110750266A - 程序编译方法、装置、计算机设备及存储介质 - Google Patents

程序编译方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN110750266A
CN110750266A CN201910893862.4A CN201910893862A CN110750266A CN 110750266 A CN110750266 A CN 110750266A CN 201910893862 A CN201910893862 A CN 201910893862A CN 110750266 A CN110750266 A CN 110750266A
Authority
CN
China
Prior art keywords
file
compiling
target
version number
development
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910893862.4A
Other languages
English (en)
Inventor
陈翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Puhui Enterprise Management Co Ltd
Original Assignee
Ping An Puhui Enterprise Management Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Puhui Enterprise Management Co Ltd filed Critical Ping An Puhui Enterprise Management Co Ltd
Priority to CN201910893862.4A priority Critical patent/CN110750266A/zh
Publication of CN110750266A publication Critical patent/CN110750266A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种程序编译方法、装置、计算机设备及存储介质,包括:获取目标编译文件中各个项目文件的开发工具包的开发版本号;根据预设的适配列表将所述各个项目文件的开发版本号与编译系统的系统版本号进行适配比对;当所述开发版本号与所述系统版本号适配时,对所述开发版本号对应的项目文件进行编译;否则,则定义所述开发版本号对应的项目文件为目标项目文件。编译系统在进行编译时,将无法进行编译的项目文件进行隔离,仅仅对能够进行编译的项目文件进行编译,避免由于少数文件无法进行编译导致这个编译系统无法进行正常编译,节约了编译的时间,提高了编译的效率。

Description

程序编译方法、装置、计算机设备及存储介质
技术领域
本发明实施例涉及编码领域,尤其是一种程序编译方法、装置、计算机设备及存储介质。
背景技术
编译语言是一种以编译器来实现的编程语言。它不像直译语言一样,由解释器将代码一句一句运行,而是以编译器,先将代码编译为机器码,再加以运行。
现有技术中应用程序是由多个功能模块组合而成的组合型程序,由于功能的多样性,组成现有技术中应用程序的程序的量级也极为庞大,为避免长篇代码造成的冗杂性,往往在开发过程中,以功能为限划分项目组,不同的项目组负责不同功能模块的研发,研发完成后,将不同的功能进行拼接和整合成为一个完整的应用程序。整合时对所有的功能模块进行统一的编译,编译完成后生成可以运行的应用程序。
本发明创造的发明人在研究中发现,现有技术中模块化的开发环境虽然各个项目组各自具有独立性,但是鉴于最终所有的功能模块均要集合在一起组成一个应用程序,因此,编译过程中,当其中一个功能模块出现编程接口出现更新后,会导致其他未及时更新编译环境的编译工作无法展开,编译效率低下。
发明内容
本发明实施例提供一种能够识别不同项目文件中不可编译的项目文件,并对可编译的项目文件进行单独编译的程序编译方法、装置、计算机设备及存储介质。
为解决上述技术问题,本发明创造的实施例采用的一个技术方案是:提供一种程序编译方法,包括:
获取目标编译文件中各个项目文件的开发工具包的开发版本号,其中,所述目标编译文件至少由两个项目文件组成;
根据预设的适配列表将所述各个项目文件的开发版本号与编译系统的系统版本号进行适配比对,其中,所述适配列表中记载所述系统版本号适配的开发工具包的版本号;
当所述开发版本号与所述系统版本号适配时,对所述开发版本号对应的项目文件进行编译;否则,则定义所述开发版本号对应的项目文件为目标项目文件,其中,所述目标项目文件为所述系统版本号对应的编译系统无法编译的项目文件。
可选地,所述编译系统包括执行文件和功能文件,所述当所述开发版本号与所述系统版本号适配时,对所述开发版本号对应的项目文件进行编译;否则,则定义所述开发版本号对应的项目文件为目标项目文件之后,包括:
查找与所述目标项目文件的系统版本号对应的目标开发工具包;
在所述开发工具包的执行文件在调用的状态下,将所述开发工具包的功能文件替换为所述目标开发工具包的功能文件。
可选地,所述在所述编译系统的执行文件在调用的状态下,将所述编译系统的功能文件替换为所述目标编译系统的功能文件之后,包括:
加载所述目标开发工具包的功能文件生成所述目标开发工具包的执行文件;
根据所述目标开发工具包的执行文件对所述目标项目文件进行编译。
可选地,所述根据所述目标开发工具包的执行文件对所述目标项目文件进行编译之前,包括:
记录各个已经进行编译的项目文件的编译文件的起始字符段和结束字符段;
根据所述目标项目文件在所述编译系统中的位置,确定所述目标项目文件编译后的代码段插入的编译位置,其中,所述编译位置位于一个已经进行编译的项目文件的起始字符段和/或另一个已经进行编译的项目文件的结束字符段之间。
可选地,所述根据所述目标开发工具包的执行文件对所述目标项目文件进行编译之后,包括:
将所述目标项目文件编译后的代码段写入到所述编译位置中,以补全所述各个项目文件的代码段组成的编译文件;
运行所述编译文件,以验证所述编译文件中是否存在编译错误。
可选地,所述在所述开发工具包的执行文件在调用的状态下,将所述开发工具包的功能文件替换为所述目标开发工具包的功能文件之后,包括:
查找上传所述目标项目文件的目标终端;
向所述目标终端发送所述目标开发工具包的功能文件,以使所述目标终端根据所述功能文件更新开发工具包。
可选地,所述向所述目标终端发送所述目标开发工具包的功能文件,以使所述目标终端根据所述功能文件更新开发工具包之后,包括:
获取所述目标终端再次上传的项目文件;
识别所述项目文件的开发工具包的版本号是否与所述目标开发工具包的版本号一致;
当所述开发工具包的版本号与所述目标开发工具包的版本号不一致时,向所述目标终端发送预设的强制更新指令,其中所述强制更新指令用于设定所述目标终端自动更新所述开发工具包的更新时间。
为解决上述技术问题,本发明实施例还提供一种程序编译装置,包括:
获取模块,用于获取目标编译文件中各个项目文件的开发工具包的开发版本号,其中,所述目标编译文件至少由两个项目文件组成;
处理模块,用于根据预设的适配列表将所述各个项目文件的开发版本号与编译系统的系统版本号进行适配比对,其中,所述适配列表中记载所述系统版本号适配的开发工具包的版本号;
执行模块,用于当所述开发版本号与所述系统版本号适配时,对所述开发版本号对应的项目文件进行编译;否则,则定义所述开发版本号对应的项目文件为目标项目文件,其中,所述目标项目文件为所述系统版本号对应的编译系统无法编译的项目文件。
可选地,所述程序编译装置还包括:
第一查找子模块,用于查找与所述目标项目文件的系统版本号对应的目标开发工具包;
第一执行子模块,用于在所述开发工具包的执行文件在调用的状态下,将所述开发工具包的功能文件替换为所述目标开发工具包的功能文件。
可选地,所述程序编译装置还包括:
第一加载子模块,用于加载所述目标开发工具包的功能文件生成所述目标开发工具包的执行文件;
第二执行子模块,用于根据所述目标开发工具包的执行文件对所述目标项目文件进行编译。
可选地,所述程序编译装置还包括:
第一记录子模块,用于记录各个已经进行编译的项目文件的编译文件的起始字符段和结束字符段;
第一处理子模块,用于根据所述目标项目文件在所述编译系统中的位置,确定所述目标项目文件编译后的代码段插入的编译位置,其中,所述编译位置位于一个已经进行编译的项目文件的起始字符段和/或另一个已经进行编译的项目文件的结束字符段之间。
可选地,所述程序编译装置还包括:
第二处理子模块,用于将所述目标项目文件编译后的代码段写入到所述编译位置中,以补全所述各个项目文件的代码段组成的编译文件;
第三执行子模块,用于运行所述编译文件,以验证所述编译文件中是否存在编译错误。
可选地,所述程序编译装置还包括:
第二查找子模块,用于查找上传所述目标项目文件的目标终端;
第三处理子模块,用于向所述目标终端发送所述目标开发工具包的功能文件,以使所述目标终端根据所述功能文件更新开发工具包。
可选地,所述程序编译装置还包括:
第一获取子模块,用于获取所述目标终端再次上传的项目文件;
第四处理子模块,用于识别所述项目文件的开发工具包的版本号是否与所述目标开发工具包的版本号一致;
第四执行子模块,用于当所述开发工具包的版本号与所述目标开发工具包的版本号不一致时,向所述目标终端发送预设的强制更新指令,其中所述强制更新指令用于设定所述目标终端自动更新所述开发工具包的更新时间。
为解决上述技术问题,本发明实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述程序编译方法的步骤。
为解决上述技术问题,本发明实施例还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述程序编译方法的步骤。
本发明实施例的有益效果是:在获取了多个终端上传的需要进行编译的项目文件后,将各个项目文件的开发工具包的开发版本号与当前编译系统的系统版本号进行适配,确定与当前编译系统的系统版本号不匹配的项目文件,则该项目文件为当前编译系统无法进行编译的项目文件。编译系统在进行编译时,将无法进行编译的项目文件进行隔离,仅仅对能够进行编译的项目文件进行编译,避免由于少数文件无法进行编译导致这个编译系统无法进行正常编译,节约了编译的时间,提高了编译的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例程序编译方法的基本流程示意图;
图2为本发明实施例热更新开发工具包的流程示意图;
图3为本发明实施例安装功能文件的流程示意图;
图4为本发明实施例对目标项目文件进行插入式编译的流程示意图;
图5为本发明实施例验证编译代码段的流程示意图;
图6为本发明实施例向编码终端发送功能文件的流程示意图;
图7为本发明实施例强制更新目标终端开发工具包的流程示意图;
图8为本发明实施例程序编译装置基本结构示意图;
图9为本发明实施例计算机设备基本结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
具体请参阅图1,图1为本实施例程序编译方法的基本流程示意图。
如图1所示,一种程序编译方法,包括:
S1100、获取目标编译文件中各个项目文件的开发工具包的开发版本号,其中,所述目标编译文件至少由两个项目文件组成;
计算机在运行时执行的是应用程序的机器码,但是,在进行编程时,需要将编程语言写成的编程代码编译成为机器码,然后,由计算机运行以实现应用程序的设计功能。
编程时将应用程序的各个功能进行模块化,每个编程人员负责一个功能模块或者多个功能模块的编程任务,即应用程序的编程代码由多个人分别负责撰写。
编码人员将各个功能模块的代码段编写完毕后生成项目文件,因此,项目文件为各个功能模块的编码段的集合文件夹。在进行代码段编写时需要使用专业的工具,专业的编写工具为:开发工具包。开发工具包为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
不同的编码终端将各自负责的项目文件上传时,项目文件中记录有各自编码终端使用的开发工具包的开发版本号,开发版本号决定了当前项目文件使用的开发工具包是否适配于编译终端使用的编译系统,因此,需要进行进一步的适配。
S1200、根据预设的适配列表将所述各个项目文件的开发版本号与编译系统的系统版本号进行适配比对,其中,所述适配列表中记载所述系统版本号适配的开发工具包的版本号;
编译终端用于将编码终端上传的项目文件转化为机器码,在一些实施方式中,编译终端为具有编译功能的服务器端或者云端。编译终端使用编译系统对各个项目文件进行编译,每个编译系统能够适配的开发工具包的版本是有限的,因此,需要在进行编译之前对项目文件使用的开发工具包进行版本适配。
编译系统中设置有适配列表,适配列表中记录有当前编译系统的版本号,已经该版本号适配的开发工具包的版本号,适配列表中记录的开发工具包的版本号为穷尽式的列举,因此,未记载在该适配列表中的开发工具包的版本号就与当前的编译系统不适配。
因此,将各个编码终端上传的项目文件使用的开发工具包的版本号在适配列表中进行查找比对,若是在适配列表中查找到了对应的版本号,则说明该项目文件使用的开发工具包与当前的编码系统相适配;否则,则说明该项目文件使用的开发工具包与当前的编码系统不相适配。
S1300、当所述开发版本号与所述系统版本号适配时,对所述开发版本号对应的项目文件进行编译;否则,则定义所述开发版本号对应的项目文件为目标项目文件,其中,所述目标项目文件为所述系统版本号对应的编译系统无法编译的项目文件。
当开发版本号与系统版本号适配时,说明该项目文件使用的开发工具包与当前的编码系统相适配,当前编译系统能够对该项目文件进行编译,通过轮询的方式确定所有的项目文件中有哪些项目文件能够被当前的编译系统所编译,并将能够被编译的项目文件进行记录。同时,将项目文件使用的开发工具包与当前的编码系统不相适配的项目文件也进行记录,并标记该不可编译的项目文件为目标项目文件。将整个项目文件均进行匹配后,编译系统将能够进行编译的项目文件进行编译。
在一些实施方式中,进行编译时,编译系统将能够进行编译的项目文件存储在指定的文件夹中进行编译,而将不能够进行编译的项目文件收录在另外独立的文件夹中,隔离编译能够防止系统操作错误,误将不可编译的项目文件进行编译,造成编译系统宕机,也方便编译系统对不可编译的项目文件进行后续的处理。
上述实施方式中,在获取了多个终端上传的需要进行编译的项目文件后,将各个项目文件的开发工具包的开发版本号与当前编译系统的系统版本号进行适配,确定与当前编译系统的系统版本号不匹配的项目文件,则该项目文件为当前编译系统无法进行编译的项目文件。编译系统在进行编译时,将无法进行编译的项目文件进行隔离,仅仅对能够进行编译的项目文件进行编译,避免由于少数文件无法进行编译导致这个编译系统无法进行正常编译,节约了编译的时间,提高了编译的效率。
在一些实施方式中,当检测得到目标项目文件中的开发工具包与当前编译系统的版本号不相适配时,需要对开发工具包进行热升级,热升级的原理在于:开发工具包包括执行文件和功能文件。其中,执行文件用于当前编译工作的执行,而功能文件则记载开发工具包功能数据,因此,在两个文件中,执行文件是无法在编译过程中进行更新的,但是功能文件却能够在编译过程中进行更新,且功能文件的更新不会影响当前执行文件的编译任务。请参阅图2,图2为本实施例热更新开发工具包的流程示意图。
如图2所示,S1300之后,包括:
S1311、查找与所述目标项目文件的系统版本号对应的目标开发工具包;
服务器端根据该编译终端上传的开发工具包的版本号,在全量的开发工具包版本数据库中进行版本号适配,查找到与当前编译系统版本号适配的开发工具包的功能文件后,向编译终端发送用于更新的开发工具包的功能文件。编译终端接收该开发工具包的功能文件,采用该开发工具包的功能文件替换本地存储空间内原始的功能文件。
S1312、在所述开发工具包的执行文件在调用的状态下,将所述开发工具包的功能文件替换为所述目标开发工具包的功能文件。
编译终端监听当前编译任务的进程变化,当前编译进程正在执行时,将开发工具包的功能文件替换为目标开发工具包的功能文件,由于,目标开发工具包的功能文件为更新的功能文件,因此,安装该功能文件后,即可完成对开发工具包的更新。
在一些实施方式中,当开发工具包的功能文件下载后,需要进行安装,安装完成后功能文件生成能够被编译系统调用并执行的执行文件。请参阅图3,图3为本实施例安装功能文件的流程示意图。
如图3所示,S1312之后,包括:
S1321、加载所述目标开发工具包的功能文件生成所述目标开发工具包的执行文件;
对当前的开发工具包的功能文件进行解压安装,已生成与更新后的开发工具包的功能文件相对应的执行文件,安装完成后的执行文件,能够对不可编译的项目文件进行编译。
在一些实施方式中,部分适用不可编译代码段的开发工具包版本有可能是历史版本,因此,该特殊情况需要进行回归式的更新,即当前本地的开发工具包版本高于编译系统的版本号时,在更新完成且对不可编译代码段进行编译后,还需要还原至当前的终端的开发工具包的版本。此时,通过比对本地的开发工具包版本和更新开发工具包文件的版本号,若比对结果确认本地的开发工具包版本号高于更新开发工具包文件的版本号时,在使用更新的开发工具包功能文件替换本地开发工具包功能文件的同时,将本地的开发工具包功能文件存储在编译终端的内存中,当更新后的编译工具完成编译后,将该开发工具包功能文件从内存中移出,覆盖更新后的功能文件,以此,完成开发工具包功能文件的回归式更新。
S1322、根据所述目标开发工具包的执行文件对所述目标项目文件进行编译。
当目标开发工具包的执行文件生成后,编译系统能够调用并运行该执行文件,对目标项目文件进行编译,由于,目标开发工具包的版本号与编译系统的版本号完全的适配,因此,编译系统通过执行目标开发工具包的执行文件,能够对不可编译的目标项目文件进行编译。
对开发工具包进行热更新,能够节约更新的时间,同时,不阻碍编译系统的正常工作,提高了编译系统的编译效率。
在一些实施方式中,当项目文件中存在可编译的项目文件以及不可编译的项目文件时,编译系统对可编译的项目文件进行编译,并记录各个可编译的项目文件编译后代码段的起始字符段与结束字符段,以便于完成开发工具包的更新后,对目标项目文件进行插入式编译。请参阅图4,图4为本实施例对目标项目文件进行插入式编译的流程示意图。
如图4所示,S1322之前,包括:
S1331、记录各个已经进行编译的项目文件的编译文件的起始字符段和结束字符段;
编译系统在对可编译的项目文件进行编译,当编译完成时,编译系统记录各个已经编译完成的项目文件的字符段中的起始字符段和结束字符段。其中,起始字符段为整个项目文件字符段中开始的第一句字符段,结束字符段为整个项目文件字符段中结束的最后一句字符段。
在一些实施方式中,不同的项目文件被编译后,有可能造成不同字符段的起始字符段或结束字符段会与其他字符段的起始字符段或结束字符段相同。因此,在提取当前项目文件的起始字符段或结束字符段时,需要将起始字符段或结束字符段与之前已经提取的起始字符段或结束字符段进行比较,若比较出现相同的起始字符段或结束字符段时,需要增加当前起始字符段或结束字符段的长度,增加的方式为,起始字符段的内容在原有的基础上向后延伸一句,结束字符段的内容在原有的基础上后前延伸一句。
S1332、根据所述目标项目文件在所述编译系统中的位置,确定所述目标项目文件编译后的代码段插入的编译位置,其中,所述编译位置位于一个已经进行编译的项目文件的起始字符段和/或另一个已经进行编译的项目文件的结束字符段之间。
对于同一个应用程序的不同项目文件,不同项目文件之间具有固定的排列次序,因此,各个项目文件不同的排列次序就确定了目标项目文件相邻的插入位置,该插入位置被定义为编译位置。
由于,目标项目文件的排列次序是固定的,因此,位于编译位置的起始字符段和/或结束字符段也是固定的,通过确定与目标项目文件相邻的起始字符段和/或结束字符段就能够最终的确定编译位置,并将编译后的目标项目文件写入到该编译位置,完成整个应用程序的代码编译。
采用插入式的编译方式,避免了部分项目文件不可编译导致的编译终止和重新编译,大大提高了编译的效率。
在一些实施方式中,当目标项目文件完成编译,并将编译后的插入到编译位置后完成应用程序的编译,此时,需要通过运行编译后的字符段以验证编译是否存在错误。请参阅图5,图5为本实施例验证编译代码段的流程示意图。
如图5所示,S1322之后,包括:
S1341、将所述目标项目文件编译后的代码段写入到所述编译位置中,以补全所述各个项目文件的代码段组成的编译文件;
目标项目文件的排列次序是固定的,因此,位于编译位置的起始字符段和/或结束字符段也是固定的,通过确定与目标项目文件相邻的起始字符段和/或结束字符段就能够最终的确定编译位置,并将编译后的目标项目文件写入到该编译位置,完成整个应用程序的代码编译生成编译文件。
S1342、运行所述编译文件,以验证所述编译文件中是否存在编译错误。
运行该编译文件,在运行的过程中会生成运行日志,该日志中记录在运行过程中是否出现了不可执行的代码段,若是,则将该不可执行的代码段进行记录,记录的内容包括该代码段所属的项目文件。通过该运行日志能够确定编译问题所在的项目文件,进而确定上传该项目文件的编码终端。然后,将出现的编译问题发送至对应的编码终端进行处理,经过修正后的项目文件还能够通过插入的方式进行编译,进一步的提高了代码的编译效率。
在一些实施方式中,为了防止编码终端的开发工具包与编译系统长期版本不适配,导致的编译效率低的问题,在确定了目标项目文件后,需要向目标项目文件对应的编码终端发送用于更新的功能文件。请参阅图6,图6为本实施例向编码终端发送功能文件的流程示意图。
如图6所示S1312之后,包括:
S1411、查找上传所述目标项目文件的目标终端;
根据目标项目文件的上传信息,查找上传该目标项目文件的目标终端。由于,编码终端上传目标项目文件时,会携带编码终端的通讯地址,根据该通讯地址编译终端能够向目标终端发送信息。
S1412、向所述目标终端发送所述目标开发工具包的功能文件,以使所述目标终端根据所述功能文件更新开发工具包。
编译终端向目标终端发送目标开发工具包的功能文件,目标终端在接收到该功能文件后,会弹跳出更新开发数据包的确认信息,该确认信息以弹窗的方式出现,当用户确认了该信息后,目标终端对本体已经存在的开发工具包的功能文件进行替换完成更新;当用户拒绝了该信息后,则继续使用原有的开发工具包,但是,会将目标项目文件的功能文件进行存储。
在一些实施方式中,编译终端接收到目标终端再次上传的项目文件时,继续核对项目文件的开发工具包版本是否适配于编译系统,若检测结果确认目标系统的开发工具包的版本还是不适用与编译系统时,则会控制目标终端进行强制更新开发工具包。请参阅图7,图7为本实施例强制更新目标终端开发工具包的流程示意图。
如图7所示,S1412之后,包括:
S1421、获取所述目标终端再次上传的项目文件;
编译终端在向目标终端发送目标项目文件的功能文件后,继续接受该目标终端上传的项目文件,该项目文件为目标终端负责的上述应用程序的项目文件,也能够为目标终端负责的其他应用程序的项目文件。
S1422、识别所述项目文件的开发工具包的版本号是否与所述目标开发工具包的版本号一致;
识别目标终端再次上传的项目文件的开发工具包的版本号是否与目标开发工具包的版本号一致,若一致则表明目标终端对开发工具包进行了更新;否则,则表明目标终端未对开发工具包进行更新。
S1423、当所述开发工具包的版本号与所述目标开发工具包的版本号不一致时,向所述目标终端发送预设的强制更新指令,其中所述强制更新指令用于设定所述目标终端自动更新所述开发工具包的更新时间。
当开发工具包的版本号与目标开发工具包的版本号不一致时,则表明目标终端未对开发工具包进行更新,此时,编译终端向目标终端发送预设的强制更新指令,强制更新指令的作用在于,在目标终端弹跳出更新开发工具包的时间,用户只能从上面选取更新的时间,且该时间最晚不得超过三日,确定更新时间后,目标终端在确定的更新时间,强制性的对开发工具包进行更新。
强制性的对目标终端进行开发工具包的更新,有利于编译系统的编译,提高了编译的效率。
为解决上述技术问题,本发明实施例还提供一种程序编译装置。
具体请参阅图8,图8为本实施例程序编译装置基本结构示意图。
如图8所示,一种程序编译装置,包括:获取模块2100、处理模块2200和执行模块2300。其中,获取模块2100用于获取目标编译文件中各个项目文件的开发工具包的开发版本号,其中,所述目标编译文件至少由两个项目文件组成;处理模块2200用于根据预设的适配列表将所述各个项目文件的开发版本号与编译系统的系统版本号进行适配比对,其中,所述适配列表中记载所述系统版本号适配的开发工具包的版本号;执行模块2300用于当所述开发版本号与所述系统版本号适配时,对所述开发版本号对应的项目文件进行编译;否则,则定义所述开发版本号对应的项目文件为目标项目文件,其中,所述目标项目文件为所述系统版本号对应的编译系统无法编译的项目文件。
程序编译装置在获取了多个终端上传的需要进行编译的项目文件后,将各个项目文件的开发工具包的开发版本号与当前编译系统的系统版本号进行适配,确定与当前编译系统的系统版本号不匹配的项目文件,则该项目文件为当前编译系统无法进行编译的项目文件。编译系统在进行编译时,将无法进行编译的项目文件进行隔离,仅仅对能够进行编译的项目文件进行编译,避免由于少数文件无法进行编译导致这个编译系统无法进行正常编译,节约了编译的时间,提高了编译的效率。
在一些实施方式中,所述程序编译装置还包括:第一查找子模块和第一执行子模块。其中,第一查找子模块用于查找与所述目标项目文件的系统版本号对应的目标开发工具包;第一执行子模块用于在所述开发工具包的执行文件在调用的状态下,将所述开发工具包的功能文件替换为所述目标开发工具包的功能文件。
在一些实施方式中,所述程序编译装置还包括:第一加载子模块和第二执行子模块。其中,第一加载子模块用于加载所述目标开发工具包的功能文件生成所述目标开发工具包的执行文件;第二执行子模块用于根据所述目标开发工具包的执行文件对所述目标项目文件进行编译。
在一些实施方式中,所述程序编译装置还包括:第一记录子模块和第一处理子模块。其中,第一记录子模块用于记录各个已经进行编译的项目文件的编译文件的起始字符段和结束字符段;第一处理子模块用于根据所述目标项目文件在所述编译系统中的位置,确定所述目标项目文件编译后的代码段插入的编译位置,其中,所述编译位置位于一个已经进行编译的项目文件的起始字符段和/或另一个已经进行编译的项目文件的结束字符段之间。
在一些实施方式中,所述程序编译装置还包括:第二处理子模块和第三执行子模块。其中,第二处理子模块用于将所述目标项目文件编译后的代码段写入到所述编译位置中,以补全所述各个项目文件的代码段组成的编译文件;第三执行子模块用于运行所述编译文件,以验证所述编译文件中是否存在编译错误。
在一些实施方式中,所述程序编译装置还包括:第二查找子模块和第三处理子模块。其中,第二查找子模块用于查找上传所述目标项目文件的目标终端;第三处理子模块用于向所述目标终端发送所述目标开发工具包的功能文件,以使所述目标终端根据所述功能文件更新开发工具包。
在一些实施方式中,所述程序编译装置还包括:第一获取子模块、第四处理子模块和第四执行子模块。其中,第一获取子模块用于获取所述目标终端再次上传的项目文件;第四处理子模块用于识别所述项目文件的开发工具包的版本号是否与所述目标开发工具包的版本号一致;第四执行子模块用于当所述开发工具包的版本号与所述目标开发工具包的版本号不一致时,向所述目标终端发送预设的强制更新指令,其中所述强制更新指令用于设定所述目标终端自动更新所述开发工具包的更新时间。
为解决上述技术问题,本发明实施例还提供计算机设备。具体请参阅图9,图9为本实施例计算机设备基本结构框图。
如图9所示,计算机设备的内部结构示意图。该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种程序编译方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种程序编译方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施方式中处理器用于执行图8中获取模块2100、处理模块2200和执行模块2300的具体功能,存储器存储有执行上述模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有程序编译装置中执行所有子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
计算机设备在获取了多个终端上传的需要进行编译的项目文件后,将各个项目文件的开发工具包的开发版本号与当前编译系统的系统版本号进行适配,确定与当前编译系统的系统版本号不匹配的项目文件,则该项目文件为当前编译系统无法进行编译的项目文件。编译系统在进行编译时,将无法进行编译的项目文件进行隔离,仅仅对能够进行编译的项目文件进行编译,避免由于少数文件无法进行编译导致这个编译系统无法进行正常编译,节约了编译的时间,提高了编译的效率。
本发明还提供一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例程序编译方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

Claims (10)

1.一种程序编译方法,其特征在于,包括:
获取目标编译文件中各个项目文件的开发工具包的开发版本号,其中,所述目标编译文件至少由两个项目文件组成;
根据预设的适配列表将所述各个项目文件的开发版本号与编译系统的系统版本号进行适配比对,其中,所述适配列表中记载所述系统版本号适配的开发工具包的版本号;
当所述开发版本号与所述系统版本号适配时,对所述开发版本号对应的项目文件进行编译;否则,则定义所述开发版本号对应的项目文件为目标项目文件,其中,所述目标项目文件为所述系统版本号对应的编译系统无法编译的项目文件。
2.根据权利要求1所述的程序编译方法,其特征在于,所述编译系统包括执行文件和功能文件,所述当所述开发版本号与所述系统版本号适配时,对所述开发版本号对应的项目文件进行编译;否则,则定义所述开发版本号对应的项目文件为目标项目文件之后,包括:
查找与所述目标项目文件的系统版本号对应的目标开发工具包;
在所述开发工具包的执行文件在调用的状态下,将所述开发工具包的功能文件替换为所述目标开发工具包的功能文件。
3.根据权利要求2所述的程序编译方法,其特征在于,所述在所述编译系统的执行文件在调用的状态下,将所述编译系统的功能文件替换为所述目标编译系统的功能文件之后,包括:
加载所述目标开发工具包的功能文件生成所述目标开发工具包的执行文件;
根据所述目标开发工具包的执行文件对所述目标项目文件进行编译。
4.根据权利要求3所述的程序编译方法,其特征在于,所述根据所述目标开发工具包的执行文件对所述目标项目文件进行编译之前,包括:
记录各个已经进行编译的项目文件的编译文件的起始字符段和结束字符段;
根据所述目标项目文件在所述编译系统中的位置,确定所述目标项目文件编译后的代码段插入的编译位置,其中,所述编译位置位于一个已经进行编译的项目文件的起始字符段和/或另一个已经进行编译的项目文件的结束字符段之间。
5.根据权利要求4所述的程序编译方法,其特征在于,所述根据所述目标开发工具包的执行文件对所述目标项目文件进行编译之后,包括:
将所述目标项目文件编译后的代码段写入到所述编译位置中,以补全所述各个项目文件的代码段组成的编译文件;
运行所述编译文件,以验证所述编译文件中是否存在编译错误。
6.根据权利要求2所述的程序编译方法,其特征在于,所述在所述开发工具包的执行文件在调用的状态下,将所述开发工具包的功能文件替换为所述目标开发工具包的功能文件之后,包括:
查找上传所述目标项目文件的目标终端;
向所述目标终端发送所述目标开发工具包的功能文件,以使所述目标终端根据所述功能文件更新开发工具包。
7.根据权利要求6所述的程序编译方法,其特征在于,所述向所述目标终端发送所述目标开发工具包的功能文件,以使所述目标终端根据所述功能文件更新开发工具包之后,包括:
获取所述目标终端再次上传的项目文件;
识别所述项目文件的开发工具包的版本号是否与所述目标开发工具包的版本号一致;
当所述开发工具包的版本号与所述目标开发工具包的版本号不一致时,向所述目标终端发送预设的强制更新指令,其中所述强制更新指令用于设定所述目标终端自动更新所述开发工具包的更新时间。
8.一种程序编译装置,其特征在于,包括:
获取模块,用于获取目标编译文件中各个项目文件的开发工具包的开发版本号,其中,所述目标编译文件至少由两个项目文件组成;
处理模块,用于根据预设的适配列表将所述各个项目文件的开发版本号与编译系统的系统版本号进行适配比对,其中,所述适配列表中记载所述系统版本号适配的开发工具包的版本号;
执行模块,用于当所述开发版本号与所述系统版本号适配时,对所述开发版本号对应的项目文件进行编译;否则,则定义所述开发版本号对应的项目文件为目标项目文件,其中,所述目标项目文件为所述系统版本号对应的编译系统无法编译的项目文件。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述程序编译方法的步骤。
10.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项权利要求所述程序编译方法的步骤。
CN201910893862.4A 2019-09-20 2019-09-20 程序编译方法、装置、计算机设备及存储介质 Pending CN110750266A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910893862.4A CN110750266A (zh) 2019-09-20 2019-09-20 程序编译方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910893862.4A CN110750266A (zh) 2019-09-20 2019-09-20 程序编译方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN110750266A true CN110750266A (zh) 2020-02-04

Family

ID=69276766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910893862.4A Pending CN110750266A (zh) 2019-09-20 2019-09-20 程序编译方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN110750266A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882720A (zh) * 2021-03-15 2021-06-01 北京字节跳动网络技术有限公司 一种编译方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100076931A1 (en) * 2008-09-10 2010-03-25 Christof Bornhoevd Recording Information About an Item
CN104142846A (zh) * 2014-08-06 2014-11-12 汉柏科技有限公司 一种程序脚本编译方法和装置
CN107608677A (zh) * 2017-09-05 2018-01-19 腾讯科技(深圳)有限公司 一种编译处理方法、装置及电子设备
CN107741851A (zh) * 2017-10-12 2018-02-27 北京元心科技有限公司 编译系统的编译方法、装置及终端设备
CN110059456A (zh) * 2019-04-19 2019-07-26 同盾控股有限公司 代码保护方法、代码保护装置、存储介质与电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100076931A1 (en) * 2008-09-10 2010-03-25 Christof Bornhoevd Recording Information About an Item
CN104142846A (zh) * 2014-08-06 2014-11-12 汉柏科技有限公司 一种程序脚本编译方法和装置
CN107608677A (zh) * 2017-09-05 2018-01-19 腾讯科技(深圳)有限公司 一种编译处理方法、装置及电子设备
CN107741851A (zh) * 2017-10-12 2018-02-27 北京元心科技有限公司 编译系统的编译方法、装置及终端设备
CN110059456A (zh) * 2019-04-19 2019-07-26 同盾控股有限公司 代码保护方法、代码保护装置、存储介质与电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882720A (zh) * 2021-03-15 2021-06-01 北京字节跳动网络技术有限公司 一种编译方法及装置
CN112882720B (zh) * 2021-03-15 2024-03-22 抖音视界有限公司 一种编译方法及装置

Similar Documents

Publication Publication Date Title
EP3333704B1 (en) Method and apparatus for repairing kernel vulnerability
CN107515826B (zh) 测试用例精准推荐方法、装置、系统、设备及存储介质
CN109086199B (zh) 一种自动化生成测试脚本的方法、终端和可存储介质
CN108279922A (zh) 差分文件生成方法、基于该差分文件的升级方法及系统
EP3812889A1 (en) Method for generating difference between new and old data in order to update software, and device therefor
CN108196878A (zh) 应用程序安装包的生成方法、装置、电子设备及存储介质
CN110399306B (zh) 软件模块自动化测试方法及装置
CN107632901A (zh) 一种应用程序运行异常的自修复方法及装置
US8230406B2 (en) Compiler option consistency checking during incremental hardware design language compilation
CN109901858A (zh) 应用软件更新检测方法、装置、计算机设备及存储介质
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
CN111538659B (zh) 业务场景的接口测试方法、系统、电子设备和存储介质
CN112052037A (zh) 一种应用软件开发方法、装置、设备及介质
US7770167B1 (en) Method and system for installing software
CN110750266A (zh) 程序编译方法、装置、计算机设备及存储介质
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
US10445084B1 (en) Method and system for installing software
CN113535182B (zh) 项目工程的构建方法、装置、计算机设备和存储介质
CN113568834A (zh) Sdk代码的兼容性检测方法、装置、计算机设备和介质
US8566820B1 (en) Method and system for installing software
CN113849415A (zh) 控件测试方法、装置、存储介质及电子设备
CN113672465A (zh) 进程名生成进程日志系统的方法、系统、介质、终端、无人机
CN111142859A (zh) 一种脚本生成方法、装置、电子设备及存储介质
CN109284097A (zh) 实现复杂数据分析的方法、设备、系统及存储介质
CN111309790A (zh) 基于maxcomputer数据库的自动ETL配置方法及装置、控制系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination