为了账号安全,请及时绑定邮箱和手机立即绑定

Harmonyos next 鸿蒙原生 证书 & 打包到真机

标签:
鸿蒙 HarmonyOS

harmonyos next 鸿蒙打包到真机还比较麻烦,如果是个人开发者,只有一台设备,那直接选择自动签名Automatically generate signature就可以。但是如果是多人开发多台设备就需要配置了,这样切换分支的时候用同一配置也能打包。

配置签名需要四个文件:
.p12、csr
.p7b
.cer

应用配置文件 p12、csr

这个文件是在编辑器里(Build->Generate Key and CSR)生成的,同步生成的还有 Store passwordKey aliasKey password,p12文件和这三个值一一对应。

p12:是放在应用里的
csr:是用来生成cer的

证书文件 cer

证书生成需要csr文件:

每个账号下只能有1个正式,2个调试。
多个应用,证书都可以用一个,例如元服务和App都可以用同一个。

我们至少需要申请一个正式证书,一个测试证书。正式证书用来发布,测试证书用来开发调试。并且关联设备的p7b文件需要此证书。

profile文件 p7b, 用来绑定设备

p7b文件和cer文件是成对出现的,分为测试和正式。p12则是同一个。

新增profile时,需要填写设备的uuid,把所有的调试设备都关联起来,那么打包到真机时就不会有问题了。

获取udid地址注册调试设备
hdc shell bm get --udid

可能的问题:

  1. 需要先配置环境变量,不然一直hdc无效
  2. 如果出现 [Fail]ExecuteCommand need connect-key? please confirm a device by help info,关掉 USB调试 开关后重新打开。

最后

会生成5个文件,即1个p12文件,2个cer文件和2个p7b文件。共用一个p12文件,测试和正式分别用对应的cer和p7b文件。

签名机制和安卓几乎完全不一致,这里在简单总结一下:
签名证书过期是cer过期了,cer生成需要用到csr文件,csr是和p12同时生成的,是在编译器里生成。
然后拿着新的cer文件去生成p7b文件,其中这里有分正式和调试证书

如果多个应用,我们就有元服务和App。证书文件cer是需要共用的,因为只能生成3个且还要区分正式和调试。
共用cer证书,意味着要共用p12文件,而p12文件是在编译器里生成的。

这里就有一个很大的误区安卓编译器里生成的签名文件是和app一一对应的,相当于这个应用的唯一标识了;但是鸿蒙不一样,在其他项目中生成的p12文件,可以在另一个项目中用,因为它们的证书文件 cer是一样的。

"signingConfigs": [
      {
        "name": "debug",
        "type": "HarmonyOS",
        "material": {
          "storePassword": "0000001966A961ECA0DF4FBAA4C060E29B1A336B653164554A",
          "certpath": "./key/app_test.cer",
          "keyAlias": "bevol",
          "keyPassword": "000000196B1000F4641D95F1452B7E8CFCC405FE6BAB54360ED7C",
          "profile": "./key/app_test.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "./key/release/p12-release.p12"
        }
      },
      {
        "name": "release",
        "type": "HarmonyOS",
        "material": {
          "certpath": "./key/release/cer-release.cer",
          "storePassword": "000000193669461AA978895500C3514C930B9C59B92E6F7D633B05B6D",
          "keyAlias": "bevol",
          "keyPassword": "00000019F22018ADDCC704CB85EDA3F0B4DE492DB9CE628CFB01DE563FF",
          "profile": "./key/release/app20240923-release.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "./key/release/p12-release.p12"
        }
      }
    ]

所以元服务需要用App里的p12文件。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
8
获赞与收藏
25

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消