【HarmonyOS NEXT】HAP/HAR/HSP

一、背景

为什么需要 HAP/HAR/HSP?

在鸿蒙开发中,随着业务复杂提升会遇到,单工程多团队并行开发冲突频繁,公共基础能力组件需要在多个App中复用,直接复制代码有些不太现实,而HAP/HAR/HSP正能够解决这些问题

二、什么是HAP/HAR/HSP?

|--------|-------------------------|------------------------------------|------------------|
| 产物 | 通俗类比 | 核心定位 | 是否可独立运行 |
| HAP | 公司最终交付的 "成品产品"(如手机、家电) | 鸿蒙应用的安装包,是最终交付给用户的产物 | 可独立安装运行 |
| HAR | 公司的 "标准化零件包"(如螺丝、芯片) | 模块归档包,用于跨工程复用代码 / 资源(不包含 Ability) | 不可独立运行,需被 HAP 依赖 |
| HSP | 公司的 "共享工具间"(如公用打印机、会议室) | 共享包,用于多 HAP 间共享代码 / 资源(支持 Ability) | 需和 HAP 一起打包部署 |

在我们的项目开发在,接触最多的是HAP和HAR,HSP使用反倒比较少

2.1、HAP

是什么?

是鸿蒙应用的安装包,是编译后的代码、资源、配置文件的集合,用户下载安装的就是HAP文件

适用场景?

所有鸿蒙应用最终交付的就是HAP包,最终是将应用的HAP包安装在设备上

2.2、HAR

是什么?

是静态共享包,相当于把 "登录模块、通用组件、工具类" 打包成一个 "零件包"------ 包含代码、资源、依赖,但不包含 Ability,只能被其他工程依赖复用,不能独立运行。

适用场景?

支持应用内共享,也可以作为二方库(SDK)、三方库(SDK)发布后供其他应用使用。

作为二方库(SDK),发布到OHPM私仓,供公司内部其他应用使用。如公司内部封装的基础工具类,发布到私仓,可以供多个app使用

作为三方库(SDK),发布到OHPM中心仓,供其他应用使用。如凡泰小程序SDK、百度地图SDK,这些是中心仓公共的,所有app都可以下载使用,没有限制

2.3、HSP

是什么?

是动态共享包,多个 HAP(如 entry HAP 和 feature HAP)可共享使用其中的代码 / 资源,支持包含 Ability,但不能独立运行。

适用场景?

多个HAP/HSP共用的代码和资源放在同一个HSP中,可以提高代码、资源的可重用性和可维护性,同时编译打包时也只保留一份HSP代码和资源,能够控制应用包的大小。

HSP在运行时按需加载,有助于提升应用性能。

同一个组织内部的多个应用之间,可以使用集成态HSP实现代码和资源的共享。

三、什么时候选哪个

开发需求 推荐产物 典型案例
交付可安装的应用给用户 HAP 电商 App、办公 App 的最终安装包
跨工程复用登录组件 / 工具类(无 Ability) HAR 登录模块 HAR、通用 UI 组件 HAR
多 HAP 共享登录 Ability / 核心资源 HSP 应用的全局用户中心 HSP
保护核心源码,只暴露接口 HAR/HSP(编译后打包) 支付核心逻辑包、加密算法包
动态加载功能模块 feature HAP + HSP 电商 App 的 "直播模块" 按需加载

四、如何打包

4.1、HAR打包

选中home模块-->选中build-->点击Make Module 'home',编译后会生成har包

har包路径:home模块-->/build/default/outputs/default/home.har

4.2、HAP打包

选中应用-->选中build-->点击Build Hap(s)/APP(s)-->Build Hap(s)

4.3、HSP打包

打包方式与HAR包打包是一样的操作,唯一区别是在创建模块时区分是hsp类型的即可

五、拓展:结合项目总结

5.1、项目实现逻辑:壳工程 + HAR 包

目前开发的项目采用 "壳工程 + 多模块 HAR" 的模式(如:登录、路由、网络、基础工具组件等模块),本质是:

代码解耦:路由/网络等模块的代码和壳工程完全分离,模块团队改代码不影响壳工程;

复用方便:如果有另一个壳工程,可以直接引用同一个首页的har包,不用重复写代码;

编译隔离:每个模块 HAR 可以单独编译、测试,再交付给壳工程,降低整体风险。

5.2、UIAbility、HAR、HAP、壳工程的关联性

UIAbility :是 首页模块的**独立功能单元(**不只是零散的 UI / 业务逻辑,而是把首页的 UI、业务逻辑、生命周期(比如 "页面打开 / 关闭")打包成一个能独立运行的功能块);

HAR :是首页模块**源代码的交付包,**方便壳工程引用

壳工程:是主工程,它的核心动作是 【依赖 / 引入首页模块的 HAR 包】然后把这些代码和自己的代码整合到一起;

壳工程运行:整合后,壳工程就能运行首页模块的 UIAbility,展示首页内容;

HAP :壳工程最终打包成的安装包,用户下载这个 HAP,就能打开 App 使用所有模块的功能。

结论、整个链路:

首页模块的UIAbility代码 → 被打包成首页模块HAR包 → 壳工程引入这个 HAR 包 → 壳工程整合所有模块代码 → 壳工程被打包成HAP安装包 → 用户安装 HAP,打开 App 就能用首页等功能。

相关推荐
小雨下雨的雨18 小时前
Flutter 框架跨平台鸿蒙开发 —— SingleChildScrollView 控件之长内容滚动艺术
flutter·ui·华为·harmonyos·鸿蒙
2501_9445210019 小时前
rn_for_openharmony商城项目app实战-商品评价实现
javascript·数据库·react native·react.js·ecmascript·harmonyos
lili-felicity19 小时前
React Native for Harmony 企业级 Grid 宫格组件 完整实现
react native·react.js·harmonyos
以太浮标20 小时前
华为eNSP模拟器综合实验之- VLAN聚合(VLAN Aggregation或Super VLAN)解析
运维·网络·华为·信息与通信
lili-felicity1 天前
React Native 鸿蒙跨平台开发:动态表单全场景实现
react native·harmonyos
奋斗的小青年!!1 天前
Flutter跨平台开发适配OpenHarmony:文件系统操作深度实践
flutter·harmonyos·鸿蒙
SunkingYang1 天前
从硬件参数、系统等方面详细对比华为mate80 pro max与iPhone17 pro max
华为·苹果·iphone17·mate80·promax·手机对比
奋斗的小青年!!1 天前
Flutter跨平台开发OpenHarmony应用:个人中心实现
开发语言·前端·flutter·harmonyos·鸿蒙
人工智能知识库1 天前
2026年HCCDP-GaussDB工作级开发者题库(详细解析)
数据库·华为·gaussdb·题库·hccdp-gaussdb·工作级开发者认证
IT=>小脑虎1 天前
鸿蒙开发零基础小白学习知识点【基础版·详细版】
学习·华为·harmonyos