阅读(4018) (8)

鸿蒙OS 编译构建生成HAP

2020-09-17 11:15:10 更新

HAP 可以直接在模拟器或者真机设备上运行,用于 HarmonyOS 应用开发阶段的调试和查看运行效果。HAP 按构建类型和是否签名可以分为以下四种形态:

  • 构建类型为 Debug 的 HAP (带调试签名信息):携带调试签名信息,具备单步调试等调试手段的 HAP,用于开发者在真机或者模拟器中进行应用调试。
  • 构建类型为 Debug 的 HAP (不带签名):不带调试签名信息,具备单步调试等调试手段的 HAP,仅能运行在模拟器中。
  • 构建类型为 Release 的 HAP(带调试签名信息):携带调试签名信息,不具备调试能力的 HAP,用于开发者在真机或者模拟器中查看和验证应用运行效果。相对于 Debug 类型的 HAP 包,体积更小,运行效果与用户实际体验一致。
  • 构建类型为 Release 的 HAP(不带签名)不带调试签名信息,不具备调试能力的 HAP,仅能运行在模拟器中查看和验证应用运行效果。相对于 Debug 类型的 HAP 包,体积更小,运行效果与用户实际体验一致。

根据 HarmonyOS 工程介绍,一个 HarmonyOS 工程下可以存在多个 Module,在编译构建时,可以选择对单个 Module 进行编译构建;也可以对整个工程进行编译构建,同时生成多个 HAP。

前提条件

构建类型为 Debug 的 HAP(带调试签名信息)

如果一个工程目录下存在多个 Module,当对单个 Module 进行构建时,只需要对指定的 Module 进行签名;如果对整个工程进行构建,则需要对所有的 Module 进行签名。

  1. 打开 File>Project Structure,在 Modules>entry(模块名称)>Signing Configs > debug 窗口中,配置指定模块的调试签名信息。

  • Store File:选择密钥库文件,文件后缀为 .p12。
  • Store Password:输入密钥库密码。
  • Key Alias:输入密钥的别名信息。
  • Key Password:输入密钥的密码。
  • SignAlg:签名算法,固定为 SHA256withECDSA。
  • Profile File:选择申请的调试 Profile 文件,文件后缀为 .p7b。
  • Certpath File:选择申请的调试数字证书文件,文件后缀为 .cer。

img

  1. 在主菜单栏,点击 Build > Build APP(s)/Hap(s) > Build Debug Hap(s),生成已签名的 Debug HAP。

img

构建类型为 Debug 的 HAP(不带签名)

对于构建类型为 Debug 的 HAP,如果没有配置签名参数,则默认不对 HAP 进行签名,该方式生成的 HAP 仅能运行在模拟器上。

在主菜单栏,点击 Build > Build APP(s)/Hap(s) > Build Debug Hap(s),生成不带签名的调试 Debug HAP。

构建类型为 Release 的 HAP(带调试签名信息)

如果一个工程目录下存在多个 Module,当对单个 Module 进行构建时,只需要对指定的 Module 进行签名;如果对整个工程进行构建,则需要对所有的 Module 进行签名。

  1. 打开 File>Project Structure,在 Modules>entry(模块名称)>Signing Configs > release 窗口中 ,配置指定模块的调试签名信息。

  • Store File:选择密钥库文件,文件后缀为 .p12。
  • Store Password:输入密钥库密码。
  • Key Alias:输入密钥的别名信息。
  • Key Password:输入密钥的密码。
  • SignAlg:签名算法,固定为 SHA256withECDSA。
  • Profile File:选择申请的调试 Profile 文件,文件后缀为 .p7b。
  • Certpath File:选择申请的调试数字证书文件,文件后缀为 .cer。

img

  1. 在主菜单栏,点击 Build > Build APP(s)/Hap(s) > Build Release Hap(s),生成已签名的 Release HAP。

img

构建类型为 Release 的 HAP(不带签名)

对于构建类型为 Release 的 HAP,如果没有配置签名参数,则默认不对 HAP 进行签名,该方式生成的 HAP 仅能运行在模拟器上。

在主菜单栏,点击 Build > Build APP(s)/Hap(s) > Build Release Hap(s),生成不带签名的调试 Release HAP。