OpenHarmony应用Hap包签名 原创 精华

软通动力HOS
发布于 2022-9-20 09:16
浏览
8收藏

OpenHarmony应用Hap包签名-鸿蒙开发者社区

背景

OpenHarmony应用如果需要对外发布就必须要通过应用签名,DevEco Studio已提供自动签名功能加速应用开发,但自动签名仅限于debug开发,需要对外发布则必须完成release签名。
在HarmonyOS中有AGC应用商店可以帮助开发者完成release签名,但是OH就没有这么方便了,本文将介绍OH应用签名方法步骤,将使用OH官方提供的签名工具对Hap进行签名。

使用DevEco Studio完成Hap自动签名

打开DevEco Studio工具,点击右上角 Project Structure 进入工程配置页面
OpenHarmony应用Hap包签名-鸿蒙开发者社区
点击Project -> Signing Configs,勾选Automatically generate signing,点击 OK
OpenHarmony应用Hap包签名-鸿蒙开发者社区
点击Build -> Rebuild Project 或 Build Hap 都可以编译构建Hap包
OpenHarmony应用Hap包签名-鸿蒙开发者社区
编辑构建完成后我们可以得到未签名的hap包
OpenHarmony应用Hap包签名-鸿蒙开发者社区
这个包可以用于Debug调试,但不能用于Release正式发布

IDE对Hap包签名的密码限制

从理论上讲,我们也可以通过DevEco Studio进行Hap包的发布签名,但是官方提供的OpenHarmony.p12文件密码为123456
而IDE不支持使用 123456 这样的简单的密码,它达不到密码安全级别
OpenHarmony应用Hap包签名-鸿蒙开发者社区
OpenHarmony应用Hap包签名-鸿蒙开发者社区
因此,使用官方加密文件完成签名暂时行不通
我们改变思路,使用命令行方式完成签名,这样可以绕过IDE的限制

使用官方开源签名工具完成签名

查阅官方资料发现,官方已经提供了命令行签名工具 developtools_hapsigner,https://gitee.com/openharmony/developtools_hapsigner
我们通过修改配置文件、执行脚本,即可完成Hap签名
具体步骤如下:

1 安装工具依赖环境

安装python3.10 (下载链接:https://www.python.org/downloads/),通过命令行验证安装是否成功
OpenHarmony应用Hap包签名-鸿蒙开发者社区
安装jdk,配置好环境变量,通过命令行验证安装是否成功
OpenHarmony应用Hap包签名-鸿蒙开发者社区

2 将签名工具代码拉取到本地保存,修改配置文件


修改developtools_hapsigner\autosign\signHap.config文件配置

# config.signtool 改为 hap-sign-tool.jar 的绝对路径,可以在 dist 目录中找到
config.signtool=E:/openharmony/developtools_hapsigner/dist/hap-sign-tool.jar

# common.keystoreFile 改为 OpenHarmony.p12 的绝对路径,可以在 dist 目录中找到
common.keystoreFile=E:/openharmony/developtools_hapsigner/dist/OpenHarmony.p12

# app.keypair.keyAlias 改为 OpenHarmony Application Release
app.keypair.keyAlias=OpenHarmony Application Release

# cert.app.outFile 改为 OpenHarmonyApplication.pem 的绝对路径,可以在 dist 目录中找到
cert.app.outFile=E:/openharmony/developtools_hapsigner/dist/OpenHarmonyApplication.pem

# sign.profile.outFile 改为 官方提供的p7b绝对路径,比如 launcher 代码中提供了 launcher.p7b 加密文件
sign.profile.outFile=E:/openharmony/signfiles/launcher/launcher.p7b

# sign.app.inFile 为未签名 hap 路径
sign.app.inFile=E:/openharmony/applications_launcher/product/phone/build/default/outputs/default/phone-launcher-default-unsigned.hap

# sign.app.outFile 为签名后的 hap 保存路径
sign.app.outFile=E:/openharmony/applications_launcher/product/phone/build/default/outputs/default/phone-launcher-signed.hap

3 完成配置文件修改后,执行签名脚本

进入签名工具 autosign 目录

cd E:\openharmony\developtools_hapsigner\autosign

执行 python 脚本

python .\autosign.py signHap
签名成功后显示Success
OpenHarmony应用Hap包签名-鸿蒙开发者社区
到指定目录下可以找到签名后的hap
OpenHarmony应用Hap包签名-鸿蒙开发者社区

总结

DevEco Studio开发工具为开发人员提供了非常友好的hap自动签名功能,以及非常便捷的Debug包发布。
由于IDE的安全密码要求,对于Release包的发布我们暂时需要手动签名,尤其是系统级的应用。
我们可以利用官方提供的签名工具较为容易的完成release包签名,后续可以自行开发GUI工具进一步提升签名效率。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
9
收藏 8
回复
举报
8条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

感谢老师提供手动签名的方法,学习了!

回复
2022-9-20 10:03:51
FlashinMiami
FlashinMiami

OH的应用签名方法不错,收藏一下

回复
2022-9-20 11:59:49
殇时云起
殇时云起

思路很好

回复
2022-9-20 14:49:50
有故事的王同学
有故事的王同学

OpenHarmony签名暂时用不到,先收藏下

回复
2022-9-21 10:02:49
皮皮虾233
皮皮虾233

希望IDE后续能将需要手动签名的部分继续优化下吧

回复
2022-9-22 10:19:32
喝一大口可乐
喝一大口可乐 回复了 皮皮虾233
希望IDE后续能将需要手动签名的部分继续优化下吧

慢慢都会有的,之前HarmonyOS也是要手动签名的

回复
2022-9-23 14:16:48
hmyxd
hmyxd

现在签名还是HarmonyOS方便

回复
2022-9-23 16:58:15
wx657a4e504b1b3
wx657a4e504b1b3

请问下,这种包必须签名安装hap包吗??我现在只想运行学习下

回复
2023-12-14 08:39:56
回复
    相关推荐