一体化云编译方法和系统与流程

文档序号:12176597阅读:177来源:国知局
一体化云编译方法和系统与流程

本发明涉及计算机技术领域,特别是涉及一种一体化云编译方法和系统。



背景技术:

随着各平台项目及用户的增多,用户对于软件的需求也越来越多,且不同用户之间的需求也不同。研发人员在处理这些碎片化的差异性需求时显得繁琐、费时,需针对不同用户的需求发布不同的软件升级包,且需要研发人员投入大量人力进行维护,浪费资源。



技术实现要素:

基于此,有必要提供一种一体化云编译方法,能够在满足用户对软件的不同需求的同时,减少人力,节约资源。

此外,还有必要提供一种一体化云编译系统,能够在满足用户对软件的不同需求的同时,减少人力,节约资源。

一种一体化云编译方法,包括以下步骤:

接收约定格式的需求文件;

解析所述需求文件并存储解析结果;

根据所述解析结果编译生成平台软件;

根据所述解析结果从预设的组件池中选择对应的组件对所述平台软件进行组装;

将组装后的平台软件进行打包。

在其中一个实施例中,所述需求文件根据用户选择的需求模块生成;

所述解析所述需求文件并存储解析结果,具体包括以下步骤:

载入所述需求文件;

解析所述需求文件的各个节点,并获取各个节点的名称及属性值;所述节点的名称为所述用户选择的需求模块名称,所述节点的属性值为所述用户选择 的需求模块的具体内容。

在其中一个实施例中,所述根据所述解析结果编译生成平台软件,具体包括以下步骤:

将所述解析结果传递给预处理脚本;

通过所述预处理脚本按照所述解析结果设置编译脚本中对应的功能宏;

通过所述编译脚本中的功能宏选择对应的代码编译生成平台软件。

在其中一个实施例中,所述根据所述解析结果从预设的组件池中选择对应的组件对所述平台软件进行组装,具体包括以下步骤:

根据所述解析结果从预设的组件池中选择对应的组件,并将所述组件存储在所述平台软件中对应的特定分区的目录中;

将所述组件编译到所述平台软件;

制作生成各个特定分区对应的镜像文件。

在其中一个实施例中,所述方法还包括以下步骤:

将所述各个特定分区对应的镜像文件打包生成bin文件。

一种一体化云编译系统,包括:

接收模块,用于接收约定格式的需求文件;

解析模块,用于解析所述需求文件并存储解析结果;

编译模块,用于根据所述解析结果编译生成平台软件;

组装模块,用于根据所述解析结果从预设的组件池中选择对应的组件对所述平台软件进行组装;

打包模块,用于将组装后的平台软件进行打包。

在其中一个实施例中,所述需求文件根据用户选择的需求模块生成,所述解析模块具体包括:

载入单元,用于载入所述需求文件;

获取单元,用于解析所述需求文件的各个节点,并获取各个节点的名称及属性值;所述节点的名称为所述用户选择的需求模块名称,所述节点的属性值为所述用户选择的需求模块的具体内容。

在其中一个实施例中,所述编译模块具体包括:

传递单元,用于将所述解析结果传递给预处理脚本;

设置单元,用于通过所述预处理脚本按照所述解析结果设置编译脚本中对应的功能宏;

选择单元,用于通过所述编译脚本中的功能宏选择对应的代码编译生成平台软件。

在其中一个实施例中,所述组装模块具体包括:

存储单元,用于根据所述解析结果从预设的组件池中选择对应的组件,并将所述组件存储在所述平台软件中对应的特定分区的目录中;

编译单元,用于将所述组件编译到所述平台软件;

制作单元,用于制作生成各个特定分区对应的镜像文件。

在其中一个实施例中,所述打包模块还用于将所述各个特定分区对应的镜像文件打包生成bin文件。

上述一体化云编译方法和系统,能自动根据用户需求从预设的组件池中选择组件对软件进行组装,可随时满足用户对软件的需求,无需研发人员对用户的差异性需求进行处理,减少人力,节约资源,且能减少软件发布出错的可能性。此外,研发人员可直接对功能组件进行开发形成自己的软件产品,更为方便快捷。

附图说明

图1为一个实施例中一体化云编译方法的流程示意图;

图2为一个实施例中解析需求文件并存储解析结果步骤的流程示意图;

图3为一个实施例中根据解析结果编译生成平台软件步骤的流程示意图;

图4为一个实施例中根据解析结果为平台软件定制特定分区步骤的流程示意图;

图5为一个实施例中一体化云编译系统的结构示意图;

图6为一个实施例中编译模块的内部结构示意图;

图7为一个实施例中组装模块的内部结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,一种一体化云编译方法,包括以下步骤:

步骤S110,接收约定格式的需求文件。

