基于Android的同份源代码兼容各客户需求的方法和装置与流程

文档序号:20874630发布日期:2020-05-26 16:19阅读:209来源:国知局
基于Android的同份源代码兼容各客户需求的方法和装置与流程

本申请涉及代码协同共享技术领域,特别涉及为一种基于android的同份源代码兼容各客户需求的方法和装置。



背景技术:

持续交付(continuousdelivery,cd),是一种软件工程手法,让软件产品的交付过程在一个短周期内进行持续交付,以保证软件源代码可以稳定、持续的保持在随时变动的状况。它的目标在于让软件的构建、测试与发布变得更快以及更频繁,这种方式可以减少软件开发的成本与时间,减少风险。

对于现有持续交付,每个项目都存在差异性,每个项目若想实现完整的交付流程,则需要根据客户每个项目的差异性而专门定制对应的交付流程,以及售卖软件企业所研发的软件产品在细节、功能、页面等需要应客户进行修改调整,之后交付客户,导致软件企业需要付出大量人力成本、时间成本进行调整修改,有时甚至会因为修改调整出现大量不可预见的bug问题。

使用现有的交付技术方案,需要对每个项目单独设计部署流程,虽然程序有使用共性,但是因为每个项目的复杂性和多样性,每承接一个项目,都需要根据项目的复杂度,花费数天的工作量定制对应的交付模型。



技术实现要素:

本申请旨在解决根据不同的客户要求对源代码修改时,各个分支的代码均需修改,从而造成时间和人力成本浪费的技术问题,现提供一种基于android的同份源代码兼容各客户需求的方法和装置。

本申请为解决技术问题采用如下技术手段:

本申请提出一种基于android的同份源代码兼容各客户需求的方法,包括:

在与代码数据库预关联的文件夹中创建子文件夹,其中所述代码数据库存储源代码;

向所述子文件夹中导入源码共享模型和客户patch文件,其中所述源码共享模型为预训练的神经网络模型,所述客户patch文件为根据客户需要文本解析生成的定制化代码;

采用预存于所述源码共享模型中的patch脚本将所述客户patch文件导入至所述源代码中,以生成与所述子文件夹对应关联的定制化源代码;

将所述定制化源代码整合于所述子文件夹中,并将所述子文件夹进行压缩打包生成代码数据包;

交付所述代码数据包。

进一步地,所述向所述子文件夹中导入源码共享模型和客户patch文件的步骤之前,包括:

采用bert模型语义分析预获取的客户需求文本,以识别出各待调整组件对应的组件调整要求,所述客户需求文本为文本数据形式;

根据所述待调整组件与对应的组件调整要求制成客户patch文件。

进一步地,所述采用预存于所述源码共享模型中的patch脚本将所述客户patch文件导入至所述源代码中,以生成与所述子文件夹对应关联的定制化源代码的步骤包括:

识别所述源代码中与所述客户patch文件中的待调整组件对标的代码段;

采用所述源代码共享模型将所述客户patch文件中组件调整要求转换为定制化代码段,并根据所述待调整组件与组件调整要求的关联使对标后的代码段与定制化代码段相关联;

采用所述源码共享模型中的patch脚本通过git的导入指令将所述定制化代码段对应的导入至对标后的代码段中,直至所有制化代码段对应导入至代码段后,形成定制化源代码。

进一步地,所述识别所述源代码中与所述客户patch文件中的待调整组件对标的代码段的步骤包括:

根据所述待调整组件的预设功能性生成对应的第一代码标签;

根据所述第一代码标签从所述源代码中定位出与第一代码标签相同代码的第二代码标签,确定所述源代码中与第二代码标签相关的代码为代码段。

进一步地,所述将所述定制化源代码整合于所述子文件夹中的步骤包括:

从所述代码数据库中复制以生成的定制化源代码,删除在所述代码数据库中已添加至源代码的客户patch文件且保留源代码;

将复制出的定制化源代码整合于所述所述子文件夹中。

本申请还提出一种基于android的同份源代码兼容各客户需求的装置,包括:

创建单元,用于在与代码数据库预关联的文件夹中创建子文件夹,其中所述代码数据库存储源代码;

第一导入单元,用于向所述子文件夹中导入源码共享模型和客户patch文件,其中所述源码共享模型为预训练的神经网络模型,所述客户patch文件为根据客户需要文本解析生成的定制化代码;

