codecamp

鸿蒙OS 编译构建生成HAP

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。

鸿蒙OS 申请证书和Profile
鸿蒙OS 使用模拟器运行应用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }