[鸿蒙开发] 12 – 了解下HarmonyOS应用/服务发布流程

前言:之前参加鸿蒙开发者培训,了解到HarmonyOS应用的签名和iOS很像。虽然现在应用还在开发中,但是为了踩坑,提前了解下HarmonyOS应用签名相关的一些知识。

1. 简介

HarmonyOS通过数字证书(.cer)与Profile文件(.p7b文件)等签名信息来保证应用/服务的完整性,因此,需要使用发布证书和Profile文件对应用/服务进行签名后才能发布。

开发者完成HarmonyOS应用/服务开发后,需要将应用/服务打包成App Pack(.app文件),用于上架到AppGallery Connect。发布应用/服务的流程如下图所示:

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

2. 准备签名文件

在申请数字证书和Profile文件前,首先需要通过DevEco Studio来生成密钥(存储在.p12的密钥库文件中)和证书请求文件(.csr文件)。

基本概念:

  • 密钥:包含非对称加密中的公钥和私钥,存储在密钥库文件中,格式为.p12,公钥和私钥对用于数字签名和验证;
  • 证书请求文件:格式为.csr,全称为Certificate Signing Request。包含密钥对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书;
  • 数字证书:.cer文件,由华为AppGallery Connect颁发;
  • Profile文件:格式为.p7b,包含Harmony应用/服务的包名、数字证书信息、描述应用/服务允许申请的证书权限列表,以及允许应用/服务调试的设备列表(如果应用/服务类型为Release类型,则设备列表为空)等内容,每个应用/服务包中均必须包含一个Profile文件;

2.1 生成密钥和证书请求文件

  1. 在菜单栏点击Build -> Generate Key and CSR.

如果本地已有对应的密钥,可以直接使用,点击下方的Skip跳过密钥生成过程,直接使用已有密钥生成证书请求文件。

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

  1. 在Key Store File中,可以点击Choose Existing选择已有的密钥库文件(存储有密钥的.p12文件);如果没有,可以点击New进行创建:

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

  • Key Store File: 设置密钥库文件存储路径,并填写p12文件名;
  • Password:设置密钥库密码(大写+小写+数字+特殊符号两种以上组合),后续签名配置需要使用该密码;
  • Confirm Password:再次输入密钥库密码;
  1. 输入信息之后,点击OK。在Generate Key and CSR界面中,继续填写密钥信息后,点击Next:
  • Alias:密钥的别名信息,用于标识密钥名称。后续签名配置需要使用;
  • Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入;
  • Validity:证书有效期。建议设置25年以上,覆盖应用/服务的完整生命周期;
  • Ceritificate:输入证书基本信息,如组织、城市或地区、国家码等;

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

看描述说最下面的表格,至少填一项即可。

  1. 点击Next之后,在Generate Key and CSR界面,设置CSR文件存储路径和CSR文件名:

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

点击Finish创建CSR文件成功,就可以在存储路径下获取生成的密钥库文件(.p12)和证书请求文件(.csr)。

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

2.2 申请发布证书和Profile文件

通过生成的证书请求文件,向AppGallery Connect申请发布证书和Profile文件,操作如下:

  • 在AppGallery Connect中,创建HarmonyOS应用,用于发布证书和Profile文件申请;

可以参考这个文档创建项目和应用:
developer.huawei.com/consumer/cn…

  • 申请发布证书和Profile文件;

developer.huawei.com/consumer/cn…

2.2.1 申请发布证书

发布证书由AGC颁发的、为HarmonyOS应用配置签名信息的数字证书,可以保障软件代码完整性和发布者身份真实性。证书格式为.cer,包含公钥、证书等指纹信息。

需要注意:每个账号最多申请1个发布证书,和2个调试证书。

  1. 登录AppGallery Connect,选择“用户与访问”;
  2. 在左侧导航栏点击”证书管理“,进入”证书管理“页面,点击”新增证书“;

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

输入证书名称,选择发布证书类型,并选取刚才创建的.csr文件,点击提交:

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