第二导入单元,用于采用预存于所述源码共享模型中的patch脚本将所述客户patch文件导入至所述源代码中,以生成与所述子文件夹对应关联的定制化源代码;

整合单元,用于将所述定制化源代码整合于所述子文件夹中,并将所述子文件夹进行压缩打包生成代码数据包;

交付单元,用于交付所述代码数据包。

进一步地,基于android的同份源代码兼容各客户需求的装置包括:

语义分析单元,用于采用bert模型语义分析预获取的客户需求文本,以识别出各待调整组件对应的组件调整要求,所述客户需求文本为文本数据形式;

patch制作单元,用于根据所述待调整组件与对应的组件调整要求制成客户patch文件。

进一步地,所述第二导入单元包括:

识别模块,用于识别所述源代码中与所述客户patch文件中的待调整组件对标的代码段;

代码转换模块,用于采用所述源代码共享模型将所述客户patch文件中组件调整要求转换为定制化代码段,并根据所述待调整组件与组件调整要求的关联使对标后的代码段与定制化代码段相关联;

导入模块,用于采用所述源码共享模型中的patch脚本通过git的导入指令将所述定制化代码段对应的导入至对标后的代码段中,直至所有制化代码段对应导入至代码段后,形成定制化源代码。

进一步地,所述识别模块包括:

标签生成子模块,用于根据所述待调整组件的预设功能性生成对应的第一代码标签;

代码定位子模块,用于根据所述第一代码标签从所述源代码中定位出与第一代码标签相同代码的第二代码标签,确定所述源代码中与第二代码标签相关的代码为代码段。

进一步地,所述基于android的同份源代码兼容各客户需求的装置包括:

删除单元,用于将存储在上述源码共享模型中的定制化源代码删除。

本申请提供了基于android的同份源代码兼容各客户需求的方法和装置,具有以下有益效果:

在与代码数据库预关联的文件夹中创建子文件夹,以根据不同的客户创建对应的文件夹;然后,向子文件夹中导入源码共享模型和客户patch文件,并采用预存于源码共享模型中的patch脚本将客户patch文件导入至源代码中,以生成与子文件夹对应关联的定制化源代码,从而根据客户要求实现对应代码的定制;最终,将定制化源代码整合于子文件夹中,并将子文件夹进行压缩打包生成代码数据包,再交付代码数据包,通过将代码数据库中的定制后的源代码整合至对应的客户子文件夹中,实现代码数据库中同份源代码能够兼容各客户需求的效果,达到解决根据不同的客户要求对源代码修改时,各个分支的代码均需修改,以造成时间和人力成本浪费问题的效果。

附图说明

图1为本申请基于android的同份源代码兼容各客户需求的方法一个实施例的流程示意图;

图2为本申请基于android的同份源代码兼容各客户需求的方法一个实施例的流程示意图;

图3为本申请基于android的同份源代码兼容各客户需求的方法中组件的示意图;

图4为本申请基于android的同份源代码兼容各客户需求的装置的结构框图。

本申请为目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

下面将结合本申请的实施例中的附图,对本申请的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

参考附图1,为本申请第一实施例中的基于android的同份源代码兼容各客户需求的方法的流程示意图;

本申请提出一种服务器,服务器包括服务器处理终端,以该服务器作为执行主体,服务器执行基于android的同份源代码兼容各客户需求的方法。

本申请提出一种基于android的同份源代码兼容各客户需求的方法,包括:

s1,在与代码数据库预关联的文件夹中创建子文件夹,其中代码数据库存储源代码;

代码数据库设于服务器,当开发集群将源代码编码完成时,服务器接收开发集群上传的源代码,并将源代码存储于代码数据库中。

服务器将代码数据库与一文件夹进行关联,使服务器能够通过文件夹将代码数据库中的源代码导入至该文件夹内;基于此,为实现同份源代码兼容各客户需求,在该文件夹中设立子文件夹,子文件夹与对应客户数量一致,且子文件夹的命名以客户名称或编码进行命名;在创建对应数量的子文件夹并命名后,后续会根据各客户的需求对应进行源代码的调整修改,从而得到各个客户对应的定制化源代码,随后将定制化源代码导入至与其相对应的子文件夹中整合,最终交付,从而实现同份源代码兼容各客户需求的效果。

