OpenHarmony应用开发 - 如何获取DevEco Studio自动签名明文密钥 原创
概述
文档环境
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. 在终端中运行命令,验证明文密钥。
点个赞。