鸿蒙应用(Harmony OS App)的签名方式

在基于鸿蒙SDK开发完成应用后,可以通过 Build -> Build Hap(s)/APP(s) 编译后,在 项目根目录/build/outputs/app/release/ 目录下生成两个文件: xxx_unsigned.app 和 xxx_signed.app。在某些情况下可能需要使用 xxx_unsigned.app 文件,然后使用同步的签名文件对文件进行签名。

那么问题来了,怎么对未签名的文件进行重新签名呢?这个文件就是本文想要解决的问题。

前提

本文中用到的签名文件需要从华为开发者申请,具体申请流程可参考 HarmonyOS Developer 的工具->应用发布。这里就不再累述;需要安装 DevEco Studio。该工具可以去 HarmonyOS Developer 下载。

为什么要使用脚本签名

团队管理上,为了保护正式的签名证书。所以在开发阶段使用开发的签名证书,发布的时候使用正式的签名证书。在对应用做加固的时候,加固后需要重新签名。

签名方法

在 DevEco Studio 中有一个 hapsigntoolv2.jar 。通过这个 jar 包可以对应用进行重签名。签名脚本内容如下:

echo “开始签名操作...“## 设置 hapsigntoolv2.jar 的路径jarPath=/Users/<User>/Library/Huawei/Sdk/toolchains/lib/hapsigntoolv2.jar## 设置签名文件 .p12 的目录keystorePath=release.p12## 设置签名文件密码变量。这个密码在生成签名文件是设置的keystorePasswd=abcdefg## 设置签名文件别名keystoreAlias=Alias## 设置证书 .p7b 文件路径profilePath=release.p7b## 设置证书 .cer 文件路径certPath=release.cer## 输入文件路径设置。输入文件路径作为命令执行的第一个参数inputFilePath=$1## 输出文件路径设置。输出文件路径作为命令执行的第二个参数outputFilePath=$2## 进行签名java -jar $jarPath sign -mode localjks -keystore $keystorePath -keystorepasswd $keystorePasswd -privatekey $keystoreAlias -keyaliaspasswd $keystorePasswd -signAlg SHA256withECDSA -profile $profilePath -certpath $certPath -inputFile $inputFilePath -outputFile $outputFilePathecho .echo “签名完成~~~“

将上面内容写到一个 signer.sh 文件中保持。通过下面指令赋给脚本文件可行的权限:

$ chmod 777 signer.sh

至此,一个简单的签名工具已经完成。

签名工具的使用

上面章节已经完成一个简单的签名工具 signer.sh。使用方式如下:

$ signer.sh xxx_unsigned.app xxx_signed.app

如果执行成功,则会生成 xxx_signed.app 文件。 然后尝试运行一下试试吧。

极客网企业会员

免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。