当前位置: 首页 > news >正文

OpenHarmony 应用通用签名

一.背景

        由于hap包需要经过签名才能安装到设备上,在DevEco Studio可以进行自动签名,但是自动签名只能安装在当前的设备上,在其他设备上不能安装,所以我们需要进行通用的手动签名,手动签名HarmonyOS和OpenHarmony流程是不一样的,HarmonyOS签名见:https://gonglipeng.blog.csdn.net/article/details/131870054

本次内容主要是OpenHarmony的手动签名

二.准备工作

签名流程中需要gradle生成的签名工具进行签名,所以需要下载安装并配置gradle环境,如下:

1.如果是开发安卓项目都应该是安装过gradle的,我的路径如下,一般默认路径也如下:

注意gradle版本需要高于或等于7.1,我用的是8.0版本

2.将其配置到环境变量中

3.然后检查是否配置成功

通过gradle -v

三.下载签名工具仓库代码

将如下地址的代码clone到本地

developtools_hapsigner: hapsigner | 应用签名工具

四.通过gradle生成签名工具

在如下目录输入指令:

gradle build

然后如上图会显示构建成功,然后编译后得到二进制文件,目录为: ./hap_sign_tool/build/libs/hap-sign-tool.jar。

五.文件拷贝修改

1.文件拷贝

找到如下文件

然后找到未签名的包

然后将如上文件都拷贝到libs目录下,注意此处其他文件是我中间生成结果,忽略:

然后注意要修改UnsgnedReleasedProfileTemplate.json文件内容,注意包名,系统权限等等,具体参考:

OpenAtom OpenHarmony 

 

六.进行签名

1.生成应用签名证书密钥对

调用密钥对生成接口,生成签名密钥并保存到密钥库。

命令实例:

java -jar hap-sign-tool.jar generate-keypair -keyAlias "oh-app1-key-v1" -keyAlg "ECC"  -keySize "NIST-P-256" -keystoreFile "OpenHarmony.p12" -keyPwd "123456" -keystorePwd "123456"

 这一步主要是keyAlias 是别名,修改成自己的,然后记住,后面有用

2.生成应用签名证书

调用应用签名证书生成接口,使用本地中间CA证书签发应用签名证书。

命令实例:

java -jar hap-sign-tool.jar generate-app-cert -keyAlias "oh-app1-key-v1" -signAlg "SHA256withECDSA"  -issuer "C=CN,O=OpenHarmony,OU=OpenHarmony Team,CN= OpenHarmony Application CA" -issuerKeyAlias "openharmony application ca" -subject "C=CN,O=OpenHarmony,OU=OpenHarmony Team,CN=OpenHarmony Application Release" -keystoreFile "OpenHarmony.p12" -subCaCertFile "subCA.cer" -rootCaCertFile "rootCA.cer" -outForm "certChain" -outFile "app1.pem" -keyPwd "123456" -keystorePwd "123456" -issuerKeyPwd "123456" -validity "365"

如上命令拷贝并运行,注意别名用第一步自定义的

3.对Hap包进行签名

调用Hap包签名接口,使用应用签名密钥为Hap包签名。

命令实例:

java -jar hap-sign-tool.jar sign-app -keyAlias "oh-app1-key-v1" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "app1.pem" -profileFile "app1-profile.p7b" -inFile "app1-unsigned.zip" -keystoreFile "OpenHarmony.p12" -outFile "app1-signed.hap" -keyPwd "123456" -keystorePwd "123456"

此处需要注意别名用上面的,然后-inFile是输入的文件,就是未签名的hap文件名,-outFile是签名后输出的文件,可以自己自定义名字

最终结果应该如下:

http://www.lryc.cn/news/271606.html

相关文章:

  • Redis:原理+项目实战——Redis实战1(session实现短信登录(并剖析问题))
  • 交叉编译aarch64架构支持openssl的curl、libcurl
  • 扩展名是.KEY的文件可能有不同的存在,打开方式也因此不同
  • 软件工程总复习笔记
  • 蓝桥杯-每日刷题-030
  • AI赋能游戏开发,如何更好地处理随之而来的海量数据,更好地利用开发游戏?
  • Serverless架构学习路线及平台对比
  • 解决ROS含动态参数的Config文件无法正确识别的错误
  • 探索 PyTorch 中的 torch.nn 模块**(1)
  • 【WPF.NET开发】预览事件
  • JDBC->SpringJDBC->Mybatis封装JDBC
  • ts中的keyof 关键字
  • Head First Design Patterns - 装饰者模式
  • MySQL 执行过程
  • 判断电话号码是否重复-excel
  • 【Java开发岗面试】八股文—Java虚拟机(JVM)
  • 【Linux】Linux 下基本指令 -- 详解
  • Eureka注册及使用
  • Ubuntu之修改时区/时间
  • 4、内存泄漏检测(多线程)
  • 在使用tcp长连接时,是否还需要再引入重发机制?
  • 记一次Oracle Cloud计算实例ssh恢复过程
  • 2024年01月数据库流行度最新排名
  • Stable Diffusion API入门:简明教程
  • 数据结构--二叉搜索树的实现
  • 《微信小程序开发从入门到实战》学习六十八
  • 阿里是如何去“O”的?
  • 蓝桥杯备赛 day 1 —— 递归 、递归、枚举算法(C/C++,零基础,配图)
  • 87 双指针解验证回文字符串II
  • 【排序算法】【二叉树】【滑动窗口】LeetCode220: 存在重复元素 III