鸿蒙应用如何配置多环境

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

相关推荐
Georgewu6 小时前
【HarmonyOS】鸿蒙端云一体化开发入门详解 (一)
harmonyos
Georgewu6 小时前
【HarmonyOS】Web 组件的 PDF 文档预览功能详解
harmonyos
Chen--Xing8 小时前
第一届OpenHarmonyCTF--Crypto--WriteUp
网络安全·密码学·harmonyos
HarmonyOS_SDK10 小时前
京东携手HarmonyOS SDK首发家电AR高精摆放功能
harmonyos
塞尔维亚大汉10 小时前
鸿蒙内核源码分析(根文件系统) | 先挂到/上的文件系统
源码·harmonyos
别说我什么都不会10 小时前
【OpenHarmony】鸿蒙开发之Checksum
harmonyos
周胡杰12 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
simple丶13 小时前
【HarmonyOS】封装用户鉴权工具类
harmonyos·arkts·arkui
simple丶13 小时前
【HarmonyOS】基于Axios封装网络请求工具类
harmonyos·arkts·arkui
万少15 小时前
2-自然壁纸实战教程-AGC 新建项目
前端·harmonyos