HarmonyOS应用程序包介绍
- 1. 应用程序包概述
- 1.1 多 Module 设计的好处
- 1.2 Module 的类型
- 2. 应用程序包结构
- 2.1 应用的配置文件
- 2.2 资源目录
- 3. 应用程序编译后包结构
1. 应用程序包概述
官方推荐基于Stage
模型开发HarmonyOS
应用程序,一个应用可以包含一个或多个Module
。
1.1 多 Module 设计的好处
支持模块化开发: 一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。Module
中可以包含源代码、资源文件、第三方库、配置文件等,每一个 Module
可以独立编译,实现特定的功能。
支持多设备适配: 一个应用往往需要适配多种设备类型,在采用多 Module
设计的应用中,每个 Module
都会标注所支持的设备类型。那么在应用市场分发应用包时,也能够根据设备类型做精准的筛选和匹配,从而将不同的包合理的组合和部署到对应的设备上。
1.2 Module 的类型
-
Ability
类型的Module
:承载应用的功能和特性,是应用安装和运行的基本单元。Entry
类型的Ability
:作为应用的主模块,实现应用入口的功能特性。一个应用只能包含唯一一个 Entry。Feature
类型的Ability
:作为应用的特性模块,实现除 Entry 以外的功能特性。一个应用中可以包含一个或多个Feature
,也可以不含。
-
Library
类型的Module
:共享代码和资源,不能独立安装运行在设备上,只能作为应用的依赖项被引用。Static
类型的Library
:支持应用内共享,也可以发布后供其他应用使用。编译后生成一个.har
后缀的文件,多包引用相同的HAR
时,会导致 App 包膨大。Shared
类型的Library
:当前仅支持应用内共享。编译后生成一个.hsp
后缀的文件,当多包同时引用同一个共享包时,采用HSP
替代HAR
,可以避免HAR
造成的多包间代码和资源的重复拷贝,从而减小应用包大小。
2. 应用程序包结构
2.1 应用的配置文件
在AppScope
目录下app.json5
配置文件主要包含以下内容:
- 应用的全局配置信息,包含应用的 Bundle 名称、开发厂商、版本号等基本信息。
- 特定设备类型的配置信息。
module.json5
配置文件主要包含以下内容:
- Module 的基本配置信息,包含 Module 名称、类型、描述、支持的设备类型等基本信息。
- 应用组件信息,包含 UIAbility 组件和 ExtensionAbility 组件的描述信息。
- 应用运行过程中所需的权限信息。
2.2 资源目录
base
目录中的资源文件会被编译成二进制文件,并赋予资源文件 ID。通过指定资源类型(type)和资源名称(name)引用。rawfile
目录中的资源文件会被直接打包进应用,不经过编译,也不会被赋予资源文件 ID。通过指定文件路径和文件名引用。
3. 应用程序编译后包结构
编译后,Module
中的文件会发生如下变更:
- ets目录:ArkTS源码编译生成.abc文件。
- resources目录:
AppScope
目录下的资源文件会合入到Module
下面资源目录中,如果两个目录下的存在重名文件,编译打包后只会保留AppScope
目录下的资源文件。 - module配置文件:
AppScope
目录下的app.json5
文件字段会合入到Module
下面的module.json5
文件之中,编译后生成HAP
或HSP
最终的module.json
文件。