• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# HAP
2<!--Kit: Ability Kit-->
3<!--Subsystem: BundleManager-->
4<!--Owner: @wanghang904-->
5<!--Designer: @hanfeng6-->
6<!--Tester: @kongjing2-->
7<!--Adviser: @Brilliantry_Rui-->
8
9HAP(Harmony Ability Package)是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entry和feature。
10
11- entry:应用的主模块,作为应用的入口,提供了应用的基础功能。
12- feature:应用的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装。
13
14应用程序包可以只包含一个基础的entry包,也可以包含一个基础的entry包和多个功能性的feature包。
15
16## 使用场景
17
18- 单HAP场景:如果只包含UIAbility组件,无需使用ExtensionAbility组件,优先采用单HAP(即一个entry包)来实现应用开发。虽然一个HAP中可以包含一个或多个UIAbility组件,为了避免不必要的资源加载,推荐采用“一个UIAbility+多个页面”的方式。
19
20- 多HAP场景:如果应用的功能比较复杂,需要使用ExtensionAbility组件,可以采用多HAP(即一个entry包+多个feature包)来实现应用开发,每个HAP中包含一个UIAbility组件或者一个ExtensionAbility组件。在这种场景下,多个HAP引用相同的库文件,可能导致重复打包的问题。
21
22
23## 约束限制
24
25- 不支持导出接口和ArkUI组件,给其他模块使用。
26
27- 多HAP场景下,App Pack包中同一设备类型的所有HAP中最多只能包含一个Entry类型的HAP,也可以不包含;Feature类型的HAP可以包含一个或者多个,也可以不包含。
28
29- 多HAP场景下,在安装或更新时,存在一致性校验,详情参考[应用安装与更新一致性校验](multi_module_installation_update_consistency_verification.md)。使用打包工具进行打包成APP时,也会进行合法性校验,详情请参考[打包工具](../../application-dev/tools/packing-tool.md#app打包指令)。
30
31- 多HAP场景下,同一应用的所有HAP、HSP的签名证书要保持一致。上架应用市场是以App Pack形式上架,应用市场分发时会将所有HAP从App Pack中拆分出来,同时对所有HAP进行重签名,以保证签名证书的一致性。在调试阶段,开发者通过命令行或DevEco Studio将HAP安装到设备上时,要保证所有HAP签名证书一致,否则会出现安装失败的问题,签名操作请参考[应用/元服务签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-signing)32
33## 创建
34
35下面简要介绍如何通过DevEco Studio新建一个HAP模块。
36
371. 创建工程,构建第一个ArkTS应用。
382. 在工程目录上单击右键,选择**New > Module**。
393. 在弹出的对话框中选择**Empty Ability**模板,单击**Next**。
40
414. 在Module配置界面,配置**Module name**,选择**Module Type**和**Device Type**,然后单击**Next**。
42
435. 在Ability配置界面,配置**Ability name**,然后单击**Finish**完成创建。
44
45## 开发
46
47- HAP中支持添加UIAbility组件或ExtensionAbility组件,以及pages页面。具体操作可参考[在模块中添加Ability](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-add-new-ability)和[添加Page](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-add-page)48
49- HAP中支持引用HAR或HSP共享包,详见[HAR的使用](./har-package.md#使用)、[HSP的使用](./in-app-hsp.md#使用)。
50
51## 调试
52
53通过DevEco Studio编译打包,生成单个或者多个HAP,即可基于HAP进行调试。如需根据不同的部署环境、目标人群、运行环境等,将同一个HAP定制编译为不同版本,请参见[定制编译指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-customized-multi-targets-and-products-guides#section1011341611469)54
55开发者可以使用DevEco Studio或者hdc工具进行调试:
56
57- **方法一:** 使用DevEco Studio进行调试,详见[应用程序包调试方法](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-run-debug-configurations)58
59- **方法二:** 使用[hdc工具](../dfx/hdc.md)进行调试。
60
61   在调试前,需要先安装或更新HAP,此处有两种方式:
62
63   - 直接使用hdc安装、更新HAP。
64
65      HAP的路径为开发平台上的文件路径,以Windows开发平台为例,命令参考如下:
66
67      ```shell
68      # 安装、更新,多HAP可以指定多个文件路径
69      hdc install entry.hap feature.hap
70      # 执行结果
71      install bundle successfully.
72      # 卸载
73      hdc uninstall com.example.myapplication
74      # 执行结果
75      uninstall bundle successfully.
76      ```
77
78   - 先执行hdc shell,再使用bm工具安装、更新HAP。
79
80      HAP的文件路径为真机上的文件路径,命令参考如下:
81
82      ```shell
83      # 先执行hdc shell才能使用bm工具
84      hdc shell
85      # 安装、更新,多HAP可以指定多个文件路径
86      bm install -p /data/app/entry.hap /data/app/feature.hap
87      # 执行结果
88      install bundle successfully.
89      # 卸载
90      bm uninstall -n com.example.myapplication
91      # 执行结果
92      uninstall bundle successfully.
93      ```
94
95   完成HAP安装或更新后,即可参考相关调试命令进行[调试](../tools/aa-tool.md#进入调试模式命令attach)。
96
97<!--RP4-->
98<!--RP4End-->
99