当前位置: 首页 > news >正文

【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_NAMEstring应用的Bundle名称。
BUNDLE_TYPEstring应用的Bundle类型。
VERSION_CODEnumber应用的版本号。
VERSION_NAMEstring应用版本号的文字描述。
TARGET_NAMEstringTarget名称。
PRODUCT_NAMEstringProduct名称。
BUILD_MODE_NAMEstring编译模式。
DEBUGboolean应用是否可调试。

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_VERSIONstringHAR版本号。
BUILD_MODE_NAMEstring编译模式。
DEBUGboolean应用是否可调试。
TARGET_NAMEstring目标名称。

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

感谢各位大佬支持!!!

互三啦!!!

http://www.lryc.cn/news/581934.html

相关文章:

  • 深入解析解释器模式:从理论到实践的完整指南
  • 浅学 Kafka
  • 汽车功能安全系统阶段开发【技术安全需求TSR】4
  • 图像处理中的边缘填充:原理与实践
  • 【保姆级图文详解】大模型、Spring AI编程调用大模型
  • 2025最新如何解决VSCode远程连接开发机失败/解决方案大全
  • Python操作mysql数据库:数据库三层结构,Mysql建表语句操作,mysql的数据库备份,mysql的数据库恢复
  • 图像处理中的插值方法:原理与实践
  • ​​MySQL高可用架构深度解析:主从复制、MGR与读写分离实战​​
  • 使用 GDB 调试 Redis 服务进程指南
  • PC端基于SpringBoot架构控制无人机(三):系统架构设计
  • FlashDepth | 混合模型+Mamba革新,24 FPS实时2K视频深度估计,超越Depth Anything v2
  • (倍增)洛谷 P1613 跑路/P4155 国旗计划
  • ZooKeeper 实现分布式锁
  • 【Note】《Kafka: The Definitive Guide》 第5章:深入 Kafka 内部结构,理解分布式日志系统的核心奥秘
  • 【kafka-python使用学习笔记2】Python操作Kafka之环境准备(2)亲测有效有图有真相
  • 专为磁盘存储设计的数据结构——B树
  • 快速上手百宝箱搭建知识闯关游戏助手
  • 第二届虚拟现实、图像和信号处理国际学术会议(VRISP 2025)
  • Java面试宝典:异常
  • Python实现MCP Server的完整Demo
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十四天
  • 《Effective Python》第十二章 数据结构与算法——当精度至关重要时使用 decimal
  • Node.js特训专栏-实战进阶:14.JWT令牌认证原理与实现
  • 《30天打牢数模基础-第一版》(已完结) 需要自取
  • macOS运行python程序遇libiomp5.dylib库冲突错误解决方案
  • 基于Rust红岩题材游戏、汽车控制系统、机器人运动学游戏实例
  • 在内网环境中,Java服务调用PHP接口时报错的排查方法
  • Mac 电脑无法读取硬盘的解决方案
  • AI智能体长期记忆系统架构设计与落地实践:从理论到生产部署