HarmonyOS鸿蒙Next中HAP、HSP、HAR区别

HarmonyOS鸿蒙Next中HAP、HSP、HAR区别 HAP (HarmonyOS Ability Package):应用包,需要UIability和Page,包含了应用的代码、资源、配置等文件。一个 HAP 文件可以包含一个或多个 Ability(应用功能/界面)。HAP 是鸿蒙应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entry和feature.

  • 使用场景:开发鸿蒙应用的主要构成部分,实现应用的界面和逻辑功能。
  • 选择原则:每个 HAP 应具有明确的功能和界面,以便用户理解和使用。

HAR (HarmonyOS Ability Resource):静态共享包,不需要UIability和Page,主要用于存放应用的资源文件,如图片、音频、视频等。HAR 文件可以被多个 HAP 引用,实现资源共享,使用时多次拷贝 独立

  • 使用场景:当多个应用需要共享相同的资源文件时,可以使用 HAR。例如,多个应用可能需要引用相同的图片库或音频文件。
  • 选择原则:当资源文件需要被多个应用共享时,考虑使用 HAR。
  • 导出:可用export导出组件,方法,类,HAR对外暴露的接口,导出native方法,对于c++编写的so中的native方法,HSP通过间接(先通过import导入so,再通过export导出包有so的函数)的方式导出,对外暴露的接口,在Index.ets导出文件中声明 export{…}from’./…’
  • 引用:用import引用组件,方法,类,通过$r引用HAR中的资源

HSP (HarmonyOS Shared Package):动态共享包,不需要UIability和Page,主要用于提供系统级服务或第三方服务。HSP 不包含用户界面,主要用于实现后台逻辑处理,是动态共享包,可以包含代码、C++库、资源和配置文件,通过HSP可以实现代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有相同的包名和生命周期。使用时只有一份

  • 使用场景:开发系统级服务或第三方服务,如支付服务、位置服务等。HSP 不包含用户界面,主要用于实现后台逻辑处理。
  • 选择原则:当服务不需要用户界面,且需要被多个应用或系统调用时,考虑使用 HSP。
  • 导出:可用export导出组件,方法,类,HAR对外暴露的接口,导出native方法,对于c++编写的so中的native方法,HSP通过间接(先通过import导入so,再通过export导出包有so的函数)的方式导出,对外暴露的接口,在Index.ets导出文件中声明 export{…}from’./…’ ,导出hsp的资源,将需要对外提供的资源封装为一个资源管理类,对外暴露的接口,需要在入口文件index.ets中声明,采用这种方式导出资源,具有如下优点:
    • HSP开发者可以控制自己需要导出的资源,不需要对外暴露的资源可以不用导出。
    • 使用方无须感知HSP内部的资源名称。当HSP内部的资源名称发生变化时,也不需要使用方跟着修改。

引用:

  • 要使用HSP中的接口,首先需要在使用方的oh-package.json5中配置对它的依赖
  • 用import引用组件,方法,类,通过$r引用HAR中的资源

页面路由跳转:

  • 若开发者想在entry模块中,添加一个按钮跳转至library模块中的menu页面
  • router.pushUrl方法的入参中url的内容为’@bundle:com.samples.hspsample/library/ets/pages/Menu’
  • url内容的模板为:’@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)’

页面路由返回:

  • 如果当前处于HSP中的页面,需要返回之前的页面时,可以使用router.back方法,但是返回的页面必须是当前页面跳转路径上的页面
  • 如果从HSP页面返回HAP页面,url的内容为: ‘pages/Index’
  • 如果从HSP1的页面跳到HSP2的页面后,需要返回到HSP1的页面,url的内容为’@bundle:com.samples.hspsample/library/ets/pages/Menu’
  • url内容的模板为: ‘@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)’

更多关于HarmonyOS鸿蒙Next中HAP、HSP、HAR区别的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,HAP、HSP、HAR是三种不同的应用包格式,各自有不同的用途和特性。

  1. HAP(HarmonyOS Ability Package):HAP是应用的基本部署单元,包含应用的Ability、资源文件和配置信息。HAP可以独立安装和运行,适用于单一功能模块的部署。

  2. HSP(HarmonyOS Shared Package):HSP是共享包,允许多个HAP共享代码和资源。HSP不能单独运行,必须被HAP依赖使用。适用于跨模块的代码和资源共享。

  3. HAR(HarmonyOS Archive):HAR是静态库包,包含编译后的代码和资源,供其他模块引用。HAR不能独立运行,也不能被动态加载,适用于静态代码复用。

总结:HAP是独立应用包,HSP是共享包,HAR是静态库包。HAP和HSP可以动态加载,HAR只能静态引用。

更多关于HarmonyOS鸿蒙Next中HAP、HSP、HAR区别的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,HAP、HSP和HAR是三种不同的模块化开发方式,具体区别如下:

  1. HAP(Harmony Ability Package):是应用的基本部署单元,包含应用的代码、资源、配置文件等,可以直接安装和运行。

  2. HSP(Harmony Shared Package):是共享模块,包含可被多个HAP共享的代码和资源,不能独立运行,需被HAP引用。

  3. HAR(Harmony Archive):是静态共享包,包含编译后的代码和资源,供开发时引用,不参与最终应用的打包和部署。

总结:HAP是独立应用包,HSP是动态共享模块,HAR是静态共享包。

回到顶部