CN114201174A - 混合移动应用的构建方法、装置、电子设备及存储介质 - Google Patents
混合移动应用的构建方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114201174A CN114201174A CN202111423975.1A CN202111423975A CN114201174A CN 114201174 A CN114201174 A CN 114201174A CN 202111423975 A CN202111423975 A CN 202111423975A CN 114201174 A CN114201174 A CN 114201174A
- Authority
- CN
- China
- Prior art keywords
- flutter
- source code
- target
- mobile application
- file
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
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)
- Stored Programmes (AREA)
Abstract
本申请公开了一种混合移动应用的构建方法、装置、电子设备及存储介质。在本申请实施例中,引入了新的打包平台,整个应用的构建过程都可以在该打包平台进行,并且支持从Flutter环境支持的源码仓库中获取Flutter源代码文件,在打包平台上对Flutter源代码文件进行参数配置和编译,得到Flutter二进制文件,不再依赖于Flutter环境中的产物仓库,节省了产物仓库的存储空间;进而,将Flutter二进制文件集成到原生代码工程中,对混合后的代码工程进行编译和打包,得到混合移动应用的安装包,整个构建过程步骤简单,提高了构建效率。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种混合移动应用的构建方法、装置、电子设备及存储介质。
背景技术
随着智能设备的发展和普及,移动应用(APP)的进一步开发和使用在整个移动互联网领域是迫在眉睫的,于是出现了一些构建APP的框架,例如Flutter。其中,Flutter是Google发布的跨平台的移动开发框架,可以快速在IOS和 Android系统上构建高质量的混合移动APP。
目前基于Flutter构建混合移动APP的过程包括:开发人员下载构建APP 所需的Flutter源代码至本地开发设备,在本地开发设备上针对Flutter源代码进行参数配置、编译生成Flutter二进制文件,将Flutter二进制文件上传到Flutter 的产物仓库中;之后,借助于Jenkins打包平台从Flutter的产物仓库中获取上述二进制文件,通过CocoaPods对Flutter二进制文件与基于IOS或Android系统的原生代码进行依赖集成,进而完成APP的构建和交付工作。现有基于Flutter 构建混合移动应用的过程,操作步骤繁琐,效率较低。
发明内容
为解决或改善现有技术中存在的问题,本申请各实施例提供了一种混合移动应用的构建方法、装置、电子设备及存储介质。
在本申请的一个实施例中,提供了一种混合移动应用的构建方法,应用于打包平台,预先在打包平台上配置构建环境、构建脚本和配置参数,构建环境包括Flutter环境和原生系统环境,该方法包括:
响应混合移动应用的构建指令,在构建环境中运行构建脚本,以执行下述构建操作:
从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件;
根据配置参数对目标Flutter源代码文件进行参数配置,并对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;
将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,原生代码工程包括基于原生系统环境开发的混合移动应用所需的部分功能代码;
运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。
在本申请的另一个实施例中,提供了一种混合移动应用的构建装置,应用于打包平台,预先在打包平台上配置构建环境、构建脚本和配置参数,构建环境包括Flutter环境和原生系统环境,该装置包括:
构建控制模块,用于响应混合移动应用的构建指令,在构建环境中运行构建脚本,以控制下述模块执行构建操作;
获取模块,用于从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件;
配置编译模块,用于根据配置参数对目标Flutter源代码文件进行参数配置,并对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;
集成模块,用于将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,原生代码工程包括基于原生系统环境开发的混合移动应用所需的部分功能代码;
混编模块,用于运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。
在本申请的另一个实施例中,提供了一种电子设备,该电子设备包括:存储器和处理器;其中,存储器,用于存储计算机程序;处理器耦合至存储器,用于执行计算机程序以用于执行本申请实施例提供的混合移动应用的构建方法中的步骤。
在本申请的再一个实施例中,提供了一种存储有计算机指令的计算机可读存储介质,当计算机指令被一个或多个处理器执行时,致使一个或多个处理器执行本申请实施例提供的混合移动应用的构建方法中的步骤。
本申请各实施例提供的技术方案,引入了新的打包平台,整个应用的构建过程都可以在该打包平台进行,并且支持从Flutter环境支持的源码仓库中获取Flutter源代码文件,在打包平台上对Flutter源代码文件进行参数配置和编译,得到Flutter二进制文件,不再依赖于Flutter环境中的产物仓库,节省了产物仓库的存储空间;进而,将Flutter二进制文件集成到原生代码工程中,对混合后的代码工程进行编译和打包,得到混合移动应用的安装包,整个构建过程步骤简单,提高了构建效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a示出了本申请一实施例提供的一种混合移动应用的构建方法的流程示意图;
图1b示出了本申请一实施例提供的另一种混合移动应用的构建方法的流程示意图;
图2a为本申请一实施例提供的一种混合移动应用的构建装置的结构示意图;
图2b为本申请一实施例提供的电子设备的结构示意图。
具体实施方式
本申请各实施例涉及混合移动APP的构建。在本申请各实施例中,混合移动APP是指基于原生系统环境开发的代码和Flutter环境开发的代码混编而成的移动APP。在现有技术中,通常使用Jenkins打包平台构建混合移动 APP。在基于Jenkins打包平台构建混合移动APP的过程中,存在以下缺陷:
1、Jenkins打包平台需要从Flutter环境中的产物仓库(可简称为Flutter 产物仓库)中获取混合移动APP所需的Flutter二进制文件,这就需要开发人员预先在自己的开发设备上编写相应的Flutter源代码,将相应Flutter源代码编译成Flutter二进制文件并上传存储至产物仓库中。然而,在实际开发和测试过程中,各开发项目会频繁涉及各种打包操作,Flutter产物仓库中就需要包含各种打包操作所需的Flutter二进制文件,这会导致Flutter产物仓库体积迅速增长,在从Flutter产物仓库获取所需Flutter二进制文件的效率会降低,严重拖慢了整体打包速度;
2、如果Flutter产物仓库中不存在构建混合移动APP所需的Flutter二进制文件,在执行构建操作之前需要移动端开发人员人工更新Flutter源代码,并在开发人员的开发设备上配置和编译以生成Flutter二进制文件,再上传到 Flutter产物仓库,此操作繁琐、依赖开发人员本地开发环境、影响其他开发工作,效率低下;
3、现有的构建方案在一定程度上依赖于移动端开发人员的手动操作,其余开发、测试、产品等团队人员无法自行打包,灵活性差。
本申请提供了如下各实施例以解决或部分解决上述各方案存在的问题。为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。此外,下文描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1a示出了本申请一实施例提供的混合移动应用的构建方法的流程示意图。该方法应用于打包平台,预先在打包平台上配置构建环境、构建脚本和配置参数,构建环境包括Flutter环境和原生系统环境,在该打包平台上运行构建脚本可实现一种新的混合移动应用的构建逻辑,即本实施例所提供的混合移动应用的构建方法。在此说明,本申请实施例提供的构建方法就既可以应用于混合移动应用的开发阶段,也可以应用于混合移动应用的发布阶段,对此不做限定。其中,开发阶段是指基于原生系统环境开发原生代码以及基于Flutter环境开发Flutter源代码的阶段,发布阶段是指对外发布混合移动应用的阶段。其中,在开发阶段进行混合移动应用的构建操作可以是开发完成原生代码和Flutter源代码之后,执行本申请实施例提供的构建方法进行混合移动应用的构建操作,当然,也可以是在开发阶段边开发原生代码和Flutter源代码边执行本申请实施例提供的构建方法进行混合移动应用的构建操作。在发布阶段进行混合移动应用的构建操作可以是先执行本申请实施例提供的构建方法进行混合移动应用的构建操作,在构建得到混合移动应用后,对外发布该混合移动应用。
下面结合图1a对本申请实施例提供的混合移动应用的构建方法进行详细说明,如图1a所示,该方法包括:
100、响应混合移动应用的构建指令,在构建环境中运行构建脚本,以执行下述构建操作:
101、从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件;
102、根据配置参数对目标Flutter源代码文件进行参数配置,并对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;
103、将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,原生代码工程包括基于原生系统环境开发的混合移动应用所需的部分功能代码;
104、运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。
本实施例提供的混合移动应用的构建方法应用于打包平台,本实施例对打包平台的类型不作限定,凡是可以同时支持Flutter环境和原生系统环境,且可以运行本申请实施例提供的构建脚本的打包平台均适用于本申请实施例,例如本实施例的打包平台可以是iCI(移动持续集成项目)平台,但不限于此。其中, iCI平台是移动持续集成项目中的平台,旨在通过集各BG(Business Group,事业群)研发及测试能力,将需求研发流程中的关键操作设置为不同的节点,将各节点进行的自测&测试验证能力作为节点插件服务,提供需求交付过程中的一站式自测、提测、测试、内测、发布流程服务,减少或避免线下手工及切换自测/测试平台的成本,持续提升项目交付效率及质量。iCI平台支持参数和功能可配等特性,故可以将本实施例提供的混合移动应用的构建脚本应用于ICI平台上。
在本实施例中,预先在打包平台上配置构建环境、构建脚本和配置参数。其中,构建环境包括Flutter环境和原生系统环境,原生系统环境可以是安卓系统环境、IOS系统环境等,本申请实施例对此不作限定。Flutter环境是指运行 Flutter功能代码所需的环境,而原生系统环境是指运行基于原生系统环境开发的功能代码所需的环境。在原生系统环境中包括原生代码工程,该原生代码工程是指依赖原生系统环境开发混合移动应用所需的部分功能代码的项目工程,该原生代码工程中的部分功能代码与依赖Flutter环境开发的混合移动应用所需的另一部分功能代码混编即可得到混合移动应用。为便于区分,将在原生代码工程中集成依赖Flutter环境开发的部分功能代码之后得到的项目工程称为混合代码工程。
在本申请实施例中,在需要构建混合移动应用时,可以向打包平台发出混合移动应用的构建指令,指示打包平台在其构建环境中运行上述构建脚本,以执行构建操作。需要说明的是,该构建指令包括用于指示需要构建的混合移动应用是哪个应用的标识信息,或者,也可以包括该混合移动应用需要使用的目标Flutter源代码文件的标识以及原生代码工程的标识。其中,混合移动应用的标识信息可以是其名称、类型、版本号或其描述信息等。同理,目标Flutter源代码文件和原生代码工程的标识可以是其名称、ID或其描述信息等。
在一可选实施例中,打包平台可以提供一构建管理界面,可选地,该构建管理界面可以是web页面,则用户可以通过其终端设备上的浏览器打开打包平台提供的构建管理界面,用户可以在构建管理界面上发出针对某一个混合移动应用的构建指令。对于打包平台而言,在接收到混合移动应用的构建指令后,响应混合移动应用的构建指令,在构建环境中运行构建脚本,该构建脚本中包含了构建混合移动应用所需的构建逻辑,通过运行该构建脚本可执行下述的构建操作。
具体地,首先需要从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件。
在一可选实施例中,打包平台可以默认从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件,但并不限于此。在另一可选实施例中,如图1b所示,步骤101包括:步骤101a、打包平台在构建管理界面上展示仓库选项信息,以供构建人员确认是否使用Flutter环境支持的源码仓库。其中,仓库选项信息的展示方式有多种,本实施例对此不作限定。例如,可以以勾选的方式展示是否使用Flutter环境支持的源码仓库。构建人员在通过构建管理界面勾选“是”选项,确认使用Flutter环境支持的源码仓库。相应地,步骤101还包括101b、打包平台响应于构建人员的确认操作,从源码仓库中,获取混合移动应用所需的目标Flutter源代码文件。
进一步地,上述构建指令中包含混合移动应用的类型和版本号,则在从 Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件时,可以根据混合移动应用的类型和版本号,从源码仓库中获取与构建指令中的类型和版本号均对应的Flutter源代码文件,作为目标Flutter源代码文件。例如,混合移动应用的类型为在线租房应用,版本号为10.1.3,那么可以从源码仓库中查询并获取在线租房应用10.1.3对应的Flutter源代码文件,作为目标 Flutter源代码文件。
进一步地,从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件后,打包平台根据配置参数对目标Flutter源代码文件进行参数配置,然后对参数配置后的目标Flutter源代码文件进行编译,得到目标 Flutter二进制文件。在本实施例中,打包平台支持从Flutter环境支持的源码仓库中获取Flutter源代码文件,并支持对Flutter源代码文件进行参数配置和编译得到Flutter二进制文件,Flutter二进制文件的获取不再依赖于Flutter环境中的产物仓库,Flutter产物仓库中不一定要存储有各个Flutter二进制文件,可有效避免Flutter产物仓库体积的迅速增长,进而解决了构建速度被Flutter产物仓库体积拖慢的问题;另外,由于不再赖于Flutter产物仓库,即使Flutter产物仓库中不存在所需的Flutter二进制文件,也不需要研发人员基于本地开发设备对 Flutter源代码文件进行参数配置和编译得到Flutter二进制文件并上传至Flutter产物仓库等操作,而是由打包平台自动完成针对Flutter源代码文件的参数配置和编译得到所需的Flutter二进制文件,可进一步提高构建混合应用的效率。
在本申请实施例中,并不限定打包平台对目标Flutter源代码文件进行参数配置的实施方式。在一可选实施例中,打包平台可以根据构建脚本中用于进行参数配置的局部脚本代码,结合配置参数,直接在目标Flutter源代码文件中添加相应参数值。在另一可选实施例中,如图1b所示,步骤102中根据配置参数对目标Flutter源代码文件进行参数配置时,可以通过以下步骤102a实现:102a、根据构建脚本中用于进行参数配置的局部脚本代码,结合配置参数,生成目标 Flutter源代码文件对应的参数配置项以及对应的可选参数值;在构建管理界面上展示参数配置项以及对应的可选参数值,以供构建人员为参数配置项选择或修改对应的参数值;响应构建人员针对参数配置项发起的选择或修改参数值的操作,将构建人员选择或修改的参数值添加到目标Flutter源代码文件中,以完成参数配置。该配置参数的方式通过展示参数配置项以及对应的可选参数值,便于构建人员快速、方便地对源代码进行参数配置,而不需要构建人员手动进入脚本对参数进行修改,提高了参数的配置效率和灵活性,还可降低对构建人员具备的混编项目构建知识的要求。
进一步地,本实施例的打包平台支持多种编译方式,例如同时支持的调试版本的编译方式和发布版本的编译方式,且可允许构建人员自行选择使用的编译方式。当然,如果构建人员不选择所使用的编译方式,打包平台可以使用默认的编译方式。基于此,在一可选实施例中,如图1b所示,步骤102中在完成参数配置后,对参数配置后的目标Flutter源代码文件进行编译时,可以采用步骤102b-102c实现:102b、在构建管理界面上展示编译方式选项信息,以供构建人员选择使用的编译方式;102c、响应构建人员选择编译方式的操作,使用构建人员选择使用的目标编译方式对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;其中,目标编译方式为Flutter环境支持的调试版本的编译方式或发布版本的编译方式。例如,如果构建人员选择了调试版本的编译方式,那么打包平台可响应构建人员选择调试版本的编译方式的操作,使用调试版本的编译方式对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;如果构建人员选择了发布版本的编译方式,那么打包平台可响应构建人员选择发布版本的编译方式的操作,使用发布版本的的编译方式对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件。
以上内容是在构建人员选择使用Flutter环境支持的源码仓库时,基于获取到的目标Flutter源代码文件,得到目标Flutter二进制文件的过程。需要说明的是,本实施例的Flutter环境除了支持源码仓库之外,还可以支持产物仓库。不同于源码仓库,产物仓库用于存储Flutter二进制文件,产物仓库中存储的Flutter 二进制文件对应的Flutter源代码文件存储于源码仓库中。但是,需要说明的是,在本实施例中,产物仓库中并不一定存储有每个Flutter源代码文件对应的Flutter 二进制文件,也就是说,可能只有部分Flutter源代码文件对应的Flutter二进制文件被存储在了产物仓库中。基于此,接续于上述图1b所示实施例,在构建人员不选择使用Flutter环境支持的源码仓库,而是选择使用Flutter环境支持的产物仓库时,方法实施例还包括步骤105、响应于构建人员选择使用Flutter环境支持的产物仓库的操作,从产物仓库中获取混合移动应用所需的目标Flutter二进制文件;其中,步骤105跳转至步骤103中。具体地,在上述构建指令包含混合移动应用的类型和版本号的情况下,可以根据混合移动应用的类型和版本号,从产物仓库中获取与类型和版本号均对应的Flutter二进制文件,作为目标Flutter 二进制文件。例如,混合移动应用是在线租房应用,版本号为11.2.3,那么可以从产物仓库中查询并获取在线租房应用11.2.3对应的Flutter二进制文件,作为目标Flutter二进制文件。可选地,如果在应用开发阶段进行混合移动应用的构建操作,则构建人员可以优先选择使用Flutter环境支持的源码仓库,通过对目标Flutter源代码文件进行参数配置和编译得到构建所需的目标Flutter二进制文件,这样,一方面可以解决产物仓库中尚不存在目标Flutter二进制文件的问题,另一方面,由于在开发阶段可能出现多个版本的目标Flutter源代码文件及其对应的目标Flutter二进制文件,可以过滤掉其它未被使用的目标Flutter二进制文件,而只将最终使用的目标Flutter二进制文件存储至产物仓库中,可以降低产物仓库体积增长的速度。进一步可选地,如果是在应用发布阶段进行混合移动应用的构建操作,则构建人员可以优先选择使用Flutter环境支持的产物仓库,借助于此阶段产物仓库中存在目标Flutter二进制文件的概率较高的特点,可以优先选择使用产物仓库,可提高获取目标Flutter二进制文件,节约对目标Flutter 源代码文件进行参数配置和编译得到目标Flutter二进制文件所消耗的处理资源。进一步,如果未能从产物仓库中获取到目标Flutter二进制文件,还可以重新从源码仓库中获取目标Flutter源代码文件,通过对目标Flutter源代码文件进行参数配置和编译得到目标Flutter二进制文件,确保构建操作的成功执行。
进一步地,无论采用上述何种方式得到目标Flutter二进制文件,将利用目标Flutter源代码文件编译得到的目标Flutter二进制文件或从产物仓库中获取到的目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程。在本实施例中,可以在构建脚本中指定目标Flutter二进制文件的存储位置和名称,则将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,可以通过以下步骤实现:将目标Flutter二进制文件的存储位置和名称作为入参调用 CocoaPods工具,以供CocoaPods工具根据名称从存储位置读取目标Flutter二进制文件并将目标Flutter二进制文件添加到原生代码工程中的指定目录下,得到混合代码工程。
其中,CocoaPods是OSX和IOS下的一个第三类库管理工具,通过CocoaPods 工具可以为应用构建添加“Pods”依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理所构建应用的版本。此外,在引入第三方库时它可以自动为构建人员完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。并且使用CocoaPods可以很方便地查找新的使用性强的第三方“标准”库。
进一步地,在得到混合代码工程后,继续运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。在得到安装包之后,可以将混合移动应用的安装包交付给使用方,例如发布到应用商城中,以供各终端用户下载、安装并在其终端上运行该混合移动应用。
可选地,打包平台可以运行在云端,整个构建流程云端化,不再依赖开发人员的手动本地化操作,效率大幅提升。
图2a示出了本申请一实施例提供的混合移动应用的构建装置的结构示意图。该装置应用于打包平台,预先在打包平台上配置构建环境、构建脚本和配置参数,构建环境包括Flutter环境和原生系统环境。如图2a所示,该装置包括:
构建控制模块20,用于响应混合移动应用的构建指令,在构建环境中运行构建脚本,以控制下述模块执行构建操作;
获取模块21,用于从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件;
配置编译模块22,用于根据配置参数对目标Flutter源代码文件进行参数配置,并对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;
集成模块23,用于将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,原生代码工程包括基于原生系统环境开发的混合移动应用所需的部分功能代码;
混编模块24,用于运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。
进一步地,获取模块21在用于从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件时,具体用于:在构建管理界面上展示仓库选项信息,以供构建人员确认是否使用Flutter环境支持的源码仓库;响应于构建人员的确认操作,从源码仓库中,获取混合移动应用所需的目标Flutter 源代码文件。
进一步地,获取模块21,还用于响应于构建人员选择使用Flutter环境支持的产物仓库的操作,从产物仓库中获取混合移动应用所需的目标Flutter二进制文件;其中,产物仓库中存储有多个Flutter二进制文件。相应地,集成模块23,用于将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程;混编模块24,用于运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。
进一步地,构建指令中包含混合移动应用的类型和版本号,则获取模块21,在用于从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter 源代码文件时,具体用于:根据混合移动应用的类型和版本号,从源码仓库中获取与类型和版本号均对应的Flutter源代码文件,作为目标Flutter源代码文件;
相应地,获取模块21,在用于从产物仓库中获取混合移动应用所需的目标Flutter二进制文件时,具体用于:根据混合移动应用的类型和版本号,从产物仓库中获取与类型和版本号均对应的Flutter二进制文件,作为目标Flutter二进制文件。
进一步地,配置编译模块22,在用于对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件时,具体用于:在构建管理界面上展示编译方式选项信息,以供构建人员选择使用的编译方式;响应构建人员选择编译方式的操作,使用构建人员选择使用的目标编译方式对参数配置后的目标 Flutter源代码文件进行编译,得到目标Flutter二进制文件;其中,目标编译方式为Flutter环境支持的调试版本的编译方式或发布版本的编译方式。
进一步地,集成模块23,在用于构建脚本中指定目标Flutter二进制文件的存储位置和名称,则将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程时,具体用于:将目标Flutter二进制文件的存储位置和名称作为入参调用CocoaPods工具,以供CocoaPods工具根据名称从存储位置读取目标 Flutter二进制文件并将目标Flutter二进制文件添加到原生代码工程中的指定目录下,得到混合代码工程。
进一步地,配置编译模块22,还用于根据配置参数对目标Flutter源代码文件进行参数配置时,具体用于:根据构建脚本中用于进行参数配置的局部脚本代码,结合配置参数,生成目标Flutter源代码文件对应的参数配置项以及对应的可选参数值;在构建管理界面上展示参数配置项以及对应的可选参数值,以供构建人员为参数配置项选择或修改对应的参数值;响应构建人员针对参数配置项发起的选择或修改参数值的操作,将构建人员选择或修改的参数值添加到目标Flutter源代码文件中,以完成参数配置。
进一步地,打包平台是iCI平台。
这里需要说明的是:上述实施例提供的混合移动应用的构建装置可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
图2b示出了本申请一实施例提供的电子设备的结构示意图。如图2b所示,该电子设备包括:存储器20a和处理器20b;其中,存储器20a,用于存储计算机程序;处理器耦合至存储器20b,用于执行计算机程序以用于执行以下步骤:
响应混合移动应用的构建指令,在构建环境中运行构建脚本,以执行下述构建操作:从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标 Flutter源代码文件;根据配置参数对目标Flutter源代码文件进行参数配置,并对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,原生代码工程包括基于原生系统环境开发的混合移动应用所需的部分功能代码;运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。
进一步地,处理器20b在从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件时,具体用于:在构建管理界面上展示仓库选项信息,以供构建人员确认是否使用Flutter环境支持的源码仓库;响应于构建人员的确认操作,从源码仓库中,获取混合移动应用所需的目标Flutter源代码文件。
进一步地,处理器20b还用于:响应于构建人员选择使用Flutter环境支持的产物仓库的操作,从产物仓库中获取混合移动应用所需的目标Flutter二进制文件;其中,产物仓库中存储有多个Flutter二进制文件;将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程;运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。
进一步地,在构建指令中包含混合移动应用的类型和版本号,则处理器20b 从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件时,具体用于:根据混合移动应用的类型和版本号,从源码仓库中获取与类型和版本号均对应的Flutter源代码文件,作为目标Flutter源代码文件;相应地,处理器20b从产物仓库中获取混合移动应用所需的目标Flutter二进制文件时,具体用于:根据混合移动应用的类型和版本号,从产物仓库中获取与类型和版本号均对应的Flutter二进制文件,作为目标Flutter二进制文件。
进一步地,处理器20b对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件时,具体用于:在构建管理界面上展示编译方式选项信息,以供构建人员选择使用的编译方式;响应构建人员选择编译方式的操作,使用构建人员选择使用的目标编译方式对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;其中,目标编译方式为Flutter环境支持的调试版本的编译方式或发布版本的编译方式。
进一步地,构建脚本中指定目标Flutter二进制文件的存储位置和名称,则处理器20b将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程时,具体用于:将目标Flutter二进制文件的存储位置和名称作为入参调用CocoaPods工具,以供CocoaPods工具根据名称从存储位置读取目标Flutter二进制文件并将目标Flutter二进制文件添加到原生代码工程中的指定目录下,得到混合代码工程。
进一步地,处理器20b根据配置参数对目标Flutter源代码文件进行参数配置时,具体用于:根据构建脚本中用于进行参数配置的局部脚本代码,结合配置参数,生成目标Flutter源代码文件对应的参数配置项以及对应的可选参数值;在构建管理界面上展示参数配置项以及对应的可选参数值,以供构建人员为参数配置项选择或修改对应的参数值;响应构建人员针对参数配置项发起的选择或修改参数值的操作,将构建人员选择或修改的参数值添加到目标Flutter源代码文件中,以完成参数配置。
进一步地,打包平台是iCI平台。
进一步地,如图2b所示,该电子设备还包括:通信组件20c、显示器20d、电源组件20e、音频组件20f等其它组件。图2b中仅示意性给出部分组件,并不意味着电子设备只包括图2b所示组件。本实施例的电子设备可以实现为台式电脑、笔记本电脑、智能手机或IOT设备等终端设备。
这里需要说明的是:上述实施例提供的电子设备可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
本申请再一实施例提供了存储有计算机指令的计算机可读存储介质,当计算机指令被一个或多个处理器执行时,致使一个或多个处理器执行以下步骤:
响应混合移动应用的构建指令,在构建环境中运行构建脚本,以执行下述构建操作:
从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件;
根据配置参数对目标Flutter源代码文件进行参数配置,并对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;
将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,原生代码工程包括基于原生系统环境开发的混合移动应用所需的部分功能代码;
运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。
进一步地,从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件,包括:
在构建管理界面上展示仓库选项信息,以供构建人员确认是否使用Flutter 环境支持的源码仓库;
响应于构建人员的确认操作,从源码仓库中,获取混合移动应用所需的目标Flutter源代码文件。
进一步地,方法还包括:
响应于构建人员选择使用Flutter环境支持的产物仓库的操作,从产物仓库中获取混合移动应用所需的目标Flutter二进制文件;其中,产物仓库中存储有多个Flutter二进制文件;
将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程;
运行原生代码工程对应的混编脚本以对混合代码工程进行编译和打包,得到混合移动应用的安装包。
进一步地,构建指令中包含混合移动应用的类型和版本号,则从Flutter环境支持的源码仓库中,获取混合移动应用所需的目标Flutter源代码文件,包括:根据混合移动应用的类型和版本号,从源码仓库中获取与类型和版本号均对应的Flutter源代码文件,作为目标Flutter源代码文件;
相应地,从产物仓库中获取混合移动应用所需的目标Flutter二进制文件,包括:根据混合移动应用的类型和版本号,从产物仓库中获取与类型和版本号均对应的Flutter二进制文件,作为目标Flutter二进制文件。
进一步地,对参数配置后的目标Flutter源代码文件进行编译,得到目标 Flutter二进制文件,包括:
在构建管理界面上展示编译方式选项信息,以供构建人员选择使用的编译方式;
响应构建人员选择编译方式的操作,使用构建人员选择使用的目标编译方式对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;
其中,目标编译方式为Flutter环境支持的调试版本的编译方式或发布版本的编译方式。
进一步地,构建脚本中指定目标Flutter二进制文件的存储位置和名称,则将目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,包括:
将目标Flutter二进制文件的存储位置和名称作为入参调用CocoaPods工具,以供CocoaPods工具根据名称从存储位置读取目标Flutter二进制文件并将目标 Flutter二进制文件添加到原生代码工程中的指定目录下,得到混合代码工程。
进一步地,根据配置参数对目标Flutter源代码文件进行参数配置,包括:
根据构建脚本中用于进行参数配置的局部脚本代码,结合配置参数,生成目标Flutter源代码文件对应的参数配置项以及对应的可选参数值;
在构建管理界面上展示参数配置项以及对应的可选参数值,以供构建人员为参数配置项选择或修改对应的参数值;
响应构建人员针对参数配置项发起的选择或修改参数值的操作,将构建人员选择或修改的参数值添加到目标Flutter源代码文件中,以完成参数配置。
进一步地,打包平台是iCI平台。
这里需要说明的是:上述实施例提供的存储介质可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程坐标确定设备的处理器以产生一个机器,使得通过计算机或其他可编程坐标确定设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程坐标确定设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程坐标确定设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种混合移动应用的构建方法,其特征在于,应用于打包平台,预先在所述打包平台上配置构建环境、构建脚本和配置参数,所述构建环境包括Flutter环境和原生系统环境,所述方法包括:
响应混合移动应用的构建指令,在所述构建环境中运行所述构建脚本,以执行下述构建操作:
从Flutter环境支持的源码仓库中,获取所述混合移动应用所需的目标Flutter源代码文件;
根据所述配置参数对所述目标Flutter源代码文件进行参数配置,并对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;
将所述目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,所述原生代码工程包括基于原生系统环境开发的所述混合移动应用所需的部分功能代码;
运行所述原生代码工程对应的混编脚本以对所述混合代码工程进行编译和打包,得到所述混合移动应用的安装包。
2.根据权利要求1所述的方法,其特征在于,所述从Flutter环境支持的源码仓库中,获取所述混合移动应用所需的目标Flutter源代码文件,包括:
在构建管理界面上展示仓库选项信息,以供构建人员确认是否使用所述Flutter环境支持的源码仓库;
响应于构建人员的确认操作,从所述源码仓库中,获取所述混合移动应用所需的目标Flutter源代码文件。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应于构建人员选择使用Flutter环境支持的产物仓库的操作,从所述产物仓库中获取所述混合移动应用所需的目标Flutter二进制文件;其中,所述产物仓库中存储有多个Flutter二进制文件;
将所述目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程;
运行所述原生代码工程对应的混编脚本以对所述混合代码工程进行编译和打包,得到所述混合移动应用的安装包。
4.根据权利要求3所述的方法,其特征在于,所述构建指令中包含所述混合移动应用的类型和版本号,则所述从Flutter环境支持的源码仓库中,获取所述混合移动应用所需的目标Flutter源代码文件,包括:根据所述混合移动应用的类型和版本号,从所述源码仓库中获取与所述类型和版本号均对应的Flutter源代码文件,作为所述目标Flutter源代码文件;
相应地,所述从所述产物仓库中获取所述混合移动应用所需的目标Flutter二进制文件,包括:根据所述混合移动应用的类型和版本号,从所述产物仓库中获取与所述类型和版本号均对应的Flutter二进制文件,作为所述目标Flutter二进制文件。
5.根据权利要求1所述的方法,其特征在于,所述对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件,包括:
在构建管理界面上展示编译方式选项信息,以供构建人员选择使用的编译方式;
响应构建人员选择编译方式的操作,使用所述构建人员选择使用的目标编译方式对所述参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;
其中,所述目标编译方式为Flutter环境支持的调试版本的编译方式或发布版本的编译方式。
6.根据权利要求1所述的方法,其特征在于,所述构建脚本中指定所述目标Flutter二进制文件的存储位置和名称,则所述将所述目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,包括:
将所述目标Flutter二进制文件的存储位置和名称作为入参调用CocoaPods工具,以供CocoaPods工具根据所述名称从所述存储位置读取所述目标Flutter二进制文件并将所述目标Flutter二进制文件添加到所述原生代码工程中的指定目录下,得到混合代码工程。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述根据所述配置参数对所述目标Flutter源代码文件进行参数配置,包括:
根据所述构建脚本中用于进行参数配置的局部脚本代码,结合所述配置参数,生成所述目标Flutter源代码文件对应的参数配置项以及对应的可选参数值;
在构建管理界面上展示所述参数配置项以及对应的可选参数值,以供构建人员为所述参数配置项选择或修改对应的参数值;
响应构建人员针对所述参数配置项发起的选择或修改参数值的操作,将构建人员选择或修改的参数值添加到所述目标Flutter源代码文件中,以完成参数配置。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述打包平台是iCI平台。
9.一种混合移动应用的构建装置,其特征在于,应用于打包平台,预先在所述打包平台上配置构建环境、构建脚本和配置参数,所述构建环境包括Flutter环境和原生系统环境,所述装置包括:
构建控制模块,用于响应混合移动应用的构建指令,在所述构建环境中运行所述构建脚本,以控制下述模块执行构建操作;
获取模块,用于从Flutter环境支持的源码仓库中,获取所述混合移动应用所需的目标Flutter源代码文件;
配置编译模块,用于根据所述配置参数对所述目标Flutter源代码文件进行参数配置,并对参数配置后的目标Flutter源代码文件进行编译,得到目标Flutter二进制文件;
集成模块,用于将所述目标Flutter二进制文件集成到原生代码工程中,得到混合代码工程,所述原生代码工程包括基于原生系统环境开发的所述混合移动应用所需的部分功能代码;
混编模块,用于运行所述原生代码工程对应的混编脚本以对所述混合代码工程进行编译和打包,得到所述混合移动应用的安装包。
10.一种电子设备,其特征在于,包括:存储器和处理器;其中,所述存储器,用于存储计算机程序;所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行权利要求1-8任一项所述方法中的步骤。
11.一种存储有计算机指令的计算机可读存储介质,其特征在于,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行权利要求1-8任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111423975.1A CN114201174A (zh) | 2021-11-26 | 2021-11-26 | 混合移动应用的构建方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111423975.1A CN114201174A (zh) | 2021-11-26 | 2021-11-26 | 混合移动应用的构建方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114201174A true CN114201174A (zh) | 2022-03-18 |
Family
ID=80649181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111423975.1A Pending CN114201174A (zh) | 2021-11-26 | 2021-11-26 | 混合移动应用的构建方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114201174A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795356A (zh) * | 2023-08-21 | 2023-09-22 | 山东为农信息科技有限公司 | Flutter与原生平台的混合开发方法、系统及装置 |
-
2021
- 2021-11-26 CN CN202111423975.1A patent/CN114201174A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795356A (zh) * | 2023-08-21 | 2023-09-22 | 山东为农信息科技有限公司 | Flutter与原生平台的混合开发方法、系统及装置 |
CN116795356B (zh) * | 2023-08-21 | 2023-11-24 | 山东为农信息科技有限公司 | Flutter与原生平台的混合开发方法、系统及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108964968B (zh) | 一种容器云环境下的服务接入管理方法和系统 | |
CN111399840B (zh) | 一种模块开发方法及装置 | |
CN110727440B (zh) | 一种软件封装方法 | |
CN111666096B (zh) | 目标应用的热更新方法和装置、存储介质和电子设备 | |
CN107632827B (zh) | 应用的安装包的生成方法及装置 | |
CN106294113B (zh) | 一种基于可编程式测试服务的创建方法及装置 | |
CN110673923A (zh) | Xwiki系统配置方法、系统及计算机设备 | |
CN111897623B (zh) | 一种集群管理方法、装置、设备及存储介质 | |
CN105094878A (zh) | 一种集成系统库文件的方法和装置 | |
CN112769706B (zh) | 组件化路由方法及系统 | |
CN111475142A (zh) | 一种小程序文件包的生成方法、装置及设备 | |
CN113094028A (zh) | 一种Windows桌面程序开发框架、方法及相关组件 | |
CN114201174A (zh) | 混合移动应用的构建方法、装置、电子设备及存储介质 | |
CN111240987B (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
CN110806891A (zh) | 嵌入式设备软件版本的生成方法及装置 | |
JP6001199B2 (ja) | アンドロイドアプリケーションのタイゼン導入可能パッケージ自動変換方法及びこのためのコンピュータ読み取り可能な記録媒体 | |
CN112328241B (zh) | 一种应用程序开发中创建Android库模块依赖关系的方法及装置 | |
CN114791884A (zh) | 测试环境的构建方法、装置、存储介质及电子设备 | |
CN110502251B (zh) | 应用安装方法及装置 | |
CN111026502B (zh) | 一种业务调试架构创建方法、装置及电子设备、存储介质 | |
CN113835827A (zh) | 基于容器Docker的应用部署方法、装置及电子设备 | |
CN113835680A (zh) | 应用程序的生成方法、装置、电子设备及计算机存储介质 | |
CN114416219B (zh) | 系统函数调用方法、装置、电子设备及可读介质 | |
CN113032004A (zh) | 在开发环境中管理开发作业的方法、设备和程序产品 | |
CN113805878B (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 |