🧩 一文搞懂 HarmonyOS 中的 HAP、HAR 和 HSP:它们到底是什么?怎么用?

🌟 开头一句话总结

  • HAP 是你最终安装到手机上的"App 包";
  • HAR 是可被多个 App 共享的"动态库"(像 npm 包);
  • HSP 是只能被一个 App 内部使用的"静态库"(像私有工具函数集合)。

📦 1. HAP:HarmonyOS Ability Package(能力包)

✅ 它是什么?

HAP 是 鸿蒙应用的安装单元。你可以把它理解为 Android 的 APK 或 iOS 的 IPA。

每个鸿蒙 App 至少包含一个 HAP,通常分为两种:

类型 说明
Entry HAP 主模块,用户点击图标启动的就是它(必须有)
Feature HAP 可选功能模块,按需下载(比如"直播"、"支付"等独立功能)

📁 文件结构示例:

css 复制代码
MyApp/
├── entry/          ← Entry HAP
│   ├── src/main/
│   └── module.json5
├── feature_live/   ← Feature HAP(可选)
└── build-profile.json5

💡 关键点:

  • 用户安装的是 .hap 文件(实际是 ZIP 格式)。
  • 一个 App 可以有多个 HAP,但只有一个 Entry。
  • HAP 里包含代码、资源、配置、Ability(页面/服务)等。

🧱 2. HAR:HarmonyOS Archive(共享归档包)

✅ 它是什么?

HAR 是 可复用的共享库 ,类似 Web 开发中的 npm 包,或 Android 的 AAR。

  • 多个 App 或多个 HAP 都可以引用同一个 HAR
  • 编译后生成 .har 文件。
  • 支持包含 TS/JS 代码、C++ 原生代码、资源文件(图片、字符串等)

🛠️ 什么时候用 HAR?

  • 你有一套 UI 组件库(比如 Design System)要给多个项目用;
  • 封装了网络请求、日志、加密等通用逻辑;
  • 团队协作,需要模块解耦。

📁 创建方式(DevEco Studio):

新建模块 → 选择 "Shared Library" → 生成的就是 HAR。

⚠️ 注意限制:

  • HAR 不能包含 Ability(页面/服务) ------ 它只是"工具箱",不是"应用"。
  • 资源 ID 在不同 HAR 间可能冲突(建议加前缀)。

🔒 3. HSP:HarmonyOS Static Package(静态包)

✅ 它是什么?

HSP 是 仅限当前 App 内部使用的静态库,编译时会直接"合并"进主 HAP。

  • 不会被其他 App 引用;
  • 最终不会生成独立文件,而是"内联"到 HAP 中;
  • 更安全(代码不暴露)、更轻量(无运行时开销)。

🛠️ 什么时候用 HSP?

  • 工具函数、常量、私有业务逻辑,不想对外暴露;
  • 追求极致性能,避免 HAR 的动态加载开销;
  • 模块只在本 App 内使用,无需共享。

📁 创建方式:

新建模块 → 选择 "Static Library" → 生成 HSP。


🔁 对比总结表

特性 HAP HAR HSP
用途 应用安装包 共享库 静态私有库
能否被安装 ✅ 是 ❌ 否 ❌ 否
能否包含页面(Ability) ✅ 是 ❌ 否 ❌ 否
能否被多个 App 共用 ❌ 否 ✅ 是 ❌ 否
编译产物 .hap .har 无独立文件(内联)
创建模板 Empty Ability Shared Library Static Library

🎯 实际开发建议

  1. 主 App 功能 → 用 HAP(Entry + Feature);
  2. 跨项目复用组件/逻辑 → 用 HAR
  3. 仅本项目内部工具 → 用 HSP(更安全高效);
  4. 不要把业务页面放进 HAR/HSP ------ 它们只能放"辅助代码"。

🧪 举个例子

假设你在开发一个电商 App:

  • entry → 主 HAP(首页、商品列表)
  • feature_cart → 购物车 HAP(按需加载)
  • common_ui.har → 通用按钮、弹窗组件(多个 App 共用)
  • utils.hsp → 本地加密、时间格式化(仅本 App 用)

这样结构清晰,复用性强,也便于团队分工!


✅ 结语

HAP、HAR、HSP 是鸿蒙模块化开发的三大基石。

理解它们的区别,能帮你写出更规范、可维护、高性能的 HarmonyOS 应用。

📌 记住口诀:
HAP 装得下,HAR 分享它,HSP 私藏吧!

相关推荐
贾伟康10 小时前
【句匠|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
harmonyos·arkts·应用上架·appgallery·发布审核
贾伟康11 小时前
【句匠|15】HarmonyOS ArkTS 本地状态持久化实战:让保存、删除和页面返回后的数据即时一致
harmonyos·arkts·数据持久化·appstorage·preferences
贾伟康14 小时前
【句匠|16】HarmonyOS ArkTS 多设备布局实战:适配手机、平板和 PC/2in1 的窗口变化
harmonyos·arkts·arkui·响应式布局·多设备适配
小雨青年14 小时前
【HarmonyOS 7 平行视界深度实战】03 购物模式怎么实现连续浏览和左右推挤
华为·harmonyos
SuperHeroWu716 小时前
HarmonyOS Dev Assistant (HarmonyOS开发助手)如何打通元服务开发全流程
ai·agent·harmonyos·vs code·元服务·hbuilderx·assistant
熊猫钓鱼>_>16 小时前
用 OHAudioSuite 空间渲染节点搭一座「3D 有声博物馆」——从三种模式到 FreeBuds 头追的实战记录
c++·3d·ai·harmonyos·arkts·audio·ohaudiosuite
OH_TPC17 小时前
HarmonyOS APP开发---"心动卡"社交匹配App,需要用到这个库
harmonyos
光锥智能17 小时前
HUAWEI WATCH 6系列正式发布:鸿蒙AI手表,智慧健康旗舰
人工智能·华为·harmonyos
OH_TPC19 小时前
【鸿蒙优选三方库】@react-native-ohos/react-native-gesture-handler:原生级手势识别与处理框架
华为·harmonyos·鸿蒙
嘴贱欠吻!19 小时前
Flutter 触觉反馈插件 Gaimon三方库鸿蒙端教程
flutter·华为·harmonyos