概述

文档环境

DevEco Studio 版本:DevEco Studio 5.0.1 Beta3(5.0.5.200)

SDK 版本:5.0.0.71(OpenHarmony)

Hvigor 版本:5.10.3

开发板型号:DAYU 200

系统版本:OpenHarmony 5.0.1(5.0.1.115)

功能简介

  • OpenHarmony应用开发时,为了保证OpenHarmony应用的完整性和来源可靠,在应用构建时需要对应用进行签名。经过签名的应用才能在设备上安装、运行和调试,如果有对自动签名还不了解的同学可以参考​​OpenHarmony应用签名 - DevEco Studio 自动签名​​文章进行学习。
  • OpenHarmony自动签名生成后,可以在工程级别的build-profile.json5文件中查看签名信息,但此时我们发现密钥是经过加密处理后的信息,无法直接用于命令行签名或者需要重新给Hap包签名的场景使用,给我们的应用开发和调试带来了不便,本文将指导大家通过修改Hvigor工具源码的方式,获取自动签名的明文密钥。

获取DevEco Studio自动签名明文密钥

准备工程环境,配置自动签名

1. 配置自动签名,单击File > Project Structure > Project > SigningConfigs界面勾选Automatically generate signature,等待自动签名完成即可,单击OK

 2. 查看build-profile.json5配置信息,配置信息中增加自动签名生成的证书和密钥信息。

3. 设置Hvigor日志打印等级。打开File > Settings > Build, Execution, Deployment > Build Tools > Hvigor,勾选Use log level,并设置日志等级为Debug。

修改Hvigor工具,增加签名信息打印

1. 找到DevEco Studio安装目录中的Hvigor工具目录${DevEco Studio安装目录}/tools/hvigor

2. 打开${hvigor工具目录}\hvigor-ohos-plugin\src\tasks\sign\sign-util.js文件,并格式化(可以使用DevEco Studio进行格式化)。

3. 修改executeSign函数。

修改前:

 需要增加的代码:

// 在图中第110行和111行中间添加代码
this._log._printDebugCommand('SignInfo executeSign',s.join(' '));

修改后:

 4. 修改executeSignRequest函数。

修改前:

需要增加和修改的代码:

// 在图中第135行和136行中间增加代码
command = s.getSignCommand(),
// 修改图中第136行代码
r = (`execute ${e.getSignType()} signing command`), g = async () => {
// 在图中第148行和149行中间增加代码
this._log._printDebugCommand('SignInfo executeSignRequest', command.join(' '));

修改后:

5. 保存文件,可能会遇到权限问题,使用管理员保存。

6. 为了避免由于Hvigor工具缓存引起的代码修改不生效问题,需要删除{用户目录}/.hvigor文件夹

获取明文密钥,手动签名验证

1. 构建Hap包,执行Build > Build Hap(s)/APP(s) > Build Hap(s),等待构建成功

2. 查看Build日志,搜索SignInfo关键字,输出签名参数信息和明文密钥。

3. 在终端中运行命令,验证明文密钥。

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