掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及移动端开发技术领域,尤其涉及一种Flutter编译流程介入方法及装置。

背景技术

Flutter的编译介入阶段包括三个部分,前端编译、中间文件优化、后端编译。现有技术中Flutter进行修改功能的编译时,需要修改flutter_tools代码,并将需要执行的脚本或代码耦合在flutter_tools代码中,但该方法需要针对各编译介入阶段修改相应的flutter_tools代码,即针对各编译介入阶段的介入流程不同,同时随着Flutter修改的功能越来越多,后期维护flutter_tools代码会造成遗漏,而且在Flutter版本升级后,耦合有执行的脚本或代码的flutter_tools代码数据会丢失,从而需要重新维护flutter_tools代码。

发明内容

本发明提供一种Flutter编译流程介入方法及装置,用以解决现有技术中无法提供通用的方式对Flutter编译流程介入的缺陷。

本发明提供一种Flutter编译流程介入方法,包括:

确定Flutter编译流程的介入阶段、所述介入阶段对应的初始脚本文件以及所述初始脚本文件的介入方式;其中,所述介入方式用于表示所述初始脚本文件的脚本类型信息;

在Flutter编译过程中,在所述介入阶段将编译信息传入所述初始脚本文件,得到需要执行的脚本文件;

基于所述介入方式,在所述介入阶段执行所述需要执行的脚本文件,完成Flutter编译流程介入。

根据本发明提供的一种Flutter编译流程介入方法,所述在Flutter编译过程中,在所述介入阶段将编译信息传入所述初始脚本文件,得到需要执行的脚本文件,包括:

在Flutter编译过程中,判断是否编译至所述介入阶段,若是,则获取所述编译信息,并将所述编译信息传入所述初始脚本文件,得到需要执行的脚本文件。

根据本发明提供的一种Flutter编译流程介入方法,确定所述介入阶段对应的初始脚本文件,包括:

判断Flutter编译项目工程的编译文件中是否存储与所述介入阶段对应的初始脚本文件,若有,则获取所述初始脚本文件,执行所述需要执行的脚本文件;

其中,所述Flutter编译工程的编译文件中预先存储有业务方需要进行Flutter编译流程介入的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式。

根据本发明提供的一种Flutter编译流程介入方法,所述编译信息包括下述信息中的一项或多项:编译项目的目录信息、编译项目主入口文件名、编译项目引用包的路径、编译的目标设备类型以及编译的类型。

根据本发明提供的一种Flutter编译流程介入方法,所述介入阶段包括前端编译前、中间文件优化后以及后端编译后。

根据本发明提供的一种Flutter编译流程介入方法,所述介入方式包括以python语言编写的脚本文件介入、以shell语言编写的脚本文件介入以及以dart语言编写的脚本文件介入。

本发明还提供一种Flutter编译流程介入装置,包括:

获取单元,用于确定Flutter编译流程的介入阶段、所述介入阶段对应的初始脚本文件以及所述初始脚本文件的介入方式;其中,所述介入方式用于表示所述初始脚本文件的脚本类型信息;

导入单元,用于在Flutter编译过程中,在所述介入阶段将编译信息传入所述初始脚本文件,得到需要执行的脚本文件;

编译单元,用于基于所述介入方式,在所述介入阶段执行所述需要执行的脚本文件,完成Flutter编译流程介入。

根据本发明提供的一种Flutter编译流程介入装置,所述导入单元,具体用于:

在Flutter编译过程中,判断是否编译至所述介入阶段,若是,则获取所述编译信息,并将所述编译信息传入所述初始脚本文件,得到需要执行的脚本文件。

根据本发明提供的一种Flutter编译流程介入装置,所述获取单元,用于确定所述介入阶段对应的初始脚本文件,包括:

判断Flutter编译项目工程的编译文件中是否存储与所述介入阶段对应的初始脚本文件,若有,则获取所述初始脚本文件;

其中,所述Flutter编译工程的编译文件中预先存储有业务方需要进行Flutter编译流程介入的介入阶段信息、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式。