证书申请成功后,“证书管理”页面展示证书名称等信息,点击“下载”,将生成的证书保存至本地,供后续签名使用。

证书一旦废除将不可恢复,且通过此证书申请的Profile也会全部失效,请谨慎操作。

2.2.2 申请发布Profile

发布Profile格式为.p7b,包含HarmonyOS应用的包名、数字证书信息、应用允许申请的证书权限列表,以及允许应用调试的设备列表(如果应用类型为Release类型,则设备列表为空)等内容。每个应用包中必须包含一个Profile文件。

一个应用最多可申请100个Profile文件。

  1. 登录AppGallery Connect,选择“我的项目”。
  2. 找到对应的项目,点击创建的HarmonyOS应用。
  3. 在左侧导航栏选择“HarmonyOS应用 > HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面,点击右上角“添加”。

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

  1. 在弹出的“HarmonyAppProvision信息”窗口中添加Profile,完成后点击“提交”。

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

  1. 发布Profile申请成功后,“管理HAP Provision Profile”页面展示Profile名称、类型等信息。点击“下载”,将生成的Profile保存至本地,供后续签名使用。

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

3. 编译构建应用

3.1 配置签名信息

现在我们的文件都已经准备好了,需要在DevEco Studio中配置签名信息,需要用到3个文件:

  • .p12密钥文件
  • .cer证书文件
  • .p7b Profile文件

File > Project Structure > Project > Signing Configs窗口中,取消勾选“Automatically generate signature”(如果是HarmonyOS应用,请勾选“Support HarmonyOS”),然后配置工程的签名信息:

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

  • Store file:选择.p12密钥库文件
  • Store password:输入密钥库密码
  • Key alias:输入密钥的别名信息
  • Key password:输入密钥的密码,和上面一样
  • Sign alg:签名算法,固定为SHA256withECDSA。
  • Profile file:选择.p7b Profile文件
  • Certpath file:选择.cer 证书文件

配置完成后,进入工程级build-profile.json5文件,在“signingConfigs”下可查看到配置成功的签名信息:

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

3.2 编译构建应用

  1. 打开DevEco Studio,在顶部菜单栏选择“Build > Build Hap(s)/APP(s) > Build APP(s)”。
  2. 等待编译构建。编译完成后,将在工程目录“build > outputs > default”目录下,获取可用于发布的应用包。

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

4. 提交审核

在AppGallery Connect中打开应用,填写完应用信息之后,就可以上传签名完成的应用了:

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

这里只是了解下发布应用的流程,用的是测试的App。

5. 如何使用调试证书和发布证书分别构建App

developer.huawei.com/consumer/cn…

上面提到了使用发布证书构建App, 配置信息是default,通过Build App构建的app默认是使用发布证书签名的,这种使用发布证书构建的App只能通过应用市场进行分发安装。那如果想使用调试证书构建App呢?

我们可以按照上面的步骤去申请调试证书和对应的profile文件,在DevEco Studio中配置签名信息时,新建个debug选项:

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

然后在工程级build-profile.json5文件,在“signingConfigs”下可查看到配置成功的签名信息,有两个:default和debug:

"signingConfigs": [
  {
    "name": "default",
    "type": "HarmonyOS",
    "material": {
      "certpath": "/Users/ceqwang/.ohos/config/default_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.cer",
      "storePassword": "0000001A6B3C74549F57F1A4FEDA774516DD41BE33E87F008C7B93780A546F4273BCBA009F0A255442C3",
      "keyAlias": "debugKey",
      "keyPassword": "0000001A755FCE18B01CAF1FFCF6FBDD041E187A0F6D941FC98E33265768EFA9B48A202A2E48A9BB507D",
      "profile": "/Users/ceqwang/.ohos/config/default_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.p7b",
      "signAlg": "SHA256withECDSA",
      "storeFile": "/Users/ceqwang/.ohos/config/default_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.p12"
    }
  },
  {
    "name": "debug",
    "type": "HarmonyOS",
    "material": {
      "certpath": "/Users/ceqwang/.ohos/config/debug_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.cer",
      "storePassword": "0000001B4B67E4900947FA53907D4F0FA0ED3FB4D19A51D1055D3E9AF0502234F11BA0F4CBD375A4874BD8",
      "keyAlias": "debugKey",
      "keyPassword": "0000001B4B08B5A28A7080B98670A350A63E7BC1DAD8FDF460D5C4055A9B36AEB38B3A17FFE184FB41AC4C",
      "profile": "/Users/ceqwang/.ohos/config/debug_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.p7b",
      "signAlg": "SHA256withECDSA",
      "storeFile": "/Users/ceqwang/.ohos/config/debug_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.p12"
    }
  }
],