s2,向子文件夹中导入源码共享模型和客户patch文件,其中源码共享模型为预训练的神经网络模型,客户patch文件为根据客户需要文本解析生成的定制化代码;

在服务器根据客户创建对应的子文件夹后,向子文件夹中导入源码共享模型和客户patch文件,具体的,上述源码共享模型为工作人员在服务器内预先训练的神经网络模型,上述的客户patch文件为根据客户需求生成的代码文本;

上述源码共享模型的训练方法为:

服务器获取工作人员输入的模型构建代码文本,以根据模型构建代码文本构成初步模型,该初步模型包括文本存储层、代码暂存层和代码转化层,其中文本存储层用于记录客户需求文本,代码暂存层用于暂时存储源代码,代码转化层用于根据文本的功能性要求生成对应的代码文本;

初步模型接收工作人员输入的若干训练文本,该训练文本包括功能性要求文本,功能性要求文本例如:调整背景颜色为红色,将logo上移10px等。

采用文本存储层存储上述若干训练文本,代码暂存层复制代码数据库中的源代码进行暂存,代码转换层根据训练文本的功能性要求进行代码转换,代码转换例如:调整背景颜色为红色,即为background=255,0,0;将文本存储层、代码暂存层和代码转化层相关联,从而构建得到源码共享模型。

s3,采用预存于源码共享模型中的patch脚本将客户patch文件导入至源代码中,以生成与子文件夹对应关联的定制化源代码;

在服务器将源码共享模型和客户patch文件导入至对应的子文件夹后,采用预存于源码共享模型中的patch脚本将客户patch文件导入至源代码中。

由上述可知,源码共享模型中的代码暂存层存储有源代码,服务器通过patch脚本将客户patch文件写入至该代码暂存层内源代码中,从而生成定制化源代码;如附图2,附图2为本申请的基于android的同份源代码兼容各客户需求的方法步骤s3的流程示意图,具体实施方式如下:

s31,识别源代码中与客户patch文件中的待调整组件对标的代码段;

客户patch文件包括待调整组件和组件调整要求,参考附图3,即为客户patch文件的待调整组件的示意图;待调整组件为客户要求的源代码中需要进行调整的某一组件,组件调整要求为要求该组件调整的内容文本;

s32,采用源代码共享模型将客户patch文件中组件调整要求转换为定制化代码段,并根据待调整组件与组件调整要求的关联使对标后的代码段与定制化代码段相关联;

由上述可知,源代码共享模型中的代码转换层根据组件调整要求的功能性转换为对应的定制化代码段。

因为待调整组件与组件调整要求是由同一客户patch文件拆分而来具备关联性,则根据待调整组件与组件调整要求的关联使对标后的代码段与定制化代码段相关联,以便于后续将定制化代码段调整修改至对标后的代码段中,实现功能性调整。

s33,采用源码共享模型中的patch脚本通过git的导入指令将定制化代码段对应的导入至对标后的代码段中,直至所有制化代码段对应导入至代码段后,形成定制化源代码。

源码共享模型通过patch脚本采用git导入指令,将定制化代码段对应的导入至对标后的代码段中,上述的git导入指令为现有技术,本说明书不做赘述;

待所有的制化代码段对应导入至源代码的代码段后,形成定制化源代码。可以理解,该定制化源代码暂存于源码共享模型中的代码暂存层。

s4,将定制化源代码整合于子文件夹中,并将子文件夹进行压缩打包生成代码数据包;

服务器通过源码共享模型生成与客户要求文本对应的定制化源代码后,从源代码共享模型中的代码暂存层中调取定制化源代码,并整合至子文件夹中,随后服务器对该子文件件进行压缩打包,从而形成代码数据包。

s5,交付代码数据包。

服务器将代码数据包交付至客户的目标主机,实现交付过程。

在一个实施例中,向子文件夹中导入源码共享模型和客户patch文件的步骤之前,包括:

采用bert模型语义分析预获取的客户需求文本,以识别出各待调整组件对应的组件调整要求,客户需求文本为文本数据形式;

根据待调整组件与对应的组件调整要求制成客户patch文件。

上述的bert模型为谷歌2018年开源的语义识别模型,通过其语义分析客户需求文本,得到各待调整组件对应的组件调整要求。

