本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新
一、关系
二、解析
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:主模块,包含应用的入口和核心功能,通常包含一个
UIAbility -
Feature 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包
1552

被折叠的 条评论
为什么被折叠?



