HarmonyOS第一课-应用程序框架基础_一个应用可以包含一个或多个hap包
官方课程学习笔记
什么是HAP?
HAP(Harmony Ability Package)是由Ability类型的Module编译形成的.hap的文件,它实现了应用的功能特性,可以独立安装和运行,是应用安装的基本单位,一个应用可以包含多个HAP:
-
entry类型的Module:应用的主模块,包含应用的入口界面、图标和主功能特性,应用可以不包含或最多包含一个entry类型的HAP
-
feature类型的Module,应用的动态特性模块。
Module类型可通过如下配置查看、指定:
代码/资源共享
在ArkTS工程中,可以使用LIbrary类型的Module来实现代码、资源的共享,将该类型的Module编译后形成共享包(.har .hap的文件)
-
Static Library(.har)编译后为静态共享包(HAR)
-
Shared Library(.hsp)编译后为动态共享包(HSP)
- 补充说明:编译HSP时,也会同时生成.har的文件,里面包含了.hsp中导出的接口文件,引用方通过HAR来调用HSP的功能
编译态包结构
编译HAP和HSP时,会把他们所依赖的HAR直接编译到HAP和HSP中
- ets目录:ArkTS源码编译生成.abc文件。
- resources目录:AppScope目录下的资源文件会合入到Module下面资源目录中,如果两个目录下存在重名文件,编译打包后只会保留AppScope目录下的资源文件。
- module配置文件:AppScope目录下的app.json5文件字段会合入到Module下面的module.json5文件之中,编译后生成HAP或HSP最终的module.json文件。
发布态包结构
在app.json5
配置文件中,bundleName
配置项指定了Bundle
的唯一标识,Bundle
包含工程编译出的所有.hap
与.hsp
文件
应用发布时,将Bundle打包为.app(App Pack)文件,在pack.info文件中描述了App Pack中每个HAP和HSP属性
App Pack是发布应用市场的基本单元,但不能直接安装
在应用签名、云端分发、端侧安装时,都是以HAP/HSP为单位进行签名、分发和安装的。