背景

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应用HAP包签名的更多相关文章

  1. OpenHarmony 3.1 Beta版本关键特性解析——HAP包安装实现剖析

    ​(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点)​ 石磊 随着社会的不断发展,人们逐渐注重更加高效.舒适.便捷.有趣的生活和工作体验. OpenAtom OpenHa ...

  2. android 给空白包签名

    前言:之前公司app在腾讯开放平台认领应用时,涉及了一个问题:就是给空白包签名.然后再上传上去审核. 腾讯开放平台的官方说明如下, 如何签名:jarsgner-verbose-keystore[key ...

  3. 命令行创建Android应用,生成签名,对APK包签名并编译运行

    一.命令行创建Android应用 android create project -n HelloWorld -t android-22 -p HelloWorld1 -k org.crazyit.he ...

  4. 命令行创建Android应用,命令行生成签名文件,命令行查看签名信息,对APK包签名并编译运行

    一.命令行创建Android应用 android create project -n HelloWorld -t android-22 -p HelloWorld1 -k org.crazyit.he ...

  5. Visual Studio 2017为Android APK包签名

    Visual Studio 2017为Android APK包签名   为Android APK包签名,可以保证后期的App顺利升级.在Visual Studio 2015中,IDE会自动生成两个AP ...

  6. Android空包签名

    空包签名 搜狗.优亿等Android市场,上传应用需要提供一个与要上传的应用相同签名的空包.这个空包是相应官方市场提供的,下载好之后需要使用命令行进行签名.具命令如下: 1 jarsigner -ve ...

  7. 【转】 Pro Android学习笔记(八三):了解Package(2):包签名过程

    目录(?)[-] 类比例子 数字签名 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在W ...

  8. 认领该应用 apk空白包签名 方法

    起因: apicloud开发的项目,上架应用宝市场,被要求做这个 解决方法: 下载签名工具,并解压缩.解压缩.解压后是两个文件夹,选择keystore签名工具. 下载地址: linux 签名工具(命令 ...

  9. 查看APK包签名的方法。

    1.查看 keystore $ keytool -list -keystore debug.keystore 结果: Keystore type: JKS Keystore provider: SUN ...

  10. java jvm学习笔记八(实现jar包的代码签名)

     欢迎装载请说明出处:http://blog.csdn.net/yfqnihao/article/details/8267669 课程源码:http://download.csdn.net/detai ...

随机推荐

  1. 【LeetCode剑指offer 03】合并两个/K个排序链表

    合并两个排序链表 https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof 输入两个递增排序的链表,合并这两个链表并 ...

  2. 第140篇:微信小程序的登录流程

    好家伙,补补补   顶不住了,跑不掉了,这部分的知识还是要补上   来看看微信小程序登录的完整流程   最左边的一列就是前端负责的部分了 几个关键的参数: code:一个用户登录凭证,就是一个临时的t ...

  3. Jenkins配置SpringBoot项目启动脚本

    目录 背景 脚本编写 变量说明 使用说明 Q&A jenkins部署时错误 背景 上一篇Jenkins配置介绍了Jenkins远程部署的相关配置和步骤,但是最后的部署脚本只适用于部署原始tom ...

  4. [Rocky Linux] 使用btrfs

    使用btrfs rocky本身并没有btrfs的相关管理工具,所以需要自己安装,但是遗憾的发现它的源中啥也没有.只能考虑自己安装. 相关说明 btrfs Wiki (kernel.org) 可以从中得 ...

  5. [爬坑] termux ssh 设置总是 permission denied

    问题 设置ssh之后,客户端登录会提示 permission denied 的问题,经过排查最终确定是 shell设置错误的问题,解决方法如下 http://new.aidlearning.net/d ...

  6. 【架构师视角系列】QConfig配置中心系列之Server端(三)

    声明 原创文章,转载请标注.https://www.cnblogs.com/boycelee/p/17993697 <码头工人的一千零一夜>是一位专注于技术干货分享的博主,追随博主的文章, ...

  7. 6、zookeeper应用场景-分布式唯一ID

    分布式唯一id案例 原理:使用zookeeper有序节点,节点后会加上有序的id,用这个id来当唯一ID 在过去的单库单表型系统中,通常第可以使用数据库字段自带的auto_ increment属性来自 ...

  8. git 常见命令和资源

    git练习 常用git清单 强制切换分支所指位置 git branch -f main c3强制分支main指向c3 git branch -f main HEAD~3强制分支main指向head的父 ...

  9. vetur 和 volar 不要一起装 - vscode插件 已解决

    vetur 和 volar 不要一起装 - vscode插件 会有各种稀奇古怪的问题. 解决方案 利用 vscode 工作区 新建工作区 然后全局 将 volar 禁用工作区,起一个新的vue3项目, ...

  10. 05_QT_Mac开发环境搭建

    在不同的Mac环境下,实践出来的效果可能跟本教程会有所差异.我的Mac环境是:Intel CPU.macOS Moterey(12.4). FFmpeg 安装 在Mac环境中,直接使用Homebrew ...