鸿蒙应用如何配置多环境

大家好,我是simple。我的理想是利用科技手段来解决生活中遇到的各种问题

前言

众所周知,开发证书和发布证书并不是通用的。而上架过app的同学都知道,上架基本上不可能一次性成功,而且日常更新的过程中,日常开发与维护也会有时常上架更新app的场景。但是每次上架app都需要切换证书,再打包。

但证书特多,每次切换也是个大工程,要是忘了换哪个证书,上架被打回还是小事,万一误了抢救线上bug的时间,就大事不妙了。

以及环境的改变,有些变量也需要跟着变化,比如线上地址,这些要是忘了改,也得遭老罪了。

所以在开发中,配置多套证书、环境变量控制也是有需求的。

配置多套环境

我们需要在全局的build-profile.json5里面配置app.products,使其可以打包出多套产品。如下:

json 复制代码
"products": [
  {
    "name": "default",// 切记products里面至少要有一个default
    "signingConfig": "default",
    "compatibleSdkVersion": "5.0.0(12)",
    "runtimeOS": "HarmonyOS",
    "buildOption": {
      "strictMode": {
        "caseSensitiveCheck": true,
        "useNormalizedOHMUrl": true
      }
    }
  },
  {
    "name": "release",
    "signingConfig": "release",
    "compatibleSdkVersion": "5.0.0(12)",
    "runtimeOS": "HarmonyOS",
    "buildOption": {
      "strictMode": {
        "caseSensitiveCheck": true,
        "useNormalizedOHMUrl": true
      }
    }
  }
]

添加一套新的签名release(这个名称需要与上文的signingConfig对应)

在modules里面再配置一个target,让phone入口有对应的product

json 复制代码
{
  "name": "phone",
  "srcPath": "./entry",
  "targets": [
    {
      "name": "default",
      "applyToProducts": [
        "default"
      ]
    },
    {
      "name": "release",
      "applyToProducts": [
        "release"
      ]
    }
  ],
},

配置entry目录下的build-profile.json5,更改targets配置

json 复制代码
[
    {
      "name": "default"
    },
    {
      "name": "release"
    },
]

这样就已经完成了多套签名的配置了,如果需要切换签名,只需要点击右上角的product图标即可。

定义环境变量

鸿蒙项目不是前端项目,没有.env文件,也没有--mode=production。

上述我们已经知道了如何打多个包。此时我们只需要知道我们现在打的包是release还是default,那我们就可以自己进行环境的区分了。

正常情况下,我们并不能知道当前是在哪个方式进行打包,但是HAR运行时会获取编译构建参数,生成BuildProfile类文件,所以我们可以曲线救国,进行环境的区分。我们在har包中引入BuildProfile文件

ts 复制代码
import BuildProfile from '../../../../BuildProfile';
const isRelease = (BuildProfile.BUILD_MODE_NAME as string) === 'release';

此时我们在配置一些json文件,然后通过isRelease变量或者声明一个映射就可以对当前环境进行判断。

总结

大概步骤如下: 1.鸿蒙开发中配置多套证书与环境变量。 2.在配置多套环境上,于全局 build-profile.json5 配置、app.products 等,完成多套签名配置,切换签名。 3.定义环境变量时,借助 HAR 运行引入 BuildProfile 文件判断打包环境。

相关推荐
nashane9 小时前
HarmonyOS 6学习:CapsLock键失效诊断与长截图完整实现指南
学习·华为·harmonyos
richard_yuu11 小时前
鸿蒙心理测评模块实战|PHQ-9/GAD7双量表答题、实时计分与结果本地化存储
华为·harmonyos
不爱吃糖的程序媛14 小时前
2026年Electron 鸿蒙PC环境搭建指南
人工智能·华为·harmonyos
nashane14 小时前
HarmonyOS 6学习:长截图功能开发中的滚动拼接与权限处理实战
人工智能·华为·harmonyos
大师兄666816 小时前
从零开发一个 HarmonyOS 输入法——KikaInputMethod 完整拆解
harmonyos·服务卡片·harmonyos6·formkit
Python私教21 小时前
鸿蒙 NEXT 也能接 MCP?用 ArkTS 跑通 AI Agent 工具链
人工智能·华为·harmonyos
Swift社区1 天前
分布式能力在鸿蒙 PC 上到底怎么用?
分布式·华为·harmonyos
nashane1 天前
HarmonyOS 6学习:外接键盘CapsLock与长截图功能的实战调试与完整解决方案
学习·华为·计算机外设·harmonyos
aqi002 天前
一文理清 HarmonyOS 6.0.2 涵盖的十个升级点
android·华为·harmonyos·鸿蒙·harmony