场景描述
在编译构建的过程中如何插入使用者需要的自定义构建任务,使用者可以通过什么方式获取扩展编译构建参数从而在运行时获取自定义的参数以及自定义修改编译产物属性。
能力说明
hvigor-ohos-plugin插件支持在hvigorfile.ts里插入使用者的自定义构建任务,并且在运行时获取到自定义的一些编译参数,以及实现修改产物属性的功能。
一、 构建生命周期以及任务流程
1.构建生命周期
hvigor有三个不同的阶段,分为初始化、配置和执行,hvigor会按顺序运行这些阶段。
初始化*:
1. 根据命令参数和hvigor-config.json5文件中的配置,设置hvigor的构建参数,并构造出hvigor对象,此对象贯穿整个hvigor生命周期,从最开始创建出来一直到此次构建结束才被销毁。
2. 通过项目根目录下的build-profile.json5文件,创建出rootNodeDescriptor实例,并通过其中的modules字段,来初始化出工程中所有模块的NodeDescriptor对象实例。
3. 执行项目根目录下的hvigorconfig.ts文件,可以在此文件中通过hvigor的相关API来为生命周期注册hook或在构建开始时进行其他处理。
4. 构造出每个节点的HvigorNode对象实例。
配置:
1. 执行每个node中的hvigorfile.ts文件,为每个node添加plugin,执行plugin的apply方法,并添加plugin的上下文。
2. 根据前一步加载出的plugin和task,构造出DAG图。
hvigor在执行任何任务之前会构建任务依赖图,所有任务会形成一个有向无环图(DAG),如下示例图,任务之间的依赖关系用箭头进行表示:
执行:
1. 执行选定的任务。
2. 任务之间的依赖关系决定了任务执行顺序。
3. 任务可以并行执行。
2.HAP基础任务流程
二、 获取自定义参数:
方式1(生成BuildProfile类文件):
HAP/HSP运行时获取编译构建参数
生成BuildProfile类文件
当前有以下几种方式可以生成BuildProfile类文件:
选中需要编译的模块,在菜单栏选择“Build > Generate Build Profile ${moduleName}”。
在菜单栏选择“Build > Build Hap(s)/APP(s) > Build Hap(s)”或“Build > Build Hap(s)/APP(s) > Build APP(s)”
生成BuildProfile类文件后,在代码中可以通过如下方式引入该文件:
-
import BuildProfile from’BuildProfile’;
-
通过如下方式获取到构建参数:
@State message: string = BuildProfile.BUNDLE_NAME;
-
默认参数
生成BuildProfile类文件时,Hvigor会根据当前工程构建的配置信息生成一部分默认参数,开发者可以在代码中直接使用。
表1
参数名 | 类型 | 说明 |
---|---|---|
BUNDLE_NAME | string | 应用的Bundle名称。 |
BUNDLE_TYPE | string | 应用的Bundle类型。 |
VERSION_CODE | number | 应用的版本号。 |
VERSION_NAME | string | 应用版本号的文字描述。 |
TARGET_NAME | string | Target名称。 |
PRODUCT_NAME |