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

目录

[1 -> HAP/HSP运行时获取编译构建参数](#1 -> HAP/HSP运行时获取编译构建参数)

[1.1 -> 生成BuildProfile类文件](#1.1 -> 生成BuildProfile类文件)

[1.2 -> 在代码中获取构建参数](#1.2 -> 在代码中获取构建参数)

[1.3 -> 默认参数](#1.3 -> 默认参数)

[1.4 -> 自定义参数](#1.4 -> 自定义参数)

[2 -> HAR运行时获取编译构建参数](#2 -> HAR运行时获取编译构建参数)

[2.1 -> 生成BuildProfile类文件](#2.1 -> 生成BuildProfile类文件)

[2.2 -> 在代码中获取构建参数](#2.2 -> 在代码中获取构建参数)

[2.3 -> 默认参数](#2.3 -> 默认参数)

[2.4 -> 自定义参数](#2.4 -> 自定义参数)

[3 -> 工程级配置自定义构建参数](#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会根据当前工程构建的配置信息生成一部分默认参数,开发者可以在代码中直接使用。

|---------------------|-------------|------------------|
| 参数名 | 类型 | 说明 |
| 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 默认参数说明]

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会根据当前工程构建的配置信息生成一部分默认参数,开发者可以在代码中直接使用。

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

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"
          ]
        }
      ]
    }
  ]
}

感谢各位大佬支持!!!

互三啦!!!