HarmonyOS NEXT中怎么理解HAR、HAP、HSP、App的关系

文章目录

    • 一、HAR
      • [1.1 简介](#1.1 简介)
      • [1.2 使用场景](#1.2 使用场景)
      • [1.3 约束限制](#1.3 约束限制)
    • 二、HAP
      • [2.1 简介](#2.1 简介)
      • [2.2 使用场景](#2.2 使用场景)
      • [2.3 约束限制](#2.3 约束限制)
    • 三、HSP
      • [3.1 简介](#3.1 简介)
      • [3.2 使用场景](#3.2 使用场景)
      • [3.3 约束限制](#3.3 约束限制)
    • 四、小结

一、HAR

1.1 简介

HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。

1.2 使用场景

  • 作为二方库,发布到OHPM私仓,供公司内部其他应用使用。
  • 作为三方库,发布到OHPM中心仓,供其他应用使用。

1.3 约束限制

  • HAR不支持在设备上单独安装/运行,只能作为应用模块的依赖项被引用。
  • HAR不支持在配置文件中声明UIAbility组件与ExtensionAbility组件。
  • HAR不支持在配置文件中声明pages页面,但是可以包含pages页面,并通过命名路由的方式进行跳转。
  • HAR不支持引用AppScope目录中的资源。在编译构建时,AppScope中的内容不会打包到HAR中,因此会导致HAR资源引用失败。
  • HAR可以依赖其他HAR,但不支持循环依赖,也不支持依赖传递。

二、HAP

2.1 简介

HAP(Harmony Ability Package)是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entryfeature

  • entry:应用的主模块,作为应用的入口,提供了应用的基础功能。
  • feature:应用的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装。

应用程序包可以只包含一个基础的entry包,也可以包含一个基础的entry包和多个功能性的feature包。

2.2 使用场景

  • HAP场景:如果只包含UIAbility组件,无需使用ExtensionAbility组件,优先采用单HAP(即一个entry包)来实现应用开发。虽然一个HAP中可以包含一个或多个UIAbility组件,为了避免不必要的资源加载,推荐采用"一个UIAbility+多个页面"的方式。
  • HAP场景:如果应用的功能比较复杂,需要使用ExtensionAbility组件,可以采用多HAP(即一个entry包+多个feature包)来实现应用开发,每个HAP中包含一个UIAbility组件或者一个ExtensionAbility组件。在这种场景下,可能会存在多个HAP引用相同的库文件,导致重复打包的问题。

2.3 约束限制

  • 不支持导出接口和ArkUI组件,给其他模块使用。
  • HAP场景下,App Pack包中同一设备类型的所有HAP中必须有且只有一个Entry类型的HAPFeature类型的HAP可以有一个或者多个,也可以没有。
  • HAP场景下,同一应用中的所有HAP的配置文件中的bundleNameversionCodeversionNameminCompatibleVersionCodedebugminAPIVersiontargetAPIVersionapiReleaseType相同,同一设备类型的所有HAP对应的moduleName标签必须唯一。HAP打包生成App Pack包时,会对上述参数配置进行校验。
  • HAP场景下,同一应用的所有HAPHSP的签名证书要保持一致。上架应用市场是以App Pack形式上架,应用市场分发时会将所有HAPApp Pack中拆分出来,同时对其中的所有HAP进行重签名,这样保证了所有HAP签名证书的一致性。在调试阶段,开发者通过命令行或DevEco StudioHAP安装到设备上时,要保证所有HAP签名证书一致,否则会出现安装失败的问题。

三、HSP

3.1 简介

HSP(Harmony Shared Package)是动态共享包,可以包含代码、C++库、资源和配置文件,通过HSP可以实现应用内的代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有相同的包名和生命周期。仅支持应用内HSP,不支持应用间HSP

3.2 使用场景

  • 多个HAP/HSP共用的代码和资源放在同一个HSP中,可以提高代码、资源的可重用性和可维护性,同时编译打包时也只保留一份HSP代码和资源,能够有效控制应用包大小。
  • HSP在运行时按需加载,有助于提升应用性能。

3.3 约束限制

  • HSP不支持在设备上单独安装/运行,需要与依赖该HSPHAP一起安装/运行。HSP的版本号必须与HAP版本号一致。
  • HSP不支持在配置文件中声明UIAbility组件与ExtensionAbility组件。
  • HSP可以依赖其他HARHSP,但不支持循环依赖,也不支持依赖传递。

四、小结

简单来说:

  • App是个上架概念,多个HAP打包一起上架。
  • HAP是可以独立运行、分发的,HAP不是复用的,复用的应该是HAR
  • HAR是静态共享包,每个模块依赖的话都会打包到HAP里。
相关推荐
iOS阿玮21 分钟前
为什么独立开发者都在AppStore而不去安卓市场?
uni-app·app·apple
zhanshuo17 小时前
构建可扩展的状态系统:基于 ArkTS 的模块化状态管理设计与实现
harmonyos
zhanshuo17 小时前
ArkTS 模块通信全解析:用事件总线实现页面消息联动
harmonyos
codefish7981 天前
鸿蒙开发学习之路:从入门到实践的全面指南
harmonyos
yrjw1 天前
一款基于react-native harmonyOS 封装的【文档】文件预览查看开源库(基于Harmony 原生文件预览服务进行封装)
harmonyos
搜狐技术产品小编20232 天前
搜狐新闻直播间适配HarmonyOs实现点赞动画
华为·harmonyos
zhanshuo2 天前
ArkUI 玩转水平滑动视图:超全实战教程与项目应用解析
harmonyos·arkui
zhanshuo2 天前
ArkUI Canvas 实战:快速绘制柱状图图表组件
harmonyos·arkui
zhanshuo3 天前
手把手教你用 ArkUI 写出高性能分页列表:List + onScroll 实战解析
harmonyos
zhanshuo3 天前
深入解析 ArkUI 触摸事件机制:从点击到滑动的开发全流程
harmonyos