鸿蒙开发中 区分不同环境的配置 📅 发布时间:2026/7/15 4:42:56 👁️ 浏览次数: 在开发中区分不同环境如开发、测试、生产的配置核心难点在于构建产物与配置的分离。针对debug和release以及可能的更多环境梳理了4种主流方案从轻量级到企业级利弊根据团队规模选择。方案一基于 Build Profile 的字段注入最推荐原生支持这是鸿蒙官方推荐的方案利用build-profile.json5中的buildOption和arkOptions配合process.env在编译时注入变量。做法在build-profile.json5的targets中定义debug和release并在buildOption中配置buildProfileFields注入全局常量。优点原生支持无需第三方库编译时确定运行时无性能损耗可以精确控制每个target的配置。缺点配置写法略繁琐如果环境超过3个如dev/sit/uat/prodtargets会变得臃肿。适用场景绝大多数项目尤其是只有 dev 和 prod 两套环境时。方案二多 Bundle Name / 多 Module 方案物理隔离为不同环境创建独立的Module或使用不同的bundleName包名每个模块持有自己的constants文件。做法创建common-debug和common-release两个 hap 模块或者利用HAP的target能力替换ets目录下的配置文件。优点绝对的物理隔离即使写错代码也不会混淆适合大型多人协作项目。缺点维护成本高公共代码修改时需要同步多个模块切换环境需要重新安装应用因为包名不同。适用场景系统级应用或有严格安全审计要求的项目。方案三运行时动态读取本地配置文件JSON/Properties将不同环境的 Host 写在rawfile目录下的多个 JSON 文件中如config.dev.json通过代码逻辑判断当前是 Debug 还是 Release 模式来读取对应文件。做法通过ohos.bundle.bundleManager获取应用的bundleInfo判断debug字段或者通过AppStorage在启动时设置一个全局环境变量。优点配置修改灵活甚至可以热更新配置如果从远端拉取代码逻辑直观。缺点配置文件会打包进应用如果反编译所有环境的 Host 都会暴露安全风险需要额外的文件读取 I/O 操作。适用场景内部测试包或对 IP 泄露不敏感的 Demo 项目。方案四基于 AGP/Hvigor 构建脚本生成配置文件最自动化利用鸿蒙的构建工具 Hvigor在hvigorfile.ts中编写自定义 Task。在编译打包前根据当前的product或target动态生成一个Config.ets文件写入到entry/src/main/ets/目录下。做法构建时读取环境变量如npm run build:dev脚本往源码目录写入export const BASE_URL https://dev.api.com。优点零运行时开销配置被直接编译进字节码且构建产物中只有当前环境的 Host。缺点对团队成员要求较高需理解 Hvigor 脚本如果误操作容易把开发环境的配置覆盖到正式版。适用场景成熟的 CI/CD 流水线项目。建议小团队/快速迭代选方案一Build Profile官方、稳定、够用。需要 CI/CD 自动打包不同环境选方案四Hvigor 脚本生成最干净。安全第一防逆向方案四或方案二千万别用方案三存明文。
实验09 基于Packet Tracer的RIPv2校园网互通实战配置 1. 实验环境准备与拓扑搭建在开始RIPv2配置前,我们需要先搭建一个典型的校园网三层架构模拟环境。打开Packet Tracer后,按照以下步骤操作:设备选型:从左侧设备栏拖拽1台3560三层交换机、2台2911路由器(分别作为校园网出… 2026/7/15 4:42:56
【finetuning】交叉编码器微调案例 本案例演示如何使用LlamaIndex微调交叉编码器,以提高检索系统的重排序效果。通过使用QASPER数据集,我们将展示从数据准备、模型微调到评估的完整流程。1. 案例目标本案例的主要目标是:学习交叉编码器微调:了解如何使用LlamaIndex对… 2026/7/15 4:42:56
微服务学习 --- Spring Cloud概述 目录 1.认识微服务 1.1 单体架构 1.2 集群和分布式架构 1.3 微服务架构 1.4 微服务带来的优势与挑战 2.微服务解决方案 - Spring Cloud 2.1 什么是Spring Cloud 2.2 Spring Cloud版本 2.3 Spring Cloud实现方案 3.小结 从这篇文章开始,我将开始介绍微服务… 2026/7/15 4:42:56
Qt跨平台开发实战:从环境搭建到部署优化的完整指南 1. 项目概述:为什么选择Qt进行C跨平台开发?如果你是一名C开发者,正在寻找一个既能构建漂亮界面,又能轻松实现跨平台部署的框架,那么Qt几乎是一个绕不开的名字。我接触Qt已经超过十年,从早期的桌面工具开发&… 2026/7/15 6:49:46
MSP430FR21xx/FR2000超低功耗MCU实战:FRAM存储与功耗优化详解 1. 项目概述在电池供电的嵌入式世界里,功耗就是生命线。无论是挂在树上的环境监测节点,还是藏在门框里的门窗传感器,亦或是戴在手腕上的健身手环,它们的共同使命就是在有限的电池容量下,尽可能长久地工作。作为这些设备… 2026/7/15 6:49:46
Diablo Edit2:重新定义暗黑破坏神2的角色构建体验 Diablo Edit2:重新定义暗黑破坏神2的角色构建体验 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾为暗黑破坏神2中某个build的失败而感到沮丧?是否因为技能点分配不… 2026/7/15 6:45:44
基于深度学习的端到端声音事件检测与定位系统实战 最近在开发智能家居或安防系统时,很多开发者会遇到一个看似简单却颇为棘手的问题:如何准确识别和定位特定声音事件,比如房间里的"跺脚声"?传统的解决方案要么成本高昂,要么准确率不尽如人意。本文将深入探讨… 2026/7/15 6:43:43
Python字符串格式化全解析:从%占位符到f-string的演进与实战 1. Python字符串格式化的前世今生 第一次接触Python字符串格式化时,我被各种百分号和花括号搞得晕头转向。后来在实际项目中踩过不少坑才明白,Python的字符串格式化其实经历了三个重要的演进阶段:从最早的%操作符,到更灵活的forma… 2026/7/15 6:39:42
[AI] 这周最值得继续追的 3 个 AI / Dify 热点,到底哪一个最可能先落地? 这段时间 AI 相关信息实在太多了。 每天打开资讯流,你都会看到类似内容: 新模型发布了 智能体又火了 工作流自动化又出了新玩法 企业助手、知识库、周报生成、评审助手、内部 AI 平台,几乎每个方向都有人在做 问题是: 大多数团队根本没有精力把所有热点都跟一遍。 所以真正… 2026/7/15 6:35:40
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41