在编译构建时，Hvigor会生成BuildProfile类，开发者可以通过该类在运行时获取编译构建参数，也可以在build-profile.json5中通过buildProfileFields增加自定义字段，从而在运行时获取自定义的参数。

## 使用说明

buildProfileFields的优先级：模块级target > 模块级buildOptionSet > 模块级buildOption > 工程级product > 工程级buildModeSet

## 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)”。
* 在Terminal中执行如下命令：

  收起

  自动换行

  深色代码主题

  复制

  ```
  1. hvigorw GenerateBuildProfile
  ```

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

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ee/v3/I5sHR7lLSZGoIZSz43aiWQ/zh-cn_image_0000002532670311.png?HW-CC-KV=V1&HW-CC-Date=20260414T054934Z&HW-CC-Expire=86400&HW-CC-Sign=458C294A4A1326BD157565B4E1B5EF0BA8824AAF7392CFA45C0E4EA3A1FDA744)

### 在代码中获取构建参数

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

收起

自动换行

深色代码主题

复制

```
1. import BuildProfile from '${packageName}/BuildProfile';
```

说明

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

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

收起

自动换行

深色代码主题

复制

```
1. @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 | string | Product名称。 |
| BUILD\_MODE\_NAME | string | 编译模式。 |
| DEBUG | boolean | 应用是否可调试。 |

### 自定义参数

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

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

配置示例如下所示：

收起

自动换行

深色代码主题

复制

```
1. {
2. "apiType": "stageMode",
3. "buildOption": {
4. "arkOptions": {
5. "buildProfileFields": {
6. "data": "Data",
7. }
8. }
9. },
10. "buildOptionSet": [
11. {
12. "name": "release",
13. "arkOptions": {
14. "buildProfileFields": {
15. "buildOptionSetData": "BuildOptionSetDataRelease",
16. "data": "DataRelease"
17. }
18. }
19. },
20. {
21. "name": "debug",
22. "arkOptions": {
23. "buildProfileFields": {
24. "buildOptionSetData": "BuildOptionSetDataDebug",
25. "data": "DataDebug"
26. }
27. }
28. }
29. ],
30. "targets": [
31. {
32. "name": "default",
33. "config": {
34. "buildOption": {
35. "arkOptions": {
36. "buildProfileFields": {
37. "targetData": "TargetData",
38. "data": "DataTargetDefault"
39. }
40. }
41. }
42. }
43. },
44. {
45. "name": "default1",
46. "config": {
47. "buildOption": {
48. "arkOptions": {
49. "buildProfileFields": {
50. "targetData": "TargetData1",
51. "data": "DataTargetDefault1"
52. }
53. }
54. }
55. }
56. },
57. {
58. "name": "ohosTest",
59. }
60. ]
61. }
```

## HAR运行时获取编译构建参数

### 生成BuildProfile类文件

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

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

  收起

  自动换行

  深色代码主题

  复制

  ```
  1. hvigorw GenerateBuildProfile
  ```

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

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/90/v3/yiPrZYFGQmS8UyfRmlDmBg/zh-cn_image_0000002532670309.png?HW-CC-KV=V1&HW-CC-Date=20260414T054934Z&HW-CC-Expire=86400&HW-CC-Sign=AB18E6DFDE70B9594116B28700A4C57D5B5AEE93B621FEF03D219EE762AE7171)

### 在代码中获取构建参数

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

收起

自动换行

深色代码主题

复制

```
1. import BuildProfile from './BuildProfile';
```

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

收起

自动换行

深色代码主题

复制

```
1. const HAR_VERSION: string = BuildProfile.HAR_VERSION;
```

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/22/v3/LaIpu7cBRmWTm2kLqm-u4w/zh-cn_image_0000002501070236.png?HW-CC-KV=V1&HW-CC-Date=20260414T054934Z&HW-CC-Expire=86400&HW-CC-Sign=78AB46738C22F057A188F955ABB9961F837AE2F655C986B780CBA73E5F0D3237)

### 默认参数

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

**表2** 默认参数说明

展开

| 参数名 | 类型 | 说明 |
| --- | --- | --- |
| HAR\_VERSION | string | HAR版本号。 |
| BUILD\_MODE\_NAME | string | 编译模式。 |
| DEBUG | boolean | 应用是否可调试。 |
| TARGET\_NAME | string | 目标名称。 |

### 自定义参数

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

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

配置示例如下所示：

收起

自动换行

深色代码主题

复制

```
1. {
2. "apiType": "stageMode",
3. "buildOption": {
4. "arkOptions": {
5. "buildProfileFields": {
6. "data": "Data",
7. }
8. }
9. },
10. "buildOptionSet": [
11. {
12. "name": "release",
13. "arkOptions": {
14. "buildProfileFields": {
15. "buildOptionSetData": "BuildOptionSetDataRelease",
16. "data": "DataRelease"
17. }
18. }
19. },
20. {
21. "name": "debug",
22. "arkOptions": {
23. "buildProfileFields": {
24. "buildOptionSetData": "BuildOptionSetDataDebug",
25. "data": "DataDebug"
26. }
27. }
28. }
29. ],
30. "targets": [
31. {
32. "name": "default",
33. }
34. ]
35. }
```

## 工程级配置自定义构建参数

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

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

配置示例如下所示：

收起

自动换行

深色代码主题

复制

```
1. {
2. "app": {
3. "signingConfigs": [],
4. "products": [
5. {
6. "name": "default",
7. "signingConfig": "default",
8. "compatibleSdkVersion": "6.0.2(22)",
9. "runtimeOS": "HarmonyOS",
10. "buildOption": {
11. "arkOptions": {
12. "buildProfileFields": {
13. "productValue": "defaultValue"
14. }
15. }
16. }
17. }
18. ],
19. "buildModeSet": [
20. {
21. "name": "debug",
22. "buildOption": {
23. "arkOptions": {
24. "buildProfileFields": {
25. "productBuildModeValue": "debugValue"
26. }
27. }
28. }
29. },
30. {
31. "name": "release"
32. }
33. ]
34. },
35. "modules": [
36. {
37. "name": "entry",
38. "srcPath": "./entry",
39. "targets": [
40. {
41. "name": "default",
42. "applyToProducts": [
43. "default"
44. ]
45. }
46. ]
47. }
48. ]
49. }
```