具体的,可将浏览器作为服务器的一个云端窗口,用户通过该云端窗口可根据自身需求选择不同的需求模块进行定制。选择完成后,根据用户的选择将生成对应的约定格式的xml(Extensible Markup Language,可扩展标记语言)需求文件,该约定格式可为针对不同的需求模块,xml需求文件中将生成不同的对应节点。节点包括节点名称和节点属性值,节点名称为用户选择的需求模块名称,节点的属性值为用户选择的需求模块的具体内容。服务器接收由云端窗口发送的该约定格式的需求文件,并根据该需求文件编译生成对应的软件升级包。

步骤S120,解析需求文件并存储解析结果。

具体的,服务器接收前端发送的约定格式的xml需求文件后,可利用python(蟒蛇语言)脚本解析该需求文件,并将解析结果进行存储。如图2所示,在进一步的实施例中,步骤S120解析需求文件并存储解析结果,具体包括以下步骤:

步骤S210,载入所述需求文件。

具体的,可使用python脚本中的minidom模块载入xml需求文件,通过先建立一个dom对象,然后读取xml需求文件。

步骤S220,解析需求文件的各个节点,并获取各个节点的名称及属性值。

具体的,载入xml需求文件后,解析xml需求文件的各个节点,获取各个节点的名称及属性值。节点名称为用户选择的需求模块名称,节点的属性值为用户选择的需求模块的具体内容,二者一一对应,例如,用户选择需求模块A,需求模块A中包含功能B、功能C和功能D,则解析需求文件获取的节点名称为需求模块A,节点属性值包括功能B、功能C、功能D。本实施例中,根据对 需求文件进行解析,根据解析结果可获取用户选择的需求模块及需求模块对应的功能,并选择对应的组件编译生成软件升级包,针对不同的用户能满足其不同的需求。

步骤S130,根据解析结果编译生成平台软件。

具体的,服务器根据解析结果修改相关脚本,并设置相关功能宏,然后进行编译生成平台软件。生成的平台软件一般只能满足基本功能,类似于公版软件。如图3所示,在进一步的实施例中,步骤S130根据解析结果编译生成平台软件,具体包括以下步骤:

步骤S310,将解析结果传递给预处理脚本。

具体的,服务器利用python脚本解析xml需求文件后,将获取的解析结果传递给预处理脚本。预处理脚本主要用于配置软件基本参数及初始化路径。

步骤S320,通过预处理脚本按照解析结果设置编译脚本中对应的功能宏。

具体的,预处理脚本根据解析结果设置编译脚本中对应的功能宏,功能宏主要用于控制对应的功能模块代码是否被编译到平台软件中。例如,当解析结果中包含功能A,则预处理脚本设置编译脚本中的功能A的功能宏开启,则功能A的实现代码将被编译到平台软件中。

步骤S330,通过编译脚本中的功能宏选择对应的代码编译生成平台软件。

具体的,编译脚本根据预处理脚本设置的功能宏选择对应的代码编译生成平台软件,该功能宏控制的功能模块除了包含软件的最基本应用,例如启动、设置等功能,还包含一些无法组件化的功能模块,当功能宏开启,则选择对应的代码编译进平台软件。可利用makefile编译规则编译出能运行的软件包。通过编写makefile文件,可制定软件的编译、连接等规则,包括软件中哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生需要的可执行文件等,然后只需利用make命令即可自动完成编译,生成平台软件。编译生成的平台软件一般只满足基本功能。本实施例中,可根据解析结果自动化编译生成满足基本功能的平台软件,方便后续对其进行组装打包,生成满足用户需求的软件升级包。

步骤S140,根据解析结果从预设的组件池中选择对应的组件对平台软件进 行组装。

具体的,服务器根据解析结果从预设的组件池中选取与解析结果对应的组件对平台进行组装。组件池中包含能够满足各个功能的组件,研发人员在开发的过程中只需创建与功能对应的组件,并将之放入组件池中,对应不同的用户选择不同的组件对软件进行组装,即可满足不同用户的需求。

步骤S150,将组装后的平台软件进行打包。

具体的,服务器将组装后的平台软件进行打包,生成软件升级包,用户利用该软件升级包即可升级自己的软件,满足其需求。

上述一体化云编译方法,能自动根据用户需求从预设的组件池中选择组件对软件进行组装,可随时满足用户对软件的需求,无需研发人员对用户的差异性需求进行处理,减少人力,节约资源,且能减少软件发布出错的可能性。此外,研发人员可直接对功能组件进行开发形成自己的软件产品,更为方便快捷。

如图4所示,在一个实施例中,步骤根据解析结果从预设的组件池中选择对应的组件对平台软件进行组装,具体包括以下步骤:

步骤S410,根据解析结果从预设的组件池中选择对应的组件,并将组件存储在平台软件中对应的特定分区的目录中。