在一个实施例中,识别源代码中与客户patch文件中的待调整组件对标的代码段的步骤包括:

根据待调整组件的预设功能性生成对应的第一代码标签;

根据第一代码标签从源代码中定位出与第一代码标签相同代码的第二代码标签,确定源代码中与第二代码标签相关的代码为代码段。

上述的待调整组件可以是logo等组件,例如:当待调整组件为logo时,则服务器生成的第一代码标签包括<divlogo>、<classlogo>等第一代码标签;根据该第一代码标签从代码暂存层的源代码中确定出相同代码的第二代码标签,当通过第一代码标签确定源代码中的第二代码标签后,服务器能够将组件调整要求对应的定制化代码段调整添加至第二代码标签相关联的代码段中,从而实现组件调节。

将定制化代码段调整添加至第二代码标签相关联的代码段中的方式:通过patch脚本添加如下git指令,添加的目的是为了在lunch的时候,可以执行到xxx/auto_patch/auto_patch.sh脚本将定制化代码段打入代码段中(其中,xxx是子文件夹的名称)

在一个实施例中,将定制化源代码整合于子文件夹中的步骤之后包括:

将存储在上述源码共享模型中的定制化源代码删除。

由上述可知,服务器将代码数据库中的源代码复制导入至源码共享模型中的代码暂存层中,当生成好的定制化源代码整合至子文件夹之后,服务器将源码共享模型的代码暂存层中的定制化源代码删除。

参考附图4,为本申请提出的一种基于android的同份源代码兼容各客户需求的装置的结构框图,

一种基于android的同份源代码兼容各客户需求的装置包括:

创建单元1,用于在与代码数据库预关联的文件夹中创建子文件夹,其中代码数据库存储源代码;

第一导入单元2,用于向子文件夹中导入源码共享模型和客户patch文件,其中源码共享模型为预训练的神经网络模型,客户patch文件为根据客户需要文本解析生成的定制化代码;

第二导入单元3,用于采用预存于源码共享模型中的patch脚本将客户patch文件导入至源代码中,以生成与子文件夹对应关联的定制化源代码;

整合单元4,用于将定制化源代码整合于子文件夹中,并将子文件夹进行压缩打包生成代码数据包;

交付单元5,用于交付代码数据包。

在一个实施例中,基于android的同份源代码兼容各客户需求的装置包括:

语义分析单元,用于采用bert模型语义分析预获取的客户需求文本,以识别出各待调整组件对应的组件调整要求,客户需求文本为文本数据形式;

patch制作单元,用于根据待调整组件与对应的组件调整要求制成客户patch文件

在一个实施例中,上述第二导入单元3包括:

识别模块,用于识别源代码中与客户patch文件中的待调整组件对标的代码段;

代码转换模块,用于采用源代码共享模型将客户patch文件中组件调整要求转换为定制化代码段,并根据待调整组件与组件调整要求的关联使对标后的代码段与定制化代码段相关联;

导入模块,用于采用源码共享模型中的patch脚本通过git的导入指令将定制化代码段对应的导入至对标后的代码段中,直至所有制化代码段对应导入至代码段后,形成定制化源代码。

在一个实施例中,上述识别模块包括:

标签生成子模块,用于根据待调整组件的预设功能性生成对应的第一代码标签;

代码定位子模块,用于根据第一代码标签从源代码中定位出与第一代码标签相同代码的第二代码标签,确定源代码中与第二代码标签相关的代码为代码段

在一个实施例中,基于android的同份源代码兼容各客户需求的装置包括:

删除单元,用于将存储在上述源码共享模型中的定制化源代码删除。

综上所述,在与代码数据库预关联的文件夹中创建子文件夹,以根据不同的客户创建对应的文件夹;然后,向子文件夹中导入源码共享模型和客户patch文件,并采用预存于源码共享模型中的patch脚本将客户patch文件导入至源代码中,以生成与子文件夹对应关联的定制化源代码,从而根据客户要求实现对应代码的定制;最终,将定制化源代码整合于子文件夹中,并将子文件夹进行压缩打包生成代码数据包,再交付代码数据包,通过将代码数据库中的定制后的源代码整合至对应的客户子文件夹中,实现代码数据库中同份源代码能够兼容各客户需求的效果。

尽管已经示出和描述了本申请的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本申请的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本申请的范围由所附权利要求及其等同物限定。

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