CN115794116A - 动态化项目的发布方法和装置、存储介质及电子装置 - Google Patents
动态化项目的发布方法和装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN115794116A CN115794116A CN202211606707.8A CN202211606707A CN115794116A CN 115794116 A CN115794116 A CN 115794116A CN 202211606707 A CN202211606707 A CN 202211606707A CN 115794116 A CN115794116 A CN 115794116A
- Authority
- CN
- China
- Prior art keywords
- dynamic
- project
- compiling
- parameter
- compiled
- 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
Links
Images
Abstract
本申请公开了一种动态化项目的发布方法和装置、存储介质及电子装置,涉及智慧家庭技术领域,该动态化项目的发布方法包括:在接收到编译指令的情况下,校验所述编译指令中包含的第一参数是否正确,其中,所述第一参数用于指示基于目标框架得到的动态化项目的存储路径;在确定所述第一参数正确的情况下,根据所述编译指令对所述动态化项目进行编译;将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包;将所述动态化业务包发送给第一对象进行测试,并在接收到所述第一对象反馈的测试结果为成功的情况下,将所述动态化业务包发布至目标服务器。
Description
技术领域
本申请涉及智慧家庭技术领域,具体而言,涉及一种动态化项目的发布方法和装置、存储介质及电子装置。
背景技术
Flutter跨端技术一经推出便在业内赢得了不错的口碑,它在“多端一致”和“渲染性能”上的优势让其他跨端方案很难比拟。虽然Flutter仍处在发展阶段,很多大型互联网企业都无法毫无顾虑地让全线APP接入,而其中最主要的顾虑是包的大小与动态化。动态化代表着更短的需求上线路径,代表着大大压缩了原始包的大小,从而获得更高的用户下载意向,也代表这更健全的线上质量维护体系。
而要将Flutter动态化快速的在业务中进行推广,必须要有一套完整的工程化流程,涵盖编译、打包、发布的一整套方案。而Flutter官方曾经推出了Code Push方案,具体为:下载替换Flutter编译产物,替换APP安装目录下的编译产物,来实现动态化。但此方案实现动态化性能并不会达到令人满意的效果,并且存在安全隐患。此外,该方案的局限性也十分明显,对于Native-Flutter混合APP的支持并不友好,无法进行灰度等业务定制操作。
针对现有技术中,目前Flutter仍处在发展阶段,缺乏一套完整的、涵盖编译、打包、发布的工程化流程,导致很多企业在使用时仍存在顾虑等问题,尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种动态化项目的发布方法和装置、存储介质及电子装置,以至少解决现有技术中,目前Flutter仍处在发展阶段,缺乏一套完整的、涵盖编译、打包、发布的工程化流程,导致很多企业在使用时仍存在顾虑的问题。
根据本发明实施例的一个实施例,提供了一种动态化项目的发布方法,包括:在接收到编译指令的情况下,校验所述编译指令中包含的第一参数是否正确,其中,所述第一参数用于指示基于目标框架得到的动态化项目的存储路径;在确定所述第一参数正确的情况下,根据所述编译指令对所述动态化项目进行编译;将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包;将所述动态化业务包发送给第一对象进行测试,并在接收到所述第一对象反馈的测试结果为成功的情况下,将所述动态化业务包发布至目标服务器。
在一个示例性实施例中,根据所述编译指令对所述动态化项目进行编译,包括:根据所述第一参数所指示的存储路径获取所述动态化项目;根据所述编译指令为所述动态化项目添加依赖文件和配置文件,其中,所述依赖文件用于指示所述动态化项目所使用的依赖,所述配置文件至少用于配置所述动态化项目中需要进行编译的文件;根据所述依赖文件和所述配置文件对所述动态化项目进行编译。
在一个示例性实施例中,将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包,包括:根据所述编译指令确定所述动态化业务包的第二存储路径;确定所述动态化项目的配置文件中是否包含预设关键字段,其中,所述预设关键字段用于指示所述动态化项目的预设关键信息;在确定所述配置文件包含所述预设关键字段的情况下,根据所述配置文件和所述第二存储路径将所述编译后的动态化项目进行打包,得到所述动态化业务包。
在一个示例性实施例中,根据所述编译指令确定所述动态化业务包的第二存储路径,包括:确定所述编译指令中是否存在第二参数,其中,所述第二参数用于指示所述动态化业务包的存储路径;在所述编译指令中存在所述第二参数的情况下,将所述第二参数所指示的存储路径确定为所述第二存储路径;在所述编译指令中不存在所述第二参数的情况下,将所述第一参数所指示的存储路径确定为所述第二存储路径。
在一个示例性实施例中,根据所述配置文件和所述第二存储路径将所述编译后的动态化项目进行打包,得到所述动态化业务包,包括:从所述配置文件中获取所述动态化项目的项目名称,其中,所述预设关键字段包括所述项目名称;遍历所述动态化项目的所有代码文件,在所述所有代码文件中查找预设注解字段,其中,所述预设注解字段用于标识所述动态化项目;根据所述项目名称和所述预设注解字段将所述编译后的动态化项目进行打包,并将得到的所述动态化业务包按照所述第二存储路径进行存储,其中,所述动态化业务包的索引为所述预设注解字段,所述动态化业务包的名称为所述项目名称。
在一个示例性实施例中,将所述动态化业务包发布至目标服务器之后,所述方法还包括:将所述动态化业务包内置到目标应用中,得到内置后的动态化业务包;在所述目标应用出现预设异常状态的情况下,控制所述目标应用调用所述内置后的动态化业务包。
在一个示例性实施例中,将所述动态化业务包发送给第一对象进行测试之后,所述方法还包括:在接收到所述第一对象反馈的测试结果为失败的情况下,接收所述第一对象发送的测试报告,其中,所述测试报告用于指示所述动态化项目中存在的问题;将所述测试报告发送给第二对象,以指示所述第二对象根据所述测试报告对所述动态化项目进行调整。
根据本发明实施例的另一个实施例,还提供了一种动态化项目的发布装置,包括:校验模块,用于在接收到编译指令的情况下,校验所述编译指令中包含的第一参数是否正确,其中,所述第一参数用于指示基于目标框架得到的动态化项目的存储路径;编译模块,用于在确定所述第一参数正确的情况下,根据所述编译指令对所述动态化项目进行编译;打包模块,用于将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包;发布模块,用于将所述动态化业务包发送给第一对象进行测试,并在接收到所述第一对象反馈的测试结果为成功的情况下,将所述动态化业务包发布至目标服务器。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述动态化项目的发布方法。
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的动态化项目的发布方法。
在本申请实施例中,通过在接收到编译指令的情况下,校验编译指令中携带的存储路径是否正确,在正确的情况下,根据编译指令对动态化项目进行编译;然后把编译后的动态化项目进行打包,以得到动态化业务包;将动态化业务包发送给第一对象进行测试,在测试通过的情况下,将该动态化业务包发布至目标服务器;采用上述技术方案,解决了现有技术中,目前Flutter仍处在发展阶段,缺乏一套完整的、涵盖编译、打包、发布的工程化流程,导致很多企业在使用时仍存在顾虑的问题;实现了提供一套基于自研的Flutter动态化整体方案,完成动态化业务代码编译、打包、发布全流程的技术效果。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的动态化项目的发布方法的硬件环境示意图;
图2是根据本发明实施例的一种可选的动态化项目的发布方法的流程图;
图3是根据本发明实施例的一种可选的动态化项目的发布方法的编译、打包流程图;
图4是根据本发明实施例的一种可选的动态化项目的发布方法的发布流程图;
图5是根据本发明实施例的一种可选的动态化项目的发布装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种动态化项目的发布方法。该动态化项目的发布方法广泛应用于智慧家庭(Smart Home)、智能家居、智能家用设备生态、智慧住宅(Intelligence House)生态等全屋智能数字化控制应用场景。可选地,在本实施例中,上述动态化项目的发布方法可以应用于如图1所示的由终端设备102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端设备102进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,可在服务器上或独立于服务器配置云计算和/或边缘计算服务,用于为服务器104提供数据运算服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端设备102可以并不限定于为PC、手机、平板电脑、智能空调、智能烟机、冰箱设备、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。
在本实施例中提供了一种动态化项目的发布方法,应用于上述计算机系统,图2是根据本发明实施例的一种可选的动态化项目的发布方法的流程图,该流程包括如下步骤:
步骤S202,在接收到编译指令的情况下,校验所述编译指令中包含的第一参数是否正确,其中,所述第一参数用于指示基于目标框架得到的动态化项目的存储路径;
需要说明的是,对于动态化项目的编译、打包流程,可以通过预先编写好的编译脚本来完成,通过将一系列命令固定在脚本中,通过运行脚本即可自动完成对动态化项目的编译和打包工作。
需要说明的是,上述第一参数可以理解为上述编译脚本的入参。
步骤S204,在确定所述第一参数正确的情况下,根据所述编译指令对所述动态化项目进行编译;
需要说明的是,上述第一参数正确可以理解为入参存在且可以根据该路径找到该动态化项目,第一参数错误可以理解为入参不存在或通过该入参对应的路径信息无法找到动态化项目。
步骤S206,将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包;
步骤S208,将所述动态化业务包发送给第一对象进行测试,并在接收到所述第一对象反馈的测试结果为成功的情况下,将所述动态化业务包发布至目标服务器。
需要说明的是,上述目标服务器可以理解为企业的私有服务器,还可以是其它服务器,本申请对此不作限制。
需要说明的是,上述测试结果为成功可以理解为第一对象进行测试后,该动态化业务包存在的bug数小于预设阈值或该动态化业务包可以正常运行,本申请对此不作限制。
在本申请实施例中,通过在接收到编译指令的情况下,校验编译指令中携带的存储路径是否正确,在正确的情况下,根据编译指令对动态化项目进行编译;然后把编译后的动态化项目进行打包,以得到动态化业务包;将动态化业务包发送给第一对象进行测试,在测试通过的情况下,将该动态化业务包发布至目标服务器;采用上述技术方案,解决了现有技术中,目前Flutter仍处在发展阶段,缺乏一套完整的、涵盖编译、打包、发布的工程化流程,导致很多企业在使用时仍存在顾虑的问题;实现了提供一套基于自研的Flutter动态化整体方案,完成动态化业务代码编译、打包、发布全流程的技术效果。
可选的,步骤S204:根据所述编译指令对所述动态化项目进行编译,包括:根据所述第一参数所指示的存储路径获取所述动态化项目;根据所述编译指令为所述动态化项目添加依赖文件和配置文件,其中,所述依赖文件用于指示所述动态化项目所使用的依赖,所述配置文件至少用于配置所述动态化项目中需要进行编译的文件;根据所述依赖文件和所述配置文件对所述动态化项目进行编译。
对于动态化项目本身所携带的依赖文件,其中配置的依赖可能不够完整,且不会配置在对动态化项目进行编译时所需要的依赖,因此,我们通过脚本为该动态化项目添加依赖文件,以完善编译该动态化项目所需要的依赖;并为动态化项目添加配置文件,以根据配置文件确定出该动态化项目需要进行编译的文件有哪些;添加依赖文件和配置文件之后,再对该动态化项目进行编译。
可选的,执行步骤S206:将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包,包括:根据所述编译指令确定所述动态化业务包的第二存储路径;确定所述动态化项目的配置文件中是否包含预设关键字段,其中,所述预设关键字段用于指示所述动态化项目的预设关键信息;在确定所述配置文件包含所述预设关键字段的情况下,根据所述配置文件和所述第二存储路径将所述编译后的动态化项目进行打包,得到所述动态化业务包。
对编译后的动态化项目进行打包的过程包括:先根据编译指令确定出打包得到的动态化业务包的第二存储路径,然后对该编译后的动态化项目进行解析,以确定该配置文件中是否包含有所有预设关键字段,若包含则根据该配置文件和该第二存储路径将该编译后的动态化项目进行打包,从而得到该动态化业务包,该动态化业务包存储于该第二存储路径。
需要说明的是,上述预设关键字段包括项目名称,还可以包括该动态化项目的其他关键信息,本申请对此不作限制。
可选的,上述确定步骤:根据所述编译指令确定所述动态化业务包的第二存储路径,包括:确定所述编译指令中是否存在第二参数,其中,所述第二参数用于指示所述动态化业务包的存储路径;在所述编译指令中存在所述第二参数的情况下,将所述第二参数所指示的存储路径确定为所述第二存储路径;在所述编译指令中不存在所述第二参数的情况下,将所述第一参数所指示的存储路径确定为所述第二存储路径。
根据编译指令确定动态化业务包的第二存储路径的过程包括:先确定编译指令中是否存在第二参数,即确定是否存在用于指示打包得到的动态化业务包的存储路径的入参;若存在该第二参数,则将该第二参数所指示的存储路径确定为第二存储路径;若不存在第二参数,则将第一参数所指示的存储路径确定为第二存储路径。
可选的,上述打包步骤:根据所述配置文件和所述第二存储路径将所述编译后的动态化项目进行打包,得到所述动态化业务包,包括:从所述配置文件中获取所述动态化项目的项目名称,其中,所述预设关键字段包括所述项目名称;遍历所述动态化项目的所有代码文件,在所述所有代码文件中查找预设注解字段,其中,所述预设注解字段用于标识所述动态化项目;根据所述项目名称和所述预设注解字段将所述编译后的动态化项目进行打包,并将得到的所述动态化业务包按照所述第二存储路径进行存储,其中,所述动态化业务包的索引为所述预设注解字段,所述动态化业务包的名称为所述项目名称。
上述打包步骤,包括:先从配置文件中获取该动态化项目的项目名称,然后遍历扫描该动态化项目的所有代码文件,以确定是否存在带有预设注解字段的代码文件,以确定该“动态化项目”是否是“动态化”的;若存在,则根据该项目名称和该预设注解字段来将该编译后的动态化项目进行打包,并且将得到的动态化业务包按照该第二存储路径进行存储,且该动态化业务包的key是该预设注解字段对应的值,动态化业务包的名称是该项目名称。
需要说明的是,遍历代码文件可以通过所有文件的后缀来确定出代码文件,代码文件的后缀可以是“.dart”,本申请对此不作限制。
可选的,执行上述步骤S208:将所述动态化业务包发布至目标服务器之后,所述方法还包括:将所述动态化业务包内置到目标应用中,得到内置后的动态化业务包;在所述目标应用出现预设异常状态的情况下,控制所述目标应用调用所述内置后的动态化业务包。
APP在发布新版本是,都会把需要动态化的业务提前内置进APP中,以保证APP在运行更新后的动态化业务时,一旦页面出现错误异常,如与私有服务器的数据交互出现异常等情况,为了避免出现这类问题时给用户带来不好的使用体验;用户在退出页面后再进入时,会自动进入内置的动态化业务包,从而最大化地降低对用户的干扰。
需要说明的是,上述预设异常状态可以为统一发布平台服务宕机、网络请求中断等,还可以是其他异常状态,本申请对此不作限制。
在一个示例性实施例中,执行上述步骤S208:将所述动态化业务包发送给第一对象进行测试之后,所述方法还包括:在接收到所述第一对象反馈的测试结果为失败的情况下,接收所述第一对象发送的测试报告,其中,所述测试报告用于指示所述动态化项目中存在的问题;将所述测试报告发送给第二对象,以指示所述第二对象根据所述测试报告对所述动态化项目进行调整。
若第一对象对动态化业务包进行测试反馈的测试结果为失败,则可以理解为该动态化项目出现的bug数过多,或该动态化项目在测试环境下无法正常运行;第一对象会根据测试结果反馈一个测试报告;将该测试报告转发给第二对象,从而第二对象可以根据该测试报告中所指出的问题进行针对性调整,以修复该动态化项目。
在本实施例中提供了一种可选的动态化项目的发布方式,图3是根据本发明实施例的一种可选的动态化项目的发布方法的编译、打包流程图,如图3所示,具体包括以下步骤:
步骤1:业务方开发完动态化页面、自测后,提交代码至代码服务器,并打tag。
步骤2:服务器接收打tag指令后,自动运行命令行脚本,开始进行编译工作,命令行脚本可以为dart run ast2dsl/lib/ast2dsl.dart–input xxx/xxx/--output xxx/xxx/。
步骤3:解析命令行参数。
步骤4:校验参数(相当于上述第一参数)是否合法,若不合法,则执行步骤5;若合法,则执行步骤6。
步骤5:参数非法,打印错误信息,返回,执行步骤20。
步骤6:根据命令行参数,获取动态化项目根路径(相当于上述第一路径信息)。
步骤7:执行脚本,为动态化项目增加build_runner依赖。
步骤8:为动态化项目增加build.yaml文件,配置需要进行编译的文件。
步骤9:执行编译命令,将adrt文件转化为DSL JSON文件,同时标识出外部符号。
步骤10:获取最终打包生成zip的路径(相当于上述第二路径信息)。
步骤11:开始解析动态化项目。
步骤12:校验yaml文件(相当于上述配置文件)是否合法,若非法,则执行步骤13,若合法则执行步骤14。
步骤13:yaml文件非法,打印错误信息,返回执行步骤20。
步骤14:获取动态化项目的package name(相当于上述项目名称)。
步骤15:扫描项目lib目录下的所有的.dart文件(相当于上述代码文件)。
步骤16:查看是否有带注解(相当于上述预设注解字段)的文件,若无注解则执行步骤17,若有注解则执行步骤18。
步骤17:无注解文件,打印错误信息,返回执行步骤20。
步骤18:生成以注解作为key,文件的全限定名作为value的配置文件。
步骤19:保存DSL JSON,并打包生成zip文件,返回其路径。
步骤20:结束。
需要说明的是,上述全限定名可以为package name(相当于上述项目名称),也可以为(package name+文件路径),本申请对此不作限制。
通过上述步骤,通过Flutter动态化中的工程化方案能够加速发布周期,开发人员在动态化业务开发完成后,能够通过工程化第一时间将业务代码进行打包,提测到测试人员,测试人员快速响应后,在没有问题的情况下,可以第一时间进行发布,更新动态化业务。
进一步地,本申请还提出了另一个实施例,本申请实施例结合图4来进行说明,如图4所示,图4是一种可选的动态化项目的发布方法的发布流程图,具体包括以下步骤:
步骤1:开始。
步骤2:完成上述编译、打包过程后,会产生一个zip包存储路径以及对应的tag号。
步骤3:相关人员(开发同学/项目同学)在统一发布平台中,找到需要进行提测的动态化业务包。
步骤4:选择需要进行提测的动态化项目对应的tag号以及对应的要发布的APP版本。
步骤5:测试同学开始测试工作。
步骤6:确定测试是否通过,若通过则执行步骤7;若未通过则执行步骤8.
步骤7:将该动态化业务包进行发布,用户启动APP后,就可以看到发布后的业务。
步骤8:返回开发人员进行修改。
步骤9:结束。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
在本实施例中还提供了动态化项目的发布装置,该动态化项目的发布装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的一种可选的动态化项目的发布装置的结构框图;如图5所示,包括:
校验模块52,用于在接收到编译指令的情况下,校验所述编译指令中包含的第一参数是否正确,其中,所述第一参数用于指示基于目标框架得到的动态化项目的存储路径;
需要说明的是,对于动态化项目的编译、打包流程,可以通过预先编写好的编译脚本来完成,通过将一系列命令固定在脚本中,通过运行脚本即可自动完成对动态化项目的编译和打包工作。
需要说明的是,上述第一参数可以理解为上述编译脚本的入参。
编译模块54,用于在确定所述第一参数正确的情况下,根据所述编译指令对所述动态化项目进行编译;
需要说明的是,上述第一参数正确可以理解为入参存在且可以根据该路径找到该动态化项目,第一参数错误可以理解为入参不存在或通过该入参对应的路径信息无法找到动态化项目。
打包模块56,用于将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包;
发布模块58,用于将所述动态化业务包发送给第一对象进行测试,并在接收到所述第一对象反馈的测试结果为成功的情况下,将所述动态化业务包发布至目标服务器。
需要说明的是,上述目标服务器可以理解为企业的私有服务器,还可以是其他服务器,本申请对此不作限制。
需要说明的是,上述测试结果为成功可以理解为第一对象进行测试后,该动态化业务包存在的bug数小于预设阈值或该动态化业务包可以正常运行,本申请对此不作限制。
通过上述装置,通过在接收到编译指令的情况下,校验编译指令中携带的存储路径是否正确,在正确的情况下,根据编译指令对动态化项目进行编译;然后把编译后的动态化项目进行打包,以得到动态化业务包;将动态化业务包发送给第一对象进行测试,在测试通过的情况下,将该动态化业务包发布至目标服务器;采用上述技术方案,解决了现有技术中,目前Flutter仍处在发展阶段,缺乏一套完整的、涵盖编译、打包、发布的工程化流程,导致很多企业在使用时仍存在顾虑的问题;实现了提供一套基于自研的Flutter动态化整体方案,完成动态化业务代码编译、打包、发布全流程的技术效果。
可选的,编译模块54,还用于根据所述第一参数所指示的存储路径获取所述动态化项目;根据所述编译指令为所述动态化项目添加依赖文件和配置文件,其中,所述依赖文件用于指示所述动态化项目所使用的依赖,所述配置文件至少用于配置所述动态化项目中需要进行编译的文件;根据所述依赖文件和所述配置文件对所述动态化项目进行编译。
对于动态化项目本身所携带的依赖文件,其中配置的依赖可能不够完整,且不会配置在对动态化项目进行编译时所需要的依赖,因此,我们通过脚本为该动态化项目添加依赖文件,以完善编译该动态化项目所需要的依赖;并为动态化项目添加配置文件,以根据配置文件确定出该动态化项目需要进行编译的文件有哪些;添加依赖文件和配置文件之后,再对该动态化项目进行编译。
可选的,打包模块56,还用于根据所述编译指令确定所述动态化业务包的第二存储路径;确定所述动态化项目的配置文件中是否包含预设关键字段,其中,所述预设关键字段用于指示所述动态化项目的预设关键信息;在确定所述配置文件包含所述预设关键字段的情况下,根据所述配置文件和所述第二存储路径将所述编译后的动态化项目进行打包,得到所述动态化业务包。
对编译后的动态化项目进行打包的过程包括:先根据编译指令确定出打包得到的动态化业务包的第二存储路径,然后对该编译后的动态化项目进行解析,以确定该配置文件中是否包含有所有预设关键字段,若包含则根据该配置文件和该第二存储路径将该编译后的动态化项目进行打包,从而得到该动态化业务包,该动态化业务包存储于该第二存储路径。
需要说明的是,上述预设关键字段包括项目名称,还可以包括该动态化项目的其他关键信息,本申请对此不作限制。
可选的,打包模块56,还用于确定所述编译指令中是否存在第二参数,其中,所述第二参数用于指示所述动态化业务包的存储路径;在所述编译指令中存在所述第二参数的情况下,将所述第二参数所指示的存储路径确定为所述第二存储路径;在所述编译指令中不存在所述第二参数的情况下,将所述第一参数所指示的存储路径确定为所述第二存储路径。
根据编译指令确定动态化业务包的第二存储路径的过程包括:先确定编译指令中是否存在第二参数,即确定是否存在用于指示打包得到的动态化业务包的存储路径的入参;若存在该第二参数,则将该第二参数所指示的存储路径确定为第二存储路径;若不存在第二参数,则将第一参数所指示的存储路径确定为第二存储路径。
可选的,打包模块56,还用于从所述配置文件中获取所述动态化项目的项目名称,其中,所述预设关键字段包括所述项目名称;遍历所述动态化项目的所有代码文件,在所述所有代码文件中查找预设注解字段,其中,所述预设注解字段用于标识所述动态化项目;根据所述项目名称和所述预设注解字段将所述编译后的动态化项目进行打包,并将得到的所述动态化业务包按照所述第二存储路径进行存储,其中,所述动态化业务包的索引为所述预设注解字段,所述动态化业务包的名称为所述项目名称。
上述打包步骤,包括:先从配置文件中获取该动态化项目的项目名称,然后遍历扫描该动态化项目的所有代码文件,以确定是否存在带有预设注解字段的代码文件,以确定该“动态化项目”是否是“动态化”的;若存在,则根据该项目名称和该预设注解字段来将该编译后的动态化项目进行打包,并且将得到的动态化业务包按照该第二存储路径进行存储,且该动态化业务包的key是该预设注解字段对应的值,动态化业务包的名称是该项目名称。
需要说明的是,遍历代码文件可以通过所有文件的后缀来确定出代码文件,代码文件的后缀可以是“.dart”,本申请对此不作限制。
可选的,发布模块58,还用于将所述动态化业务包发布至目标服务器之后,将所述动态化业务包内置到目标应用中,得到内置后的动态化业务包;在所述目标应用出现预设异常状态的情况下,控制所述目标应用调用所述内置后的动态化业务包。
APP在发布新版本是,都会把需要动态化的业务提前内置进APP中,以保证APP在运行更新后的动态化业务时,一旦页面出现错误异常,如与私有服务器的数据交互出现异常等情况,为了避免出现这类问题时给用户带来不好的使用体验;用户在退出页面后再进入时,会自动进入内置的动态化业务包,从而最大化地降低对用户的干扰。
需要说明的是,上述预设异常状态可以为统一发布平台服务宕机、网络请求中断等,还可以是其他异常状态,本申请对此不作限制。
在一个示例性实施例中,发布模块58,还用于将所述动态化业务包发送给第一对象进行测试之后,在接收到所述第一对象反馈的测试结果为失败的情况下,接收所述第一对象发送的测试报告,其中,所述测试报告用于指示所述动态化项目中存在的问题;将所述测试报告发送给第二对象,以指示所述第二对象根据所述测试报告对所述动态化项目进行调整。
若第一对象对动态化业务包进行测试反馈的测试结果为失败,则可以理解为该动态化项目出现的bug数过多,或该动态化项目在测试环境下无法正常运行;第一对象会根据测试结果反馈一个测试报告;将该测试报告转发给第二对象,从而第二对象可以根据该测试报告中所指出的问题进行针对性调整,以修复该动态化项目。
本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,在接收到编译指令的情况下,校验所述编译指令中包含的第一参数是否正确,其中,所述第一参数用于指示基于目标框架得到的动态化项目的存储路径;
S2,在确定所述第一参数正确的情况下,根据所述编译指令对所述动态化项目进行编译;
S3,将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包;
S4,将所述动态化业务包发送给第一对象进行测试,并在接收到所述第一对象反馈的测试结果为成功的情况下,将所述动态化业务包发布至目标服务器。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,在接收到编译指令的情况下,校验所述编译指令中包含的第一参数是否正确,其中,所述第一参数用于指示基于目标框架得到的动态化项目的存储路径;
S2,在确定所述第一参数正确的情况下,根据所述编译指令对所述动态化项目进行编译;
S3,将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包;
S4,将所述动态化业务包发送给第一对象进行测试,并在接收到所述第一对象反馈的测试结果为成功的情况下,将所述动态化业务包发布至目标服务器。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种动态化项目的发布方法,其特征在于,包括:
在接收到编译指令的情况下,校验所述编译指令中包含的第一参数是否正确,其中,所述第一参数用于指示基于目标框架得到的动态化项目的存储路径;在确定所述第一参数正确的情况下,根据所述编译指令对所述动态化项目进行编译;
将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包;
将所述动态化业务包发送给第一对象进行测试,并在接收到所述第一对象反馈的测试结果为成功的情况下,将所述动态化业务包发布至目标服务器。
2.根据权利要求1所述的动态化项目的发布方法,其特征在于,根据所述编译指令对所述动态化项目进行编译,包括:
根据所述第一参数所指示的存储路径获取所述动态化项目;
根据所述编译指令为所述动态化项目添加依赖文件和配置文件,其中,所述依赖文件用于指示所述动态化项目所使用的依赖,所述配置文件至少用于配置所述动态化项目中需要进行编译的文件;
根据所述依赖文件和所述配置文件对所述动态化项目进行编译。
3.根据权利要求1所述的动态化项目的发布方法,其特征在于,将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包,包括:
根据所述编译指令确定所述动态化业务包的第二存储路径;
确定所述动态化项目的配置文件中是否包含预设关键字段,其中,所述预设关键字段用于指示所述动态化项目的预设关键信息;
在确定所述配置文件包含所述预设关键字段的情况下,根据所述配置文件和所述第二存储路径将所述编译后的动态化项目进行打包,得到所述动态化业务包。
4.根据权利要求3所述的动态化项目的发布方法,其特征在于,根据所述编译指令确定所述动态化业务包的第二存储路径,包括:
确定所述编译指令中是否存在第二参数,其中,所述第二参数用于指示所述动态化业务包的存储路径;
在所述编译指令中存在所述第二参数的情况下,将所述第二参数所指示的存储路径确定为所述第二存储路径;
在所述编译指令中不存在所述第二参数的情况下,将所述第一参数所指示的存储路径确定为所述第二存储路径。
5.根据权利要求3所述的动态化项目的发布方法,其特征在于,根据所述配置文件和所述第二存储路径将所述编译后的动态化项目进行打包,得到所述动态化业务包,包括:
从所述配置文件中获取所述动态化项目的项目名称,其中,所述预设关键字段包括所述项目名称;
遍历所述动态化项目的所有代码文件,在所述所有代码文件中查找预设注解字段,其中,所述预设注解字段用于标识所述动态化项目;
根据所述项目名称和所述预设注解字段将所述编译后的动态化项目进行打包,并将得到的所述动态化业务包按照所述第二存储路径进行存储,其中,所述动态化业务包的索引为所述预设注解字段,所述动态化业务包的名称为所述项目名称。
6.根据权利要求1所述的动态化项目的发布方法,其特征在于,将所述动态化业务包发布至目标服务器之后,所述方法还包括:
将所述动态化业务包内置到目标应用中,得到内置后的动态化业务包;
在所述目标应用出现预设异常状态的情况下,控制所述目标应用调用所述内置后的动态化业务包。
7.根据权利要求1所述的动态化项目的发布方法,其特征在于,将所述动态化业务包发送给第一对象进行测试之后,所述方法还包括:
在接收到所述第一对象反馈的测试结果为失败的情况下,接收所述第一对象发送的测试报告,其中,所述测试报告用于指示所述动态化项目中存在的问题;
将所述测试报告发送给第二对象,以指示所述第二对象根据所述测试报告对所述动态化项目进行调整。
8.一种动态化项目的发布装置,其特征在于,包括:
校验模块,用于在接收到编译指令的情况下,校验所述编译指令中包含的第一参数是否正确,其中,所述第一参数用于指示基于目标框架得到的动态化项目的存储路径;
编译模块,用于在确定所述第一参数正确的情况下,根据所述编译指令对所述动态化项目进行编译;
打包模块,用于将编译后的动态化项目进行打包,得到所述编译后的动态化项目对应的动态化业务包;
发布模块,用于将所述动态化业务包发送给第一对象进行测试,并在接收到所述第一对象反馈的测试结果为成功的情况下,将所述动态化业务包发布至目标服务器。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至7任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至7任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211606707.8A CN115794116A (zh) | 2022-12-13 | 2022-12-13 | 动态化项目的发布方法和装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211606707.8A CN115794116A (zh) | 2022-12-13 | 2022-12-13 | 动态化项目的发布方法和装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794116A true CN115794116A (zh) | 2023-03-14 |
Family
ID=85420088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211606707.8A Pending CN115794116A (zh) | 2022-12-13 | 2022-12-13 | 动态化项目的发布方法和装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794116A (zh) |
-
2022
- 2022-12-13 CN CN202211606707.8A patent/CN115794116A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107896244B (zh) | 一种版本文件的分发方法、客户端及服务器 | |
CN105787364B (zh) | 任务的自动化测试方法、装置及系统 | |
CN104331662B (zh) | Android恶意应用检测方法及装置 | |
CN108255708B (zh) | 测试环境中访问生产文件的方法、装置、存储介质及设备 | |
CN104765678A (zh) | 对移动终端设备上的应用进行测试的方法及装置 | |
CN104683180A (zh) | 一种性能监控方法、系统及应用服务器 | |
CN108920359B (zh) | 应用程序的测试方法、装置、存储介质和电子装置 | |
CN110569159A (zh) | 挡板生成方法、装置、设备及计算机存储介质 | |
CN111258913A (zh) | 算法自动测试方法、装置、计算机系统及可读存储介质 | |
CN105389263A (zh) | 应用软件权限监控方法、系统及设备 | |
CN108536451A (zh) | 应用程序的埋点注入方法和装置 | |
CN111124911A (zh) | 一种自动化测试方法、装置、设备及可读存储介质 | |
CN110727575B (zh) | 一种信息处理方法、系统、装置、以及存储介质 | |
CN110162310B (zh) | 插件接口测试方法及装置、计算机设备及存储介质 | |
CN115794116A (zh) | 动态化项目的发布方法和装置、存储介质及电子装置 | |
CN112596750B (zh) | 应用测试方法、装置、电子设备及计算机可读存储介质 | |
CN106550384A (zh) | 基站批量升级方法及装置 | |
CN110266762B (zh) | 一种数据上传方法、系统、装置及存储介质 | |
CN105320601A (zh) | 一种用于应用程序的测试方法及装置 | |
CN112445513A (zh) | 安装包处理方法及装置 | |
CN111984275A (zh) | 基于cpu架构类型的系统部署方法、系统、终端及存储介质 | |
CN115048313B (zh) | 自动化测试方法及装置、计算机可读存储介质及电子设备 | |
CN113608996B (zh) | 一种镜像编译测试方法、系统、装置及可读存储介质 | |
CN109814912A (zh) | 应用程序打包方法及系统 | |
CN103984336A (zh) | 电控开发系统及其控制方法 |
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 |