鸿蒙中的 APP、HAP、HSP、HAR包

本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新

一、关系

二、解析

1. HAR - 静态共享包
  • 作用:静态共享包,包含代码、C++库、资源和配置文件。它在编译时被集成到依赖它的HAP/HSP中,不会单独存在

  • 场景

    • 代码/UI组件复用:多个模块或多个工程间共享通用的ArkUI组件、工具类、公共样式等

    • 第三方库分发:将通用的能力封装成HAR,供其他开发者使用

  • 构建步骤

    1. 创建模块:在DevEco Studio中,选择 New > Module > Static Library

    2. 开发编码:在生成的HAR模块中添加代码、资源和配置文件。

    3. 编译构建

      • 菜单栏选择 Build > Make Module ‘libraryName’

      • 在模块的 build 目录下生成 *.har 文件。

2. HSP - 动态共享包
  • 作用:动态共享包,也包含代码、C++库、资源和配置文件。但它不打包到依赖它的HAP中,而是在运行时被多个HAP共享,从而减少应用总体积

  • 场景

    • 应用内功能共享:一个应用内有多个HAP都需要使用同一个大型功能库(如地图、音视频库),可将其封装为HSP,避免在每个HAP中重复打包

    • 功能按需加载:某些功能不是应用启动所必需的,可以放在HSP中,在需要时才动态加载

  • 构建步骤

    1. 创建模块:在DevEco Studio中,选择 New > Module > Shared Library

    2. 开发编码:与HAR开发类似。

    3. 编译构建

      • 菜单栏选择 Build > Make Module ‘libraryName’

      • 在模块的 build 目录下会同时生成 *.hsp 和 *.har 文件。

    4. 发布(如需):切换到 release 模式编译,生成 *.tgz 包用于发布到私仓。

3. HAP - 应用模块包
  • 作用:HarmonyOS应用的基本功能单元,是应用的安装和运行基本单位。一个APP由一个或多个HAP组成

  • 类型

    • Entry HAP:主模块,包含应用的入口和核心功能,通常包含一个 UIAbility

    • Feature HAP:功能模块,提供特定的、可独立分发或按需下载的功能

  • 场景

    • Entry HAP:必须的,是用户安装应用时首先下载的部分

    • Feature HAP:用于实现复杂应用的模块化,不同功能可以独立开发、测试、甚至按需下载(如电商应用的主商城、直播、金融等不同功能模块)

  • 构建步骤

    1. 创建模块:在DevEco Studio中,选择 New > Module,根据需求选择 Entry 或 Feature 模板。

    2. 开发实现:在模块中实现UI、业务逻辑和Ability。

    3. 签名配置:为应用配置有效的签名信息,这是真机安装和上架应用市场的必要条件。

    4. 编译构建

      • 点击 Build > Build Haps(s)/APP(s) > Build HAP(s)

      • 在工程的 build 目录下生成 *.hap 文件。

4. APP - 应用程序包
  • 作用:是应用的发布形态,它是一个容器,包含了所有需要分发的HAP包、描述应用信息的 pack.info 文件等。用户从应用市场下载和安装的就是APP包

  • 场景

    • 应用分发与安装:用于上传到应用市场,或直接安装到设备上进行测试和发布

  • 构建步骤

    1. 完成所有HAP开发:确保所有Entry和Feature HAP都已开发完成并正确配置。

    2. 配置签名:必须配置有效的发布证书和Profile文件。

    3. 编译构建

      • 点击 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包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值