> 技术文档 > 【HarmonyOS Next之旅】DevEco Studio使用指南(四十一) -> 获取自定义编译参数

【HarmonyOS Next之旅】DevEco Studio使用指南(四十一) -> 获取自定义编译参数

目录

1 -> HAP/HSP运行时获取编译构建参数

1.1 -> 生成BuildProfile类文件

1.2 -> 在代码中获取构建参数

1.3 -> 默认参数

1.4 -> 自定义参数

2 -> HAR运行时获取编译构建参数

2.1 -> 生成BuildProfile类文件

2.2 -> 在代码中获取构建参数

2.3 -> 默认参数

2.4 -> 自定义参数

3 -> 工程级配置自定义构建参数


1 -> HAP/HSP运行时获取编译构建参数

1.1 -> 生成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)”。
  • 在Terminal中执行如下命令:
hvigorw GenerateBuildProfile

执行完上述操作后,将在“${moduleName} / build / ${productName} / generated / profile / ${targetName} ”目录下生成BuildProfile.ets文件。示例如下所示:

1.2 -> 在代码中获取构建参数

生成BuildProfile类文件后,在代码中可以通过如下方式引入该文件,其中packageName是模块级oh-package.json5文件中name字段对应的值。

import BuildProfile from \'${packageName}/BuildProfile\';

说明

在HSP中使用import BuildProfile from \'BuildProfile\'在跨包集成HSP的时候可能会产生编译错误,推荐使用import BuildProfile from \'${packageName}/BuildProfile\'。

通过如下方式获取到构建参数:

@State message: string = BuildProfile.BUNDLE_NAME;

1.3 -> 默认参数

生成BuildProfile类文件时,Hvigor会根据当前工程构建的配置信息生成一部分默认参数,开发者可以在代码中直接使用。

表1 默认参数说明 参数名 类型 说明 BUNDLE_NAME string 应用的Bundle名称。 BUNDLE_TYPE string 应用的Bundle类型。 VERSION_CODE number 应用的版本号。 VERSION_NAME string 应用版本号的文字描述。 TARGET_NAME string Target名称。 PRODUCT_NAME string Product名称。 BUILD_MODE_NAME string 编译模式。 DEBUG boolean 应用是否可调试。

1.4 -> 自定义参数

可以在模块级的build-profile.json5文件中增加自定义参数,在生成BuildProfile类文件后,在代码中使用自定义参数。

自定义参数可以在buildOption、buildOptionSet、targets节点下的arkOptions子节点中通过增加buildProfileFields字段实现,自定义参数通过key-value键值对的方式配置,其中value取值仅支持number、string、boolean类型。

配置示例如下所示:

{ \"apiType\": \"stageMode\", \"buildOption\": { \"arkOptions\": { \"buildProfileFields\": { \"data\": \"Data\", } } }, \"buildOptionSet\": [ { \"name\": \"release\", \"arkOptions\": { \"buildProfileFields\": { \"buildOptionSetData\": \"BuildOptionSetDataRelease\", \"data\": \"DataRelease\" } } }, { \"name\": \"debug\", \"arkOptions\": { \"buildProfileFields\": { \"buildOptionSetData\": \"BuildOptionSetDataDebug\", \"data\": \"DataDebug\" } } } ], \"targets\": [ { \"name\": \"default\", \"config\": { \"buildOption\": { \"arkOptions\": { \"buildProfileFields\": {  \"targetData\": \"TargetData\",  \"data\": \"DataTargetDefault\" } } } } }, { \"name\": \"default1\", \"config\": { \"buildOption\": { \"arkOptions\": { \"buildProfileFields\": {  \"targetData\": \"TargetData1\",  \"data\": \"DataTargetDefault1\" } } } } }, { \"name\": \"ohosTest\", } ]}

2 -> HAR运行时获取编译构建参数

2.1 -> 生成BuildProfile类文件

当前有以下几种方式可以生成BuildProfile类文件:

  • 选中需要编译的模块,在菜单栏选择“Build > Generate Build Profile ${moduleName}”。
  • 选中需要编译的模块,在菜单栏选择“Build > Make Module ${moduleName}”。
  • 在Terminal中执行如下命令:
hvigorw GenerateBuildProfile

执行完上述操作后,将在模块根目录下生成BuildProfile.ets文件(该文件可放置在.gitignore文件中进行忽略)。示例如下所示:

2.2 -> 在代码中获取构建参数

生成BuildProfile类文件后,在代码中可以通过相对路径引入该文件,如在HAR模块的Index.ets文件中使用该文件:

import BuildProfile from \'./BuildProfile\';

通过如下方式获取到构建参数:

const HAR_VERSION: string = BuildProfile.HAR_VERSION;

2.3 -> 默认参数

生成BuildProfile类文件时,Hvigor会根据当前工程构建的配置信息生成一部分默认参数,开发者可以在代码中直接使用。

表2 默认参数说明 参数名 类型 说明 HAR_VERSION string HAR版本号。 BUILD_MODE_NAME string 编译模式。 DEBUG boolean 应用是否可调试。 TARGET_NAME string 目标名称。

2.4 -> 自定义参数

可以在模块级的build-profile.json5文件中增加自定义参数,在生成BuildProfile类文件后,在代码中使用自定义参数。

自定义参数可以在buildOption、buildOptionSet节点下的arkOptions子节点中通过增加buildProfileFields字段实现,自定义参数通过key-value键值对的方式配置,其中value取值仅支持number、string、boolean类型。

配置示例如下所示:

{ \"apiType\": \"stageMode\", \"buildOption\": { \"arkOptions\": { \"buildProfileFields\": { \"data\": \"Data\", } } }, \"buildOptionSet\": [ { \"name\": \"release\", \"arkOptions\": { \"buildProfileFields\": { \"buildOptionSetData\": \"BuildOptionSetDataRelease\", \"data\": \"DataRelease\" } } }, { \"name\": \"debug\", \"arkOptions\": { \"buildProfileFields\": { \"buildOptionSetData\": \"BuildOptionSetDataDebug\", \"data\": \"DataDebug\" } } } ], \"targets\": [ { \"name\": \"default\", } ]}

3 -> 工程级配置自定义构建参数

可以在工程级的build-profile.json5文件中增加自定义参数,该自定义参数会生成到所有模块的BuildProfile类文件,在代码中使用自定义参数。

自定义参数可以在工程级products、buildModeSet中的buildOption节点下的arkOptions子节点中通过增加buildProfileFields字段实现,自定义参数通过key-value键值对的方式配置,其中value取值仅支持number、string、boolean类型。

配置示例如下所示:

{ \"app\": { \"signingConfigs\": [], \"products\": [ { \"name\": \"default\", \"signingConfig\": \"default\", \"compatibleSdkVersion\": \"5.0.2(14)\", \"runtimeOS\": \"HarmonyOS\", \"buildOption\": { \"arkOptions\": { \"buildProfileFields\": {  \"productValue\": \"defaultValue\" } } } } ], \"buildModeSet\": [ { \"name\": \"debug\", \"buildOption\": { \"arkOptions\": { \"buildProfileFields\": {  \"productBuildModeValue\": \"debugValue\" } } } }, { \"name\": \"release\" } ] }, \"modules\": [ { \"name\": \"entry\", \"srcPath\": \"./entry\", \"targets\": [ { \"name\": \"default\", \"applyToProducts\": [ \"default\" ] } ] } ]}

感谢各位大佬支持!!!

互三啦!!!