鸿蒙应用如何配置多环境

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

相关推荐
youyin4 天前
HarmonyOS ArkUI 组件与自定义组件零基础:从搭页面到组件化开发
华为·harmonyos
HwJack205 天前
【HarmonyOS开发小实践】ArkTS 从 TypeScript 到方舟语言的演进
华为·harmonyos
威哥爱编程5 天前
HarmonyOS 7 星盾机密风控实战:设备风险因子端侧融合计算,可用不可见
harmonyos·arkts
威哥爱编程5 天前
HarmonyOS 7 应用快启实战:关键资源预加载进内存,冷启告别白屏
华为·harmonyos·arkts
马剑威(威哥爱编程)5 天前
【共创稿事节】HarmonyOS 7 视觉 AI 进阶实战:人脸检测 + 通用文字识别(OCR)两步接入
华为·harmonyos·arkts
HMS Core5 天前
HarmonyOS智慧多窗,让应用在任意窗口都“恰到好处”
harmonyos
梦想不只是梦与想5 天前
鸿蒙 应用发布准备工作(一)
harmonyos·鸿蒙上架·鸿蒙应用发布
马剑威(威哥爱编程)5 天前
【共创稿事节】HarmonyOS 7 文搜图实战:自然语言检索本地图片,全流程端侧闭环
华为·harmonyos
李游Leo5 天前
HarmonyOS 7 HAR + HSP 工程化实战:模块复用、包体积控制与依赖边界
harmonyos