当前位置: 首页 > 科技观察

OpenHarmony应用Hap包签名

时间:2023-03-12 18:41:43 科技观察

了解更多开源内容请访问:开源基础软件社区https://ost.51cto.com背景OpenHarmony应用发布需要对应用进行签名。DevEcoStudio提供了自动签名功能来加速应用开发,但自动签名仅限于debug开发,需要对外发布时必须完成release签名。在HarmonyOS中,有AGC应用商店可以帮助开发者完成发布签名,但是OH并没有那么方便。本文将介绍OH应用签名方法的步骤,并使用OH官方提供的签名工具对Hap进行签名。使用DevEcoStudio完成Hap自动签名打开DevEcoStudio工具,点击右上角的ProjectStructure,进入项目配置页面。点击Project->SigningConfigs,勾选Automaticallygeneratesigning,点击OK。单击Build->RebuildProject或BuildHap来编译和构建Hap包。编辑构建完成后,我们可以获得未签名的hap包。该包可用于Debug调试,不可用于Release。IDE对Hap包签名的密码限制理论上我们也可以通过DevEcoStudio进行Hap包发布签名,但是官方的OpenHarmony.p12文件密码是123456,IDE不支持使用123456这样简单的密码,达不到这个水平密码安全。所以使用官方的加密文件来完成签名暂时是行不通的。我们换个思路,使用命令行完成签名,可以绕过IDE的限制。使用官方开源的签名工具完成签名。查看官方资料,发现官方已经提供了命令行签名工具developtools_hapsigner,https://gitee.com/openharmony/developtools_hapsigner。我们可以通过修改配置文件和执行脚本来完成Hap签名。具体步骤如下:1、安装工具依赖环境安装python3.10(下载链接:https://www.python.org/downloads/),通过命令行验证是否安装成功.安装jdk,配置环境变量,通过命令行验证是否安装成功。2.拉取签名工具代码保存到本地,修改配置文件修改developtools_hapsigner\autosign\signHap.config文件配置#config.signtool为hap-sign-tool.jar的绝对路径,在目录。signtool=E:/openharmony/developtools_hapsigner/dist/hap-sign-tool.jar#把common.keystoreFile改成OpenHarmony.p12的绝对路径,在dist目录OpenHarmony.p12#将app.keypair.keyAlias改为OpenHarmonyApplicationReleaseapp.keypair.keyAlias=OpenHarmonyApplicationRelease#将cert.app.outFile改为OpenHarmonyApplication.pem的绝对路径,即可找到cert.app。dist目录下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.outFilesign.app.ou的保存路径e签了tFile=E:/openharmony/applications_launcher/product/phone/build/default/outputs/default/phone-launcher-signed.hap3.修改配置文件后,执行签名脚本,进入签名工具autosign目录cdE:\openharmony\developtools_hapsigner\autosign执行python脚本python.\autosign.pysignHap。签名成功后显示success。您可以在指定目录中找到已签名的hap。总结DevEcoStudio开发工具为开发者提供了非常友好的hap自动签名功能和非常方便的Debug包发布。由于IDE对安全密码的要求,我们暂时需要对Release包的发布进行手动签名,尤其是系统级的应用。我们可以使用官方提供的签名工具相对容易的完成发布包的签名,然后可以开发GUI工具来进一步提高签名效率。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。