具体的,可预先划分软件的特定分区,例如可划分service、config、database、customer、system等几个特定分区,service分区一般提供软件或系统相关的核心服务,用于存储核心程序及其依赖的库文件等;config分区一般存储基本配置信息;database分区一般存储业务相关的数据文件;customer一般存储用户的定制信息;system分区一般存储操作系统及预装系统的应用程序,包括系统组件、字件、语言包、系统平台运行框架及平台运行库等。针对不同的软件及不同用户,可划分不同的特定分区以满足相应的业务需求。

服务器选择对应的组件,并将该组件存储在平台软件中对应的特定分区的目录中。例如,用户选择了A型号的Tuner(校音器),根据解析需求文件获取到的解析结果,服务器将在组件池中选择Tuner型号为A的驱动库文件,并将其放到相应的特定分区目录中存储。

步骤S420,将组件编译到平台软件。

具体的,服务器根据解析结果选择对应的组件并存储到对应的特定分区目录后,将组件编译到平台软件中。可利用预先编写的makefile编译规则进行编译。

步骤S430,制作生成各个特定分区对应的镜像文件。

具体的,编译完成后,可利用mkuserimg、make_ext4fs等制作镜像工具将几个特定分区制作并生成对应的镜像文件,例如生成service.img、config.img、database.img、customer.img、system.img等与特定分区对应的镜像文件。当生成的特定分区的镜像文件过大时,可利用split等切分指令对镜像文件进行切分,可防止在后续烧录特定分区的镜像文件时,由于镜像文件过大而无法进行烧录的问题。

上述方法还包括步骤将各个特定分区对应的镜像文件打包生成bin文件(二进制文件)。

具体的,服务器可利用cat指令将生成的特定分区的镜像文件打包生成bin文件,bin文件中可存储有所有特定分区的分区信息及对应的地址信息。采用该打包方式使得在烧录特定分区的镜像文件时可以更好地烧录,在升级时,只需打开bin文件即可自动完成升级,简便了用户操作。

上述一体化云编译方法,能自动根据用户需求从预设的组件池中选择组件对软件进行组装,可随时满足用户对软件的需求,无需研发人员对用户的差异性需求进行处理,减少人力,节约资源,且能减少软件发布出错的可能性。此外,研发人员可直接对功能组件进行开发形成自己的软件产品,更为方便快捷。

如图5所示,一种一体化云编译系统,包括接收模块510、解析模块520、编译模块530、组装模块540和打包模块550。

接收模块510,用于接收约定格式的需求文件。

具体的,可将浏览器作为服务器的一个云端窗口,用户通过该云端窗口可根据自身需求选择不同的需求模块进行定制。选择完成后,根据用户的选择将生成对应的约定格式的xml需求文件,该约定格式可为针对不同的需求模块,xml需求文件中将生成不同的对应节点。节点包括节点名称和节点属性值,节点名称为用户选择的需求模块名称,节点的属性值为用户选择的需求模块的具体 内容。服务器接收云端窗口发送的该约定格式的需求文件,并根据该需求文件编译生成对应的软件升级包。

解析模块520,用于解析需求文件并存储解析结果。

具体的,服务器接收前端发送的约定格式的xml需求文件后,可利用python脚本解析该需求文件,并将解析结果进行存储。

解析模块520包括载入单元522和获取单元524。

载入单元522,用于载入需求文件。

具体的,可使用python脚本中的minidom模块载入xml需求文件,通过先建立一个dom对象,然后读取xml需求文件。

获取单元524,用于解析需求文件的各个节点,并获取各个节点的名称及属性值。

具体的,载入xml需求文件后,解析xml需求文件的各个节点,获取各个节点的名称及属性值。节点名称为用户选择的需求模块名称,节点的属性值为用户选择的需求模块的具体内容,二者一一对应,例如,用户选择需求模块A,需求模块A中包含功能B、功能C和功能D,则解析需求文件获取的节点名称为需求模块A,节点属性值包括功能B、功能C、功能D。本实施例中,根据对需求文件进行解析,根据解析结果可获取用户选择的需求模块及需求模块对应的功能,并选择对应的组件编译生成软件升级包,针对不同的用户能满足其不同的需求。

编译模块530,用于根据解析结果编译生成平台软件。

具体的,服务器根据解析结果修改相关脚本,并设置相关功能宏,然后进行编译生成平台软件。生成的平台软件一般只能满足基本功能,类似于公版软件。如图6所示,在进一步的实施例中,编译模块530包括传递单元532、设置单元534和选择单元536。

传递单元532,用于将解析结果传递给预处理脚本。

具体的,服务器利用python脚本解析xml需求文件后,将获取的解析结果传递给预处理脚本。预处理脚本主要用于配置软件基本参数及初始化路径。

