build(harmony): 写入签名配置(devecocli signature generate 生成,指纹已登进 AGC)

用户把签名这块交给我(「你不是有devecocli嘛」)。做法:
- 共享浏览器里用已有登录态完成 DevEco CLI 授权(无需短信)→ devecocli auth status 通过
- client/harmony 下 `devecocli signature generate --product default`:
  生成 p12/csr/cer/p7b 到 ~/.ohos/config/,并把 signingConfigs 写进本文件
- 叶子证书 = CN=靳睿(1681189977251159745),Development,SHA256
  FD:89:AC:53:9C:C6:F9:37:C0:B4:E1:BC:82:91:B1:BA:11:15:46:33:66:88:F9:74:E0:A5:52:DA:46:FC:9D:09
  已登进 AGC 该应用的「SHA256证书/公钥指纹」(推送送达的前提)
- profile 绑 com.jianf.agentmail,debug 型,登记设备 3 台(1 模拟器 + 2 真机)

验签用官方工具(不用猜结构):hap-sign-tool verify-app → Verify success,
证书链里正是上面那张叶子证书。

注:signingConfigs 里的路径是绝对路径(DevEco 默认行为),换机器要重新生成。
This commit is contained in:
2026-09-15 11:38:34 +08:00
parent 7b16fec61c
commit 351be9dc5e

View File

@ -1,42 +1,56 @@
{ {
"app": { app: {
"signingConfigs": [], signingConfigs: [
"products": [
{ {
"name": "default", name: 'default',
"signingConfig": "default", type: 'HarmonyOS',
"targetSdkVersion": "6.1.0(23)", material: {
"compatibleSdkVersion": "6.1.0(23)", certpath: '/root/.ohos/config/default_harmony_k2yruKTLaTiZOjublhUDTfveVx5uFoHqm96pwkUw=.cer',
"runtimeOS": "HarmonyOS", keyAlias: 'debugKey',
"buildOption": { keyPassword: '0000001b64d7bb074eed97bb2c6ad5ae60df2f72256b104361c3fd8c4f842eb42961fce4b712e7410dd208',
"strictMode": { profile: '/root/.ohos/config/default_harmony_k2yruKTLaTiZOjublhUDTfveVx5uFoHqm96pwkUw=.p7b',
"caseSensitiveCheck": true, signAlg: 'SHA256withECDSA',
"useNormalizedOHMUrl": true storeFile: '/root/.ohos/config/default_harmony_k2yruKTLaTiZOjublhUDTfveVx5uFoHqm96pwkUw=.p12',
} storePassword: '0000001b64d7bb074eed97bb2c6ad5ae60df2f72256b104361c3fd8c4f842eb42961fce4b712e7410dd208',
} },
} },
], ],
"buildModeSet": [ products: [
{ {
"name": "debug", name: 'default',
signingConfig: 'default',
targetSdkVersion: '6.1.0(23)',
compatibleSdkVersion: '6.1.0(23)',
runtimeOS: 'HarmonyOS',
buildOption: {
strictMode: {
caseSensitiveCheck: true,
useNormalizedOHMUrl: true,
},
},
},
],
buildModeSet: [
{
name: 'debug',
}, },
{ {
"name": "release" name: 'release',
} },
] ],
}, },
"modules": [ modules: [
{ {
"name": "entry", name: 'entry',
"srcPath": "./entry", srcPath: './entry',
"targets": [ targets: [
{ {
"name": "default", name: 'default',
"applyToProducts": [ applyToProducts: [
"default" 'default',
] ],
} },
] ],
} },
] ],
} }