OpenHarmony应用HAP包签名

背景

OpenAtom OpenHarmony(以下简称“OpenHarmony”)应用如果需要对外发布就必须要通过应用签名,DevEco Studio已提供自动签名功能加速应用开发,但自动签名仅限于debug开发,如需对外发布则必须完成release签名。

在OpenHarmony中有AGC应用商店可以帮助开发者完成release签名,本文将介绍OpenHarmony应用签名方法的步骤,将使用OpenHarmony官方提供的签名工具对HAP进行签名。

使用DevEco Studio完成HAP自动签名

打开DevEco Studio工具,点击右上角Project Structure进入工程配置页面

点击Project -> Signing Configs,勾选Automatically generate signing,点击OK

点击Build -> Rebuild Project 或 Build HAP都可以编译构建HAP包

编辑构建完成后我们可以得到未签名的HAP包

这个包可以用于Debug调试,但不能用于Release正式发布。

IDE对HAP包签名的密码限制

从理论上讲,我们也可以通过DevEco Studio进行HAP包的发布签名,但是官方提供的OpenHarmony.p12文件密码为123456

而IDE不支持使用123456这样的简单的密码,它达不到密码安全级别

因此,使用官方加密文件完成签名暂时行不通

我们改变思路,使用命令行方式完成签名,这样可以绕过IDE的限制

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

查阅官方资料发现,官方已经提供了命令行签名工具

https://gitee.com/openharmony/developtools_hapsigner

我们通过修改配置文件、执行脚本,即可完成HAP签名

具体步骤如下:

1 安装工具依赖环境

安装python3.10(下载链接:https://www.python.org/downloads/),通过命令行验证安装是否成功

安装jdk,配置好环境变量,通过命令行验证安装是否成功

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

git clone https://gitee.com/openharmony/developtools_HAPsigner.git

修改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

Releaseapp.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

到指定目录下可以找到签名后的HAP

总结

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

OpenHarmony 中,查看应用的系统签名码通常涉及以下几个步骤。首先需要确保你的开发环境已经正确配置,并且你有相关的工具来提取和验证签名信息。 ### 获取签名码的步骤 1. **使用 `keytool` 提取证书指纹** 如果你拥有用于签名的 `.jks` 或 `.p12` 文件,可以使用 `keytool` 工具获取证书的 SHA-256 指纹。这是常见的签名码形式之一。 示例命令如下: ```bash keytool -list -v -keystore your_keystore.jks ``` 运行此命令后,会提示输入密钥库密码,输入后即可看到括 SHA-256 指纹在内的详细信息[^1]。 2. **通过 `hapsigner` 工具验证 HAP 文件签名** 在 OpenHarmony 中,应用程序打为 `.hap` 格式。你可以使用官方提供的 `hapsigner` 工具对 `.hap` 文件进行签名信息提取和验证。具体操作可参考其 GitHub 仓库中的文档说明。 3. **使用 DevEco Studio 查看签名信息** 在 [DevEco Studio](https://developer.harmonyos.com/cn/develop/deveco-studio) 中,可以通过项目设置查看当前使用的签名文件信息。进入项目的“Signing Configs”部分,可以查看到与应用绑定的签名配置。 4. **自动化脚本提取签名信息** 如果你需要批量处理多个 `.hap` 文件,可以编写简单的 Python 脚本来调用 `hapsigner` 的 API 接口或者解析 `.hap` 内部的签名数据。以下是一个基本示例,展示如何使用 Python 执行外部命令并捕获输出: ```python import subprocess def get_signature_info(hap_file_path): result = subprocess.run(['hapsigner', 'verify', hap_file_path], capture_output=True, text=True) return result.stdout print(get_signature_info('path/to/your/app.hap')) ``` 5. **签名码在系统日志中记录(调试用途)** 在某些情况下,OpenHarmony 系统会在安装或运行应用时记录签名相关信息。你可以通过日志工具如 `hilog` 来查看这些信息: ```bash hilog | grep "signature" ``` 这种方法适用于调试阶段,帮助开发者确认签名是否正确应用。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值