Harmony申请调试签名证书过程

545 阅读5分钟

因为项目中需要用到地图服务,所以不得不申请签名证书,过程太繁琐做个笔记,也方便大家参考。

开发设备:MacOS(M) DevEco-Studio版本:5.0.3.400

签名基本概念

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

手动签名步骤

手动签名共配置四个证书文件:

  1. DevEco Studio 工具侧生成密钥(.p12)和证书请求文件(.csr)。
  2. AppGallery Connect 侧申请应用证书(.cer)、Profile(.p7b)文件。

生成密钥和证书请求文件 .p12 和 .csr

官方文档

1、在主菜单栏单击 Build(构建) > Generate Key and CSR(生成私钥和证书请求文件) image.png

2、在新打开页面中点击New

image.png

  • 注意!!!,一定要记住这个Password(我就是因为没记住又来了一遍)
  • 文件名是自定义的,后缀.p12

image.png

  • OK
  • 下一步这个Alias也要记住,最好记个文本,后续要用
  • 只填必填项点Next会出错,应该是版本问题,以后会好吧 image.png
  • Next
  • 这一步需要填csr文件路径和文件名,注意后缀.csr就行了

image.png

  • Finish

image.png

  • 确认

3、到这一步就是用DevEco-Studio生成了密钥和证书请求文件,去刚才选择的路径可以看见.p12和.csr就对了

image.png

AppGallery Connect侧申请应用证书(.cer)。

  • 开发者账号需要实名认证
  • 每个账号最多申请2个调试证书(开发阶段)
  • 证书格式为.cer,包含公钥、证书指纹等信息

1、登录AppGallery Connect,点申请发布/调试证书 image.png 2、点新增,这可能会有之前用DevEco-Studio默认生成的证书,不用管。 image.png 3、在‘新增证书’窗口填写证书信息,点提交

image.png

  • 证书名称:不超过100个字符,随意。
  • 证书类型:选择“调试证书”。
  • 选取证书请求文件(CSR): 选择本地 .csr 文件,就是之前生成的那个。

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

image.png

AGC 创建HarmonyOS应用申请调试Profile .p7b

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

1、登录AppGallery Connect,点我的应用 -> 新增 image.png

  • 这要注意确保应用名称的唯一性,与项目中app.json5配置文件中的bundleName一致 image.png
  • 确认 2、点击我的项目,打开在步骤1中新建的项目,打开会有补充包名的弹窗 image.png
  • 我这选的是手工输入,与项目中app.json5配置文件中的bundleName一致(应该可以自定义,不知道后续有啥影响) image.png
  • 在我的项目页面中,选择“HarmonyOS应用 > HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面,点击右上角“添加 image.png
  • 在弹出的“HarmonyAppProvision信息”窗口添加调试Profile,完成后点击“提交” image.png
  • 名称:不超过100个字符,任意。
  • 类型:选择“调试”。
  • 选择证书:选择一个调试证书
  • 选择设备:选择一个或多个调试设备(列表中是当前账号登录过的设备,包括模拟器)

3、调试Profile申请成功后,“管理HAP Provision Profile”页面展示Profile信息。点击“下载”,将生成的Profile保存至本地,供后续签名使用。

image.png

配置签名信息

回到DevEco-Studio配置签名信息,选择自己刚才生成的文件,忘了密码的同学再来一遍。

image.png

查看签名信息是否成功

1、登录AppGallery Connect平台,在“我的项目”中选择目标应用,获取“项目设置 > 常规 > 应用”的Client ID。

image.png 2、添加公钥指纹 image.png 3、在工程中entry模块的 module.json5 文件中,新增 metadata,配置name为client_id,value为上一步获取的Client ID的值

image.png 4、登录AppGallery Connect网站,选择“我的项目”,选择目标项目,点击API管理。

image.png

  • 找到地图开关,打开开关

image.png

5、运行官方地图示例

import { AsyncCallback } from '@kit.BasicServicesKit';
import { map, mapCommon, MapComponent } from '@kit.MapKit';

@Entry
@Component
struct HuaweiMapDemo {
  private TAG = "HuaweiMapDemo";
  private mapOption?: mapCommon.MapOptions;
  private callback?: AsyncCallback<map.MapComponentController>;
  private mapController?: map.MapComponentController;

  aboutToAppear(): void {
    // 地图初始化参数,设置地图中心点坐标及层级
    this.mapOption = {
      position: {
        target: {
          latitude: 39.9,
          longitude: 116.4
        },
        zoom: 10
      }
    };

    // 地图初始化的回调
    this.callback = async (err, mapController) => {
      if (!err) {
        // 获取地图的控制器类,用来操作地图
        this.mapController = mapController;
        this.mapController.on("mapLoad", () => {
          console.info(this.TAG, `on-mapLoad`);
        });
      }
    };
  }

  build() {
    Stack() {
      // 调用MapComponent组件初始化地图
      MapComponent({ mapOptions: this.mapOption, mapCallback: this.callback })
        .width('100%')
        .height('100%');
    }
    .height('100%')
  }
}

打开虚拟机运行结果

image.png

案例地图渲染出来,签名应该是没问题了。。。