在DevEco Studio中,默认创建的项目,仅有default这一项签名的配置。在开发阶段和发布阶段因需要使用不同的签名证书,如果仅用default这一配置项,那么就得在开发及发布阶段时切换default配置项中的证书及密码的配置。

本篇内容是《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》这本书第15章内容的延续,是咱这本书读者的福利,内容重点介绍如何实现多签名的配置,支持在开发版调试及发布版打包时,不需要更改签名相关的配置,实现一次配置多次受益的目标。

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_配置项


1: 背景简介

在DevEco Studio中,默认创建的项目,仅有default这一项签名的配置。在开发阶段和发布阶段因需要使用不同的签名证书,如果仅用default这一配置项,那么就得在开发及发布阶段时切换default配置项中的证书及密码的配置。

新建一个项目,查看一下,工程目录中的build-profile.json5文件内容如下(DevEco Studio 5.1.1 Release创建,其它的版本可能会略有不同),这时可以看到 signingConfigs的配置内容还为空。

{
  "app": {
    "signingConfigs": [],
    "products": [
      {
        "name": "default",
        "signingConfig": "default",
        "targetSdkVersion": "5.1.1(19)",
        "compatibleSdkVersion": "5.1.1(19)",
        "runtimeOS": "HarmonyOS",
        "buildOption": {
          "strictMode": {
            "caseSensitiveCheck": true,
            "useNormalizedOHMUrl": true
          }
        }
      }
    ],
    "buildModeSet": [
      {
        "name": "debug",
      },
      {
        "name": "release"
      }
    ]
  },
  "modules": [
    {
      "name": "entry",
      "srcPath": "./entry",
      "targets": [
        {
          "name": "default",
          "applyToProducts": [
            "default"
          ]
        }
      ]
    }
  ]
}

2: 配置联机证书

这时,如需要进行联机调试,常见的做法为,进入Project Structure,如下图,在File菜单项中,点击Project Structure。(这部分在书中有介绍,如已知晓,则忽略本小节)

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_App_02

这时打开了Project Structure视图,进入Signing Configs选项卡,选中Support HarmonyOS和Automatically generate signature这两个选项卡,如下图

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_App_03

之后,DevEco Studio会自动生成相关的签名证书配置,点击OK,即完成了默认的开发版签名证书的配置。点击完成后。

这时再查看build-profile.json5文件内容中 signingConfigs的配置内容已经有值了,这时即可以联机调试了。

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_App_04

3: 配置发布证书

当开发证书配置成功之后,现在整个项目中,仅配置了开发环境的这一个证书。如需要在发布阶段也使用证书,可以使用手动的方式,配置一下发布证书(具体的配置方式本书的15章第一小节有介绍,在这里重点说一下如何实现双证书的共存),回到Project Structure视图,进入Signing Configs选项卡,选中Support HarmonyOS和Automatically generate signature这两个选项卡,如下图,点击红框中的加号。

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_前端_05

这时弹出Add Signing Config对话框,如下图,在Signing config name选项中,输入 release,之后点击OK,

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_前端_06

这时回到回到Project Structure视图,仅勾选Support HarmonyOS,之后按实际情况,配置签名证书信息。

这时,再打开build-profile.json5文件,签名配置项,多了name为release的配置。

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_前端_07

4: 关联发布证书

配置好证书之后,我们的目标是可以灵活的按需指定证书,编译不同版本的App包。在DevEco Studio中,可以通过不同的产品来关联不同的证书,即build-profile.json5文件中的products配置项,默认如下图所示。

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_配置项_08

name为default的products配置项,使用的签名为default。将该配置项复制一份,将name和signingConfing均改为release,如下图所示。

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_配置项_09

这时,product的对话框中(点工具区的Product按钮),在product下拉选项中有了release的选项,如下图所示

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_App_10

选择release,如下图所示,Target Select中的Module Target是不可选的状态,这是因为Module还没有对应的Target可以支持。需要对modules的target进行配置。

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_前端_11

如下图所示,对build-profile.json5文件中的modules配置项,关联release Product。

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_签名证书_12

这时,product的对话框中,Module Target为可选状态。这时证书关联的工作已经完成

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_配置项_13

5: 开发及发布时的证书切换

基于上述的配置,在开发阶段,使用default产品,在发布阶段使用release产品,在Product对话框中切换配置即可,而不需要再重新配置覆同一个证书的配置了。

总结:

本文是《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》书中第15章内容的延续,是为读者提供的福利,本文针对DevEco Studio默认单签名配置的痛点,详细讲解如何实现开发/发布双签名配置方案。通过修改build-profile.json5文件,添加release签名配置并关联对应product,开发者可在不修改证书信息的情况下,通过切换product选项快速选择开发版或发布版签名。文章包含5个关键步骤:1)初始配置分析;2)联机调试证书配置;3)发布证书添加;4)产品与证书关联;5)开发/发布切换演示。该方案有效解决了频繁修改签名配置的成本。

【鸿蒙生态共建】一文讲清如何实现对开发版及发布版分别单独配置签名证书-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利_App_14