根据本发明提供的一种Flutter编译流程介入装置,所述编译信息包括下述信息中的一项或多项:编译项目的目录信息、编译项目主入口文件名、编译项目引用包的路径、编译的目标设备类型以及编译的类型。

根据本发明提供的一种Flutter编译流程介入装置,所述介入阶段包括前端编译前、中间文件优化后以及后端编译后。

根据本发明提供的一种Flutter编译流程介入装置,所述介入方式包括以python语言编写的脚本文件介入、以shell语言编写的脚本文件介入以及以dart语言编写的脚本文件介入。

本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一种所述Flutter编译流程介入方法的步骤。

本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述Flutter编译流程介入方法的步骤。

本发明提供的Flutter编译流程介入方法及装置,在任一介入阶段进行Flutter编译流程介入时,均可通过Flutter编译流程的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式,确定需要执行的脚本文件,并在介入阶段执行需要执行的脚本文件实现Flutter编译流程介入,即各介入阶段的Flutter编译流程相同,而且介入的方式统一为脚本文件,避免传统方法中需要针对各介入阶段修改相应的flutter_tools代码造成无法提供通用的方式实现Flutter编译流程介入的问题,而且在Flutter版本升级后,需要执行的脚本文件数据不会丢失,避免传统方法中Flutter版本升级后,耦合有执行的脚本或代码的flutter_tools代码数据丢失需要重新维护flutter_tools代码造成修改遗漏。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的Flutter编译流程介入方法的流程示意图;

图2是本发明提供的前端编译前编译流程介入的流程示意图;

图3是本发明提供的中间文件优化后编译流程介入的流程示意图;

图4是本发明提供的后端编译后编译流程介入的流程示意图;

图5是本发明提供的Flutter编译流程介入装置的结构示意图;

图6是本发明提供的电子设备的结构示意图。

具体实施方式

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

Flutter是Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能,开发者可以通过Dart语言开发应用App。Flutter源代码需要编译才能运行,现有技术中Flutter进行修改功能的编译时,需要修改flutter_tools代码,并将需要执行的脚本或代码耦合在flutter_tools代码中,但该方法需要针对各编译介入阶段修改相应的flutter_tools代码,即针对各编译介入阶段的介入流程不同,同时随着Flutter修改的功能越来越多,后期维护flutter_tools代码会造成遗漏,而且在Flutter版本升级后,耦合有执行的脚本或代码的flutter_tools代码数据会丢失,从而需要重新维护flutter_tools代码。

对此,本发明提供了一种Flutter构造函数初始化式的修改方法。图1是本发明提供的Flutter编译流程介入方法的流程示意图,如图1所示,该方法包括:

步骤110、确定Flutter编译流程的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式;其中,介入方式用于表示初始脚本文件的脚本类型信息。

步骤120、在Flutter编译过程中,在介入阶段将编译信息传入初始脚本文件,得到需要执行的脚本文件;

步骤130、基于介入方式,在介入阶段执行需要执行的脚本文件,完成Flutter编译流程介入。

在本实施例中,需要说明的是,Flutter源代码需要编译才能运行,现有技术中若要介入Flutter编译流程,需要修改flutter_tools代码,并将需要执行的脚本或代码耦合在flutter_tools代码中,而随着Flutter编译流程的介入阶段不同,需要修改的flutter_tools代码所在位置也不同,即针对不同介入阶段的编译流程,需要定位到不同位置的flutter_tools代码,并将相应的需要执行的脚本或代码耦合在flutter_tools代码中。由此可见,现有技术中面对不同的Flutter编译流程的介入阶段,所要执行的编译流程不同,无法提供通用的方式介入Flutter编译流程。此外,由于现有技术中针对不同的Flutter编译流程的介入阶段,首先需要定位到对应的flutter_tools代码并对其进行修改,然后将对应脚本或代码耦合在flutter_tools代码中,流程较为复杂,一旦其中某一环节出错,则会影响后续流程的执行,无法保证能够快速且准确完成Flutter编译流程介入。