设置单元534,用于通过预处理脚本按照解析结果设置编译脚本中对应的功 能宏。

具体的,预处理脚本根据解析结果设置编译脚本中对应的功能宏,功能宏主要用于控制对应的功能模块代码是否被编译到平台软件中。例如,当解析结果中包含功能A,则预处理脚本设置编译脚本中的功能A的功能宏开启,则功能A的实现代码将被编译到平台软件中。

选择单元536,用于通过编译脚本中的功能宏选择对应的代码编译生成平台软件。

具体的,编译脚本根据预处理脚本设置的功能宏选择对应的代码编译生成平台软件,该功能宏控制的功能模块除了包含软件的最基本应用,例如启动、设置等功能,还包含一些无法组件化的功能模块,当功能宏开启,则选择对应的代码编译进平台软件。可利用makefile编译规则编译出能运行的软件包。通过编写makefile文件,可制定软件的编译、连接等规则,包括软件中哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生需要的可执行文件等,然后只需利用make命令即可自动完成编译,生成平台软件。编译生成的平台软件一般只满足基本功能。本实施例中,可根据解析结果自动化编译生成满足基本功能的平台软件,方便后续对其进行组装打包,生成满足用户需求的软件升级包。

组装模块540,用于根据解析结果从预设的组件池中选择对应的组件对平台软件进行组装。

具体的,服务器根据解析结果从预设的组件池中选取与解析结果对应的组件对平台进行组装。组件池中包含能够满足各个功能的组件,研发人员在开发的过程中只需创建与功能对应的组件,并将之放入组件池中,对应不同的用户选择不同的组件对软件进行组装,即可满足不同用户的需求。

打包模块550,用于将组装后的平台软件进行打包。

具体的,服务器将组装后的平台软件进行打包,生成软件升级包,用户利用该软件升级包即可升级自己的软件,满足其需求。

上述一体化云编译体系统,能自动根据用户需求从预设的组件池中选择组件对软件进行组装,可随时满足用户对软件的需求,无需研发人员对用户的差 异性需求进行处理,减少人力,节约资源,且能减少软件发布出错的可能性。此外,研发人员可直接对功能组件进行开发形成自己的软件产品,更为方便快捷。

如图7所示,在一个实施例中,组装模块540包括存储单元542、编译单元544和制作单元546。

存储单元542,用于根据解析结果从预设的组件池中选择对应的组件,并将组件存储在平台软件中对应的特定分区的目录中。

具体的,可预先划分软件的特定分区,例如可划分service、config、database、customer、system等几个特定分区,service分区一般提供软件或系统相关的核心服务,用于存储核心程序及其依赖的库文件等;config分区一般存储基本配置信息;database分区一般存储业务相关的数据文件;customer一般存储用户的定制信息;system分区一般存储操作系统及预装系统的应用程序,包括系统组件、字件、语言包、系统平台运行框架及平台运行库等。针对不同的软件及不同用户,可划分不同的特定分区以满足相应的业务需求。

服务器选择对应的组件,并将该组件存储在平台软件中对应的特定分区的目录中。例如,用户选择了A型号的Tuner(校音器),根据解析需求文件获取到的解析结果,服务器将在组件池中选择Tuner型号为A的驱动库文件,并将其放到相应的特定分区目录中存储。

编译单元544,用于将组件编译到平台软件。

具体的,服务器根据解析结果选择对应的组件并存储到对应的特定分区目录后,将组件编译到平台软件中。可利用预先编写的makefile编译规则进行编译。

制作单元546,用于制作生成各个特定分区对应的镜像文件。

具体的,编译完成后,可利用mkuserimg、make_ext4fs等制作镜像工具将几个特定分区制作并生成对应的镜像文件,例如生成service.img、config.img、database.img、customer.img、system.img等与特定分区对应的镜像文件。当生成的特定分区的镜像文件过大时,可利用split等切分指令对镜像文件进行切分,可防止在后续烧录特定分区的镜像文件时,由于镜像文件过大而无法进行烧录 的问题。

打包模块550还用于将各个特定分区对应的镜像文件打包生成bin文件。

具体的,服务器可利用cat指令将生成的特定分区的镜像文件打包生成bin文件,bin文件中可存储有所有特定分区的分区信息及对应的地址信息。采用该打包方式使得在烧录特定分区的镜像文件时可以更好地烧录,在升级时,只需打开bin文件即可自动完成升级,简便了用户操作。

上述一体化云编译系统,能自动根据用户需求从预设的组件池中选择组件对软件进行组装,可随时满足用户对软件的需求,无需研发人员对用户的差异性需求进行处理,减少人力,节约资源,且能减少软件发布出错的可能性。此外,研发人员可直接对功能组件进行开发形成自己的软件产品,更为方便快捷。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1