在基于鸿蒙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 "开始签名操作..."
jarPath=/Users/<User>/Library/Huawei/Sdk/toolchains/lib/hapsigntoolv2.jar
keystorePath=release.p12
keystorePasswd=abcdefg
keystoreAlias=Alias
profilePath=release.p7b
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 $outputFilePath
echo .
echo "签名完成~~~"
将上面内容写到一个 signer.sh 文件中保持。通过下面指令赋给脚本文件可行的权限:
$ chmod 777 signer.sh
至此,一个简单的签名工具已经完成。
签名工具的使用
上面章节已经完成一个简单的签名工具 signer.sh。使用方式如下:
$ signer.sh xxx_unsigned.app xxx_signed.app
如果执行成功,则会生成 xxx_signed.app 文件。 然后尝试运行一下试试吧。
|