未签名的 hap包在鸿蒙真机上是无法直接安装的。因为安装服务会校验签名,直接 hdc install 会被拒,异常如下:在这里插入图片描述
那么在这个规则下,当我们拿到一个未签名的鸿蒙hap包该怎么处理才能安装到真机上?总结了以下5个方案,供大家实战中参考:

一、场景说明

首先要知道鸿蒙应用的包名在开发者中心是全局唯一的,如果你拿到的Hap已在对应账号下创建了,那么你就无法再在自己的账号下创建同包名应用,但这并不影响你把 HAP 包装到真机上,根据协作场景不同,有五条可行路径。

二、方案选择思路在这里插入图片描述

​方案一:加入对方团队(持续协作场景,推荐)

开发者中心支持团队协作机制,团队成员可以以团队身份开展开发活动。在这里插入图片描述
操作步骤:​

  1. 对方(团队账号持有者)在开发者中心的团队管理中,邀请你的开发者账号加入其团队

  2. 你接受邀请后,在开发者中心“证书、APP ID和Profile”页面右上角切换到对方团队,此时可以看到团队名下该包名的应用

  3. 以团队身份申请调试证书、注册你的真机设备、为该应用申请调试Profile

  4. 用 hap-sign-tool 完成签名后,hdc install 安装到真机

方案二:让对方删除后你重新创建(对方应用无保留价值时)

若对方创建的应用尚未上架、无历史数据且对方不再需要,建议的处理方式是:

  1. 对方在其账号下删除应用信息(包括 APP ID)

  2. 你在自己的账号下用原包名创建新应用

  3. 按“申请调试证书 → 注册设备 → 申请调试Profile → 签名安装”的流程操作

方案三:让对方代签(最省事,适合临时安装)

你无需在自己账号侧做任何创建操作。

操作步骤:

  1. 获取你真机的 UDID 发给对方

  2. 对方在其账号下将你的设备注册为调试设备,重新申请包含你设备的调试Profile

  3. 对方用 hap-sign-tool 签名后,把已签名的 HAP 包发给你

  4. 你直接执行 hdc install -r xxx.hap 安装

方案四:应用转移(应用归属权整体移交)

如果这个应用后续要由你来维护和上架,对方可以发起应用转移。在这里插入图片描述

操作步骤:

  1. 对方在开发者中心选择目标应用

  2. 进入“分发 > 应用上架 > 应用信息”

  3. 点击页面底部的“应用转移”

  4. 系统会自动检测应用是否符合转移条件

  5. 符合条件则填写转入者ID(你的开发者账号)和转入者名称后提交

转移完成后:应用归你账号所有,你可以自行申请证书和 Profile 进行签名。

方案五:改包名重新打包(纯本地调试场景)

如果你只是想把应用跑起来看看,不在乎包名:

  1. 让对方在工程中修改 bundleName 后重新打包发给你

  2. 你用新包名在自己账号下创建应用

  3. 再走签名流程

三、实战操作

1. 如何获取UDID

  1. 设置 → 关于手机 → 连点版本号,打开开发者模式,再进开发者选项开 USB 调试。

  2. 电脑上执行 hdc list targets,确认设备已连接。在这里插入图片描述

  3. 取 UDID:hdc shell bm get --udid,输出udid。在这里插入图片描述

2. 如何获取证书和Profile

上到自己的AGC网站(AppGallery Connect的简称),需要获取2个关键文件:

获取证书: AGC → 证书 → 新增证书,类型选调试证书, 下载 .cer。在这里插入图片描述

获取Profile: AGC → Profile → 添加;根据页面要求,选择对应对应包名,Profile名称,证书,和设备,添加完成后即可下载 .p7b。在这里插入图片描述
3. 使用hap-sign-tool 签名

签名命令:

$java = "XXX\java.exe"
$jar  = "XXX\hap-sign-tool.jar"
& $java -jar $jar sign-app `
  -mode localSign -signAlg SHA256withECDSA `
  -keystoreFile "XXX\XXX.p12" `
  -keystorePwd "XXXX" -keyAlias "XXX" -keyPwd "XXX" `
  -appCertFile "XXX\XXX.cer" `
  -profileFile "XXX\XXX.p7b" `
  -inFile "XXX\XXX.hap" `
  -outFile "XXX\XXX.hap"

验签命令:

$java -jar $jar verify-app `
  -inFile "XXX\XXX.hap" `
  -outCertChain "XXX\vs_chain.cer" `
  -outProof "XXX\vs_profile.p7b"

本篇以实战为主,也可以综合上一篇一起学习。

如之前预测,鸿蒙装机量在本月就会破1亿大关,在当下鸿蒙的发展已势不可挡!

感谢持续关注!

关注 CPF-Flutter 社区

“AI再牛,技术不能丢“

​

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