鸿蒙游戏证书和签名配置 原创

游戏技术分享
发布于 2025-5-8 15:48
浏览
0收藏

1 证书介绍

证书分为发布证书和调试证书,发布证书和发布 Profile 用于在应用上架时对 APP 进行签名,调试证书和调试 Profile 用于在本地调试时对 HAP 进行签名。

证书的生成和签名结合在一起,请参考下边配置签名中的文档。

2 DevEco配置签名

具体内容请参考​DevEco配置文档

3 流水线给应用添加签名

准备申请签名所需文件

准备好申请签名所需3个文件:密钥(.p12文件)、数字证书(.cer文件)、Profile(.p7b文件)。

生成密钥和证书请求文件

使用Open JDK携带的Keytool工具生成密钥和证书请求文件。


  1. 使用管理员身份运行命令行工具。
  2. 鸿蒙游戏证书和签名配置-鸿蒙开发者社区

  3. 切换到keytool工具所在路径,路径为DevEco Studio安装目录下的jbr\bin目录。
  4. 执行如下命令,生成公私钥文件。例如,生成的密钥库名称为idedemokey.p12,存储到D盘根目录下。





keytool -genkeypair -alias "ide_demo_app" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -validity 9125 -storepass 123456Abc -keypass 123456Abc

生成公私钥文件的参数说明如下:

  • alias:密钥的别名信息,用于标识密钥名称。
  • sigalg:签名算法,固定为SHA256withECDSA
  • dname:按照操作界面提示进行输入。
  • C:国家/地区代码,如CN。
  • O:组织名称,如HUAWEI。
  • OU:组织单位名称,如HUAWEI IDE。
  • CN:名字与姓氏,建议与别名一致。
  • validity:证书有效期,建议设置为9125(25年)。
  • storepass:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
  • keypass:设置密钥的密码,请与storepass保持一致。
  1. 执行如下命令,执行后需要输入storepass密码,生成密钥证书请求文件





keytool -certreq -alias "ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -file d:\\idedemokey.csr

生成证书请求文件的参数说明如下:

  • alias:与上一步骤中输入的alias保持一致。
  • file:生成的证书请求文件名称,后缀为.csr。
  1. 申请调试数字证书和Profile文件。
    生成证书请求文件后,在AppGallery Connect中申请、下载调试数字证书和Profile文件,具体请参考​​​申请调试证书和Profile文件​​。

对HAP进行签名

通过hvigor打包生成的HAP不会携带签名信息,如果要在真机设备上运行HAP,需要使用命令行工具对HAP进行签名。

  1. 准备好HAP签名工具hap_sign_tool.jar(在${COMMANDLINE_TOOL_DIR}/command-line-tools/sdk/default/openharmony/toolchains/lib下)。
  2. 使用如下命令对HAP进行签名。详细的签名工具指导请参考​​Hap包签名工具​​​。





java -jar hap-sign-tool.jar sign-app -keyAlias "key0" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "test.cer" -profileFile "test.p7b" -inFile "hap-unsigned.hap" -keystoreFile "test.p12" -outFile "result\hap-signed.hap" -keyPwd "123456" -keystorePwd "123456" -signCode "1"

关于该命令中需要修改的参数说明如下,其余参数不需要修改:

  • keyAlias:密钥别名。
  • appCertFile:申请的调试证书文件,格式为.cer。
  • profileFile:申请的调试Profile文件,格式为.p7b。
  • inFile:通过hvigor打包生成的未携带签名信息的HAP。
  • keystoreFile:密钥库文件,格式为.p12。
  • outFile:经过签名后生成的携带签名信息的HAP。
  • keyPwd:密钥口令。
  • keystorePwd:密钥库口令。
  • signCode:是否开启代码签名,缺省为开启。1表示开启,0表示不开启。从HarmonyOS 5.0.2 Beta1版本开始,需开启代码签名,否则将导致构建出的包无法安装到设备上。

4 权限修改

应用在访问数据或者执行操作时,需要评估该行为是否需要应用具备相关的权限。如果确认需要目标权限,则需要在应用安装包中申请目标权限。

每一个权限的权限等级、授权方式不同,申请权限的方式也不同,具体申请方式见下表。

权限类型

授权方式

操作路径

​所有应用可申请​

system_grant

​声明权限​​ > 访问接口

​所有应用可申请​

user_grant

​声明权限​​​ > ​​向用户申请授权​​ > 访问接口

​受限开放权限​

system_grant

​申请使用受限权限​​​ > ​​声明权限​​ > 访问接口

​受限开放权限​

user_grant

​申请使用受限权限​​​ > ​​声明权限​​​ > ​​向用户申请授权​​ > 访问接口

鸿蒙游戏证书和签名配置-鸿蒙开发者社区

受限权限申请后,需要重新生成证书、重新签名。


原文链接:​​华为开发者文章​


 更多问题可关注:

鸿蒙游戏官方网站:​​已有游戏移植-鸿蒙游戏-华为开发者联盟​

公开课:​​华为开发者学堂​

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2025-8-21 10:46:38修改
收藏
回复
举报
回复
    相关推荐