完整教程:鸿蒙中的 APP、HAP、HSP、HAR包
本文同步发表于我的微信公众号,微信搜索 程语新视界即可关注,每个工作日都有文章更新
一、关系
二、解析
1. HAR - 静态共享包
作用:静态共享包,包括代码、C++库、资源和配置文件。它在编译时被集成到依赖它的HAP/HSP中,不会单独存在
场景:
代码/UI组件复用:多个模块或多个工程间共享通用的ArkUI组件、工具类、公共样式等
第三方库分发:将通用的能力封装成HAR,供其他开发者应用
构建步骤:
创建模块:在DevEco Studio中,选择
New > Module > Static Library。开发编码:在生成的HAR模块中添加代码、资源和配置文件。
编译构建:
菜单栏选择
Build > Make Module ‘libraryName’。在模块的
build目录下生成*.har文件。
2. HSP - 动态共享包
作用:动态共享包,也涵盖代码、C++库、资源和配置文件。但它不打包到依赖它的HAP中,而是在运行时被多个HAP共享,从而减少应用总体积
场景:
应用内功能共享:一个应用内有多个HAP都需要运用同一个大型功能库(如地图、音视频库),可将其封装为HSP,避免在每个HAP中重复打包
功能按需加载:某些功能不是应用启动所必需的,可以放在HSP中,在需要时才动态加载
构建步骤:
创建模块:在DevEco Studio中,选择
New > Module > Shared Library。开发编码:与HAR开发类似。
编译构建:
菜单栏选择
Build > Make Module ‘libraryName’。在模块的
build目录下会同时生成*.hsp和*.har文件。
发布(如需):切换到
release模式编译,生成*.tgz包用于发布到私仓。
3. HAP - 应用模块包
作用:HarmonyOS应用的基本功能单元,是应用的安装和运行基本单位。一个APP由一个或多个HAP组成
类型:
Entry HAP:主模块,包含应用的入口和核心功能,通常包含一个
UIAbilityFeature HAP:功能模块,提供特定的、可独立分发或按需下载的功能
场景:
Entry HAP:必须的,是用户安装应用时起初下载的部分
Feature HAP:用于实现艰难应用的模块化,不同功能行独立开发、测试、甚至按需下载(如电商应用的主商城、直播、金融等不同功能模块)
构建步骤:
创建模块:在DevEco Studio中,选择
New > Module,根据需求选择Entry或Feature模板。开发实现:在模块中实现UI、业务逻辑和Ability。
签名配置真机安装和上架应用市场的必要条件。就是:为应用调整有效的签名信息,这
编译构建:
点击
Build > Build Haps(s)/APP(s) > Build HAP(s)。在工程的
build目录下生成*.hap文件。
4. APP - 应用程序包
作用:是应用的发布形态,它是一个容器,包含了所有需要分发的HAP包、描述应用信息的
pack.info文件等。用户从应用市场下载和安装的就是APP包场景:
应用分发与安装:用于上传到应用市场,或直接安装到设备上进行测试和发布
构建步骤:
完成所有HAP开发:确保所有Entry和Feature HAP都已构建完成并正确调整。
配置签名:必须配备有效的发布证书和Profile文件。
编译构建:
点击
Build > Build Haps(s)/APP(s) > Build APP(s)。在工程的
build目录下输出*.app文件。
三、核心区别
| 包类型 | 作用层级 | 关键特性 | 依赖关系 | 产出物 |
|---|---|---|---|---|
| HAR | 代码/资源级 | 静态共享,编译时拷贝 | 被HAP/HSP依赖 | *.har |
| HSP | 模块级 | 动态共享,运行时共享 | 被HAP依赖 | *.hsp |
| HAP | 应用功能级 | 安装/运行单元 | 组成APP | *.hap |
| APP | 应用级 | 发布形态 | 包含HAP | *.app |
关系链:
多个HAR → 被 HSP/HAP 依赖 → 多个HAP(+HSP) → 打包成 一个APP→ 分发安装
四、场景选择
想封装通用组件/器具类给多个项目用? → 开发HAR
想减少大型应用多个功能模块的重复代码和资源,降低整体体积? → 开发HSP
想实现功能的模块化、按需下载? → 创建多个Feature HAP
要发布应用到市场? → 构建签名的APP包
浙公网安备 33010602011771号