我们可以按照上面的文档,配置不同的products,使用不同的签名文件,示例如下:

{
"app": {
// 这里是签名配置信息
"signingConfigs": [
{
"name": "default",
"type": "HarmonyOS",
"material": {
"certpath": "/Users/ceqwang/.ohos/config/default_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.cer",
"storePassword": "0000001A6B3C74549F57F1A4FEDA774516DD41BE33E87F008C7B93780A546F4273BCBA009F0A255442C3",
"keyAlias": "debugKey",
"keyPassword": "0000001A755FCE18B01CAF1FFCF6FBDD041E187A0F6D941FC98E33265768EFA9B48A202A2E48A9BB507D",
"profile": "/Users/ceqwang/.ohos/config/default_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.p7b",
"signAlg": "SHA256withECDSA",
"storeFile": "/Users/ceqwang/.ohos/config/default_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.p12"
}
},
{
"name": "debug",
"type": "HarmonyOS",
"material": {
"certpath": "/Users/ceqwang/.ohos/config/debug_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.cer",
"storePassword": "0000001B4B67E4900947FA53907D4F0FA0ED3FB4D19A51D1055D3E9AF0502234F11BA0F4CBD375A4874BD8",
"keyAlias": "debugKey",
"keyPassword": "0000001B4B08B5A28A7080B98670A350A63E7BC1DAD8FDF460D5C4055A9B36AEB38B3A17FFE184FB41AC4C",
"profile": "/Users/ceqwang/.ohos/config/debug_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.p7b",
"signAlg": "SHA256withECDSA",
"storeFile": "/Users/ceqwang/.ohos/config/debug_StudyApplication_PcGNVA7Qv6_XfvlyzaSPIAojmNOPPuQhD108_DlXtKs=.p12"
}
}
],
// 这里添加了debug模式的产物
// 可以选择配置不同的签名、包名、图标等信息
"products": [
{
"name": "default",
"signingConfig": "default", // 指定签名信息为default
"compileSdkVersion": "4.1.0(11)",
"compatibleSdkVersion": "4.1.0(11)",
"runtimeOS": "HarmonyOS",
},
{
"name": "debug",
"signingConfig": "debug", // 指定签名信息为debug
"compileSdkVersion": "4.1.0(11)",
"compatibleSdkVersion": "4.1.0(11)",
"runtimeOS": "HarmonyOS",
"bundleName": "com.ce.studyapplication" // 指定不同的包名
}
],
"buildModeSet": [
{
"name": "debug",
},
{
"name": "release"
}
]
},
"modules": [
{
"name": "entry",
"srcPath": "./entry",
"targets": [
{
"name": "default",
"applyToProducts": [ // 这个是必须的,指定名字为default的target需要添加到default和debug产物中
"default",
"debug"
]
}
]
}
]
}

如下图所示,点击Entry左边的按钮,在Product对应的下拉列表中选择debug,然后点击Apply:
[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

现在点击Build -> Build App就可以构建出使用调试证书签名的包了,在工程下build文件夹中可以看到:

[鸿蒙开发] 12 - 了解下HarmonyOS应用/服务发布流程

这样我们就可以随时切换使用任意的证书(调试或者发布)构建App了。

原文链接:https://juejin.cn/post/7356055901494820873 作者:沉江小鱼

(0)
上一篇 2024年4月11日 上午11:04
下一篇 2024年4月11日 上午11:15

相关推荐

发表回复

登录后才能评论