鸿蒙应用如何配置多环境

大家好,我是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 文件判断打包环境。

相关推荐
别说我什么都不会2 小时前
【仓颉三方库】 网络组件——upload4cj
harmonyos
simple_lau4 小时前
如何从零到一开始搭建鸿蒙项目
harmonyos
HZW89706 小时前
鸿蒙应用开发—数据持久化之SQLite
android·前端·harmonyos
别说我什么都不会6 小时前
【仓颉三方库】 网络组件——rpc4cj
harmonyos
白羊@7 小时前
鸿蒙案例---生肖抽卡
前端·javascript·华为·harmonyos
幽蓝计划7 小时前
HarmonyOS NEXT开发教程:全局悬浮窗
华为·harmonyos
我爱学习_zwj7 小时前
Node.js入门
harmonyos
H.ZWei8 小时前
鸿蒙应用开发—鸿蒙app一键安装脚本
python·华为·harmonyos·安装·hdc
马剑威(威哥爱编程)8 小时前
鸿蒙动画与交互设计:ArkUI 3D变换与手势事件详解
华为·交互·harmonyos·arkts