前言

随着HarmonyOS NEXT应用生态的推广和发展,越来越多的开发者希望能将HarmonyOS应用安装到OpenHarmony设备上。由于OpenHarmony设备不识别HarmonyOS签名,因此需要对应用进行重签名操作。

开发流程

配置重签名环境

  1. 在本机电脑上创建重签名目录D:\resign

  2. 下载社区仓OpenHarmony/developtools_hapsigner

  3. 将仓库里的hap-sign-tool.jarOpenHarmony.p12OpenHarmonyProfileRelease.pemUnsgnedReleasedProfileTemplate.jsonOpenHarmonyApplication.pem等文件复制到重签名目录下。

修改hap重签模板

  1. 将需要重签的origin.hap复制到重签名目录下。

  2. 修改origin.haporigin.zip并解压到当前目录得到origin

  3. 打开目录origin\module.json,将其中的配置bundleName对应的值复制到UnsgnedReleasedProfileTemplate.json的配置bundle-name下。

  4. origin\module.jsonrequestPermissions配置下的ACL权限复制到UnsgnedReleasedProfileTemplate.json的配置aclsallowed-acls下。

重签p7b签名文件

  1. 打开终端,cd到重签名目录

  2. 执行以下指令

    java -jar hap-sign-tool.jar sign-profile -keyAlias "OpenHarmony Application Profile Release" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile "OpenHarmonyProfileRelease.pem" -inFile "UnsgnedReleasedProfileTemplate.json" -keystoreFile "OpenHarmony.p12" -outFile "resign.p7b" -keyPwd "123456" -keystorePwd "123456"
    

    得到resign.p7b签名文件。

重签hap

  1. 打开终端,cd到重签名目录

  2. 执行以下指令

    java -jar hap-sign-tool.jar sign-app -keyAlias "OpenHarmony Application Release" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "OpenHarmonyApplication.pem" -profileFile "resign.p7b" -inFile "origin.zip" -keystoreFile "OpenHarmony.p12" -outFile "resign.hap" -keyPwd "123456" -keystorePwd "123456" -signCode "1"
    

    得到resign.hap重签后的包。

注意事项

  1. 配置重签名环境步骤2需要下载的仓库分支需要与重签之后的包将要安装的系统版本对应。

  2. 如果设备系统配置的是私有证书,需要设备方提供对应的公钥以及签名材料如Alias、加密算法等。

  3. ACL权限可以通过https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md查看。

参考文献

https://gitee.com/openharmony/developtools_hapsigner

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/app-permission-mgmt-overview.md#%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E5%88%97%E8%A1%A8acl

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