🧩 一文搞懂 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 私藏吧!

相关推荐
程序员黑豆1 小时前
鸿蒙应用开发:@Link 装饰器实现父子组件双向同步
前端·后端·harmonyos
2501_919749032 小时前
华为鸿蒙免费解压缩APP—小羊解压缩
华为·harmonyos
爱写代码的森2 小时前
鸿蒙三方库 | harmony-utils之EncryptUtil URL编解码详解
服务器·华为·harmonyos·鸿蒙·huawei
youtootech2 小时前
HarmonyOS 6.0 卡片式信息流与瀑布流布局
华为·harmonyos
luoyayun3615 小时前
【Qt for Harmony】 Qt 5.12.12 鸿蒙版 Windows 交叉编译
qt·harmonyos·qt for harmony
木木子226 小时前
# 鸿蒙 HarmonyOS 应用开发实战(第25期)|骰子(Dice Roller)— Unicode 符号与动画渲染精讲
华为·harmonyos
qizayaoshuap6 小时前
# HarmonyOS ArkTS 记忆翻牌游戏深度解析 —— Fisher-Yates 洗牌与翻牌匹配机制
游戏·华为·harmonyos
youtootech7 小时前
HarmonyOS 6.0 自定义绘图表盘与仪表
华为·harmonyos
yaoyaoxingzhe17 小时前
HarmonyOS应用《玄象》开发实战:Canvas 绘制星宿连线:moveTo / lineTo / stroke 路径绘制
harmonyos·鸿蒙
echohelloworld1121 小时前
HarmonyOS应用开发实战:猫猫大作战-springMotion 三参数、responsiveSpringMotion 响应式弹簧、与 EaseO
harmonyos·鸿蒙