因此,本实施例为了解决上述问题,提供了一种通用的方式进行Flutter编译流程的介入,具体地,确定与Flutter编译流程介入相关的信息:Flutter编译流程的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式,其中介入阶段是用于判断Flutter编译流程的介入点,介入方式用于表示初始脚本文件的脚本类型信息,例如脚本类型可以为python,也可以为shell,本实施例对此不作具体限定,初始脚本文件是采用编程语言编写的文件,将其存放在对应的文件夹下,当确定初始脚本文件之后,在编译过程中在介入阶段将对应的编译信息传入初始脚本文件,得到需要执行的脚本文件,当需要执行该脚本文件时,在控制台输入相应的脚本文件名即可。需要说明的是,初始脚本文件可以是编译人员根据编译需求预先编写完成后存储至对应的文件夹,从而在介入阶段即可获取对应的初始脚本文件。

此外,初始脚本文件根据不同的介入阶段存储于相应的文件夹下,若获取初始脚本文件,则需要判断Flutter编译的介入阶段,根据介入阶段判断是否存在相应的脚本文件,若存在,则将编译信息传入初始脚本文件,得到需要执行的脚本文件,由于需要执行的脚本文件与初始文件的脚本类型是相同的,因此基于初始脚本文件的介入方式执行需要执行的脚本文件,从而完成Flutter编译流程介入。

由此可见,本实施例提供的Flutter编译流程介入方法,针对不同的介入阶段,只需要确定Flutter编译流程的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式,即可确定介入阶段需要执行的脚本文件,进而完成Flutter编译流程的介入。相较于现有技术中需要针对不同的介入阶段,获取相应的flutter_tools代码后并对其进行修改,本实施例中各介入阶段的Flutter编译流程是相同的,而且编译介入的形式统一为脚本文件,接入方无需再对flutter_tools代码进行额外修改即可完成介入,介入流程由接入方提供,不需要编译人员提供,不仅介入的方式更简单便捷,而且能够根据接入方的实际需求进行编译介入,同时避免了现有技术中复杂的介入流程造成失误导致影响Flutter编译的问题。

此外,随着Flutter需要修改的功能越来越多,若采用现有技术中的方法进行编译流程介入,则需要维护的flutter_tools代码也会相应增加,容易造成遗漏,而且在Flutter版本升级之后,耦合有执行的脚本或代码的flutter_tools代码数据丢失需要重新维护flutter_tools代码,维护成本较高。然而,本实施例提供的方法,当需要增加修改时,编译人员将相应的脚本文件存储至文件夹下,即可通过执行脚本文件介入编译流程完成修改,而且在Flutter版本升级之后,需要执行的脚本文件数据不会丢失,降低了数据的维护成本和修改成本。

本发明提供的Flutter编译流程介入方法,在任一介入阶段进行Flutter编译流程介入时,均可通过确定Flutter编译流程的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式,确定需要执行的脚本文件,并在介入阶段执行需要执行的脚本文件实现Flutter编译流程介入,即各介入阶段的Flutter编译流程相同,而且介入的方式统一为脚本文件,避免传统方法中需要针对各介入阶段修改相应的flutter_tools代码造成无法提供通用的方式实现Flutter编译流程介入的问题,而且在Flutter版本升级后,需要执行的脚本文件数据不会丢失,避免传统方法中Flutter版本升级后,耦合有执行的脚本或代码的flutter_tools代码数据丢失需要重新维护flutter_tools代码造成修改遗漏。

基于上述实施例,在Flutter编译过程中,在介入阶段将编译信息传入初始脚本文件,得到需要执行的脚本文件,包括:

在Flutter编译过程中,判断是否编译至介入阶段,若是,则获取编译信息,并将编译信息传入初始脚本文件,得到需要执行的脚本文件。

在本实施例中,由于初始脚本文件根据不同的介入阶段存储至相应的文件夹下,即在判断编译至对应的介入阶段时,才能获取介入阶段下的初始脚本文件,并将获取的编译信息传入初始脚本文件,得到需要执行的脚本文件,以便执行需要执行的脚本文件完成编译流程介入。

基于上述实施例,确定介入阶段对应的初始脚本文件,包括:

判断Flutter编译项目工程的编译文件中是否存储与介入阶段对应的初始脚本文件,若有,则获取需要初始脚本文件;

其中,Flutter编译工程的编译文件中预先存储有业务方需要进行Flutter编译流程介入的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式。

在本实施例中,由于初始脚本文件根据不同的介入阶段存储至相应的文件夹下,即在判断编译至对应的介入阶段时,才能获取介入阶段下的初始脚本文件,完成编译流程介入。在不同的介入阶段,判断Flutter编译项目工程的编译文件中是否存储与介入阶段对应的初始脚本文件,若有,则获取初始脚本文件。其中,Flutter编译项目工程的编译文件可以存储于Flutter主工程中,以便各Flutter应用端可以共享获取Flutter主工程中的数据,节约了与编译人员的沟通成本。其中,Flutter编译工程的编译文件中预先存储有业务方需要进行Flutter编译流程介入的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式,例如编译文件存放在主工程的compile.yaml文件中。该文件的格式如下:

其中procedure1为业务方命名的介入流程名称,interpose_point为介入阶段,interpose_pattern为介入方式,interpose_project和interpose_file为初始脚本文件所在的工程和文件名,从而根据编译文件中脚本所在工程和文件名即可获取对应的初始脚本文件。

如图2所示,当介入阶段为前端编译前(before_frontend)时,在前端编译前对应的文件夹中获取初始脚本文件;如图3所示,当介入阶段为中间文件优化后(after_optimize)时,在中间文件优化后对应的文件夹中获取初始脚本文件;如图4所示,当介入阶段为后端编译后(after_backend)时,在后端编译后对应的文件夹中获取初始脚本文件。

本发明提供的Flutter编译流程介入方法,基于Flutter编译项目工程的编译文件获取初始脚本文件,由于编译文件存储于Flutter编译项目工程中,各Flutter应用端可以共享Flutter编译项目工程中的数据,从而节约编译沟通成本。

基于上述实施例,编译信息包括下述信息中的一项或多项:编译项目的目录信息、编译项目主入口文件名、编译项目引用包的路径、编译的目标设备类型以及编译的类型。

在本实施例中,由于Flutter编译流程介入方式为脚本文件,因此脚本文件中需要包含项目编译的相关信息。本实施例在获取到初始脚本文件后,会获取编译信息,并将编译信息传入初始脚本文件,得到需要执行的脚本文件,以执行需要执行的脚本文件,进而完成Flutter编译流程介入。其中,编译信息包括下述信息中的一项或多项:编译项目的目录信息、编译项目主入口文件名、编译项目引用包的路径、编译的目标设备类型(如iOS、Android等)以及编译的类型(如debug、release等)。

本发明提供的Flutter编译流程介入方法,通过将获取的编译信息传入初始脚本文件,得到需要执行的脚本文件,并执行需要执行的脚本文件,从而实现以脚本文件的介入方式完成Flutter编译流程介入。

基于上述实施例,介入阶段包括前端编译前、中间文件优化后以及后端编译后。

在本实施例中,Flutter编程语言要达到可运行的目的需要经过编译,一般地来说,Flutter编译模式分为两类:JIT(即时编译)和AOT(事前编译)。JIT可以即时编译并运行JavaScript。因此只需要输入源代码字符串,就可以编译并运行代码。JIT可以动态下发和执行代码,而不用管用户的机器是什么架构,为应用的用户提供丰富而动态的内容。Flutter编译的介入阶段包括前端编译前、中间文件优化后以及后端编译后,根据不同的介入阶段,获取对应的脚本文件,完成Flutter编译流程介入。

基于上述实施例,介入方式包括以python语言编写的脚本文件介入、以shell语言编写的脚本文件介入以及以dart语言编写的脚本文件介入。

在本实施例中,需要说明的是,以python语言编写的脚本文件,使用得是其它语言经常使用的标点符号和英文单字,使代码具备高度的可阅读性。shell语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称,它既是终端上的用户与UNIX操作系统会话的语言,又可作为程序设计的语言,所以shell是用户与系统之间的接口,而且是一种比较高级、易被用户理解和使用的程序设计语言,它为用户提供了使用方便、功能强、又容易扩充的程序设计环境。dart语言是谷歌开发的计算机编程语言,被用于web、服务器、移动应用和物联网等领域的开发,是面向对象的、类定义的、单继承的语言。

下面对本发明提供的Flutter编译流程介入装置进行描述,下文描述的Flutter编译流程介入装置与上文描述的Flutter编译流程介入方法可相互对应参照。

基于上述实施例,如图5所示,本发明提供一种Flutter编译流程介入装置,包括:

获取单元510,用于确定Flutter编译流程的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式;其中,介入方式用于表示初始脚本文件的脚本类型信息;

导入单元520,用于在Flutter编译过程中,在介入阶段将编译信息传入初始脚本文件,得到需要执行的脚本文件;

编译单元530,用于基于介入方式,在介入阶段执行需要执行的脚本文件,完成Flutter编译流程介入。

基于上述实施例,导入单元520,具体用于:

在Flutter编译过程中,判断是否编译至介入阶段,若是,则获取编译信息,并将编译信息传入初始脚本文件,得到需要执行的脚本文件。

基于上述实施例,获取单元510,用于确定介入阶段对应的初始脚本文件,包括:

判断Flutter编译项目工程的编译文件中是否存储与介入阶段对应的初始脚本文件,若有,则获取初始脚本文件;

其中,Flutter编译工程的编译文件中预先存储有业务方需要进行Flutter编译流程介入的介入阶段、介入阶段对应的初始脚本文件以及初始脚本文件的介入方式。

基于上述实施例,编译信息包括下述信息中的一项或多项:编译项目的目录信息、编译项目主入口文件名、编译项目引用包的路径、编译的目标设备类型以及编译的类型。

基于上述实施例,介入阶段包括前端编译前、中间文件优化后以及后端编译后。

基于上述实施例,介入方式包括以python语言编写的脚本文件介入、以shell语言编写的脚本文件介入以及以dart语言编写的脚本文件介入。

图6是本发明提供的电子设备的结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行Flutter编译流程介入方法,该方法包括:确定Flutter编译流程的介入阶段、所述介入阶段对应的初始脚本文件以及所述初始脚本文件的介入方式;其中,所述介入方式用于表示所述初始脚本文件的脚本类型信息;在Flutter编译过程中,在所述介入阶段将编译信息传入所述初始脚本文件,得到需要执行的脚本文件;基于所述介入方式,在所述介入阶段执行所述需要执行的脚本文件,完成Flutter编译流程介入。

此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的Flutter编译流程介入方法,该方法包括:确定Flutter编译流程的介入阶段、所述介入阶段对应的初始脚本文件以及所述初始脚本文件的介入方式;其中,所述介入方式用于表示所述初始脚本文件的脚本类型信息;在Flutter编译过程中,在所述介入阶段将编译信息传入所述初始脚本文件,得到需要执行的脚本文件;基于所述介入方式,在所述介入阶段执行所述需要执行的脚本文件,完成Flutter编译流程介入。

又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的Flutter编译流程介入方法,该方法包括:确定Flutter编译流程的介入阶段、所述介入阶段对应的初始脚本文件以及所述初始脚本文件的介入方式;其中,所述介入方式用于表示所述初始脚本文件的脚本类型信息;在Flutter编译过程中,在所述介入阶段将编译信息传入所述初始脚本文件,得到需要执行的脚本文件;基于所述介入方式,在所述介入阶段执行所述需要执行的脚本文件,完成Flutter编译流程介入。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • Flutter编译流程介入方法及装置
  • 应用程序编译流程的图片处理方法及装置
技术分类

06120113299760