当前位置: 首页 > article >正文

HarmonyOS 5.0应用开发——应用打包HAP、HAR、HSP

【高心星出品】

目录

      • 应用打包HAP、HAR、HSP
        • Module类型
        • HAP
        • HAR
          • 创建HAR
          • 建立依赖
          • HAR共享内容
        • HSP
          • 创建HSP
          • 建立依赖同上
          • HSP共享内容同上
        • HAR VS HSP

应用打包HAP、HAR、HSP

一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发,Module中可以包含源代码、资源文件、第三方库、配置文件等,每一个Module可以独立编译,实现特定的功能。这种模块化、松耦合的应用管理方式有助于应用的开发、维护与扩展。

Module类型

Ability类型的Module: 用于实现应用的功能和特性。每一个Ability类型的Module编译后,会生成一个以.hap为后缀的文件,我们称其为HAP(Harmony Ability Package)包。HAP包可以独立安装和运行,是应用安装的基本单位,一个应用中可以包含一个或多个HAP包,具体包含如下两种类型。

  • entry类型的Module:应用的主模块,包含应用的入口界面、入口图标和主功能特性,编译后生成entry类型的HAP。每一个应用分发到同一类型的设备上的应用程序包,只能包含唯一一个entry类型的HAP。

  • feature类型的Module:应用的动态特性模块,编译后生成feature类型的HAP。一个应用中可以包含一个或多个feature类型的HAP,也可以不包含。

Library类型的Module: 用于实现代码和资源的共享。同一个Library类型的Module可以被其他的Module多次引用,合理地使用该类型的Module,能够降低开发和维护成本。Library类型的Module分为Static和Shared两种类型,编译后会生成共享包。

  • Static Library:静态共享库。编译后会生成一个以.har为后缀的文件,即静态共享包HAR(Harmony Archive)。
  • Shared Library:动态共享库。编译后会生成一个以.hsp为后缀的文件,即动态共享包HSP(Harmony Shared Package)。
HAP

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

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

创建的基础项目就是包含一个entry HAP的项目,也可以通过如下方法创建feature的HAP。

在这里插入图片描述

feature HAP的模块是紧跟entry HAP的模块,如果entry HAP的模块运行设备类型是手机,那么feature HAP模块的运行类型只能选择手机,feature HAP就相当于entry HAP的特性模块,给主模块提供特性功能的入口,主模块只能路由到特性模块,无法实现资源依赖和模块依赖,也就是编译期feature会打包成单独的HAP包,可以独立运行。

在运行多HAP的应用的时候需要配置运行模式:

在这里插入图片描述

HAR

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

创建HAR

在这里插入图片描述

建立依赖

在这里插入图片描述

在entry的oh-package.json5中添加对于HAR的library的依赖,后面就可以使用对应的资源、类、方法和组件。

HAR共享内容

在HAR的index.ets中标记要对外共享的内容。

在这里插入图片描述

剩下的就可以直接在引用的模块中直接使用。

对于资源的引用:由于HAR在编译期就会跟引用的模块放在一起,所以资源引用可以当作同一个模块中的引用。

HSP

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

创建HSP

在这里插入图片描述

建立依赖同上
HSP共享内容同上

但是,对于资源的引用有所不同,在编译期HSP会独立编译成HSP包,所以引用资源的时候,需要加入HSP包名称。

//这里的[library1]就是HSP模块名称
Image($r('[library1].media.zgl')).width(80).height(80)
HAR VS HSP
共享包类型编译和运行方式发布和引用方式
HARHAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。注意:HAR在编译之后就只会存在于依赖方包里面,不会有单独的HAR包。HAR除了支持应用内引用,还可以独立打包发布,供其他应用引用。
HSPHSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。HSP一般随应用进行打包,当前支持应用内和集成态HSP。应用内HSP只支持应用内引用,集成态HSP支持发布到ohpm私仓和跨应用引用。

在这里插入图片描述

编译后的包:从图里面可以看到HAR编译期已经编译到所依赖的模块里面去了。

在这里插入图片描述


http://www.kler.cn/news/364563.html

相关文章:

  • C#应用程序实现限制输入法
  • 爬虫结合项目实战
  • 【java面向对象编程】第一弹----类与对象的理解及类和对象的内存分配机制
  • Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
  • Qt 二进制文件的读写
  • go基础(一)
  • 新160个crackme - 082-phox.1
  • Elasticsearch在分布式集群中进行数据分片的策略能否完全避免数据热点?数据分片分布不均会导致性能瓶颈吗?如何通过实践优化分片分布?
  • 本地生活平台开发搭建方案 同城O2O电商平台推广运营
  • OpenCV视觉分析之运动分析(2)背景减除类:BackgroundSubtractorKNN的使用
  • 缓存雪崩是什么
  • SparseRCNN 模型,用于目标检测任务
  • 云计算行业应用实训室建设方案
  • es 常用命令(已亲测)
  • Unity编辑器 连接不到SteamVR问题记录
  • 一个批量输出PDF页数的python程序
  • 常用MQ组件选型时需要考虑的问题
  • 独家大模型经典面试秘籍:问题答案超详细,收藏此文就够咯
  • AnaTraf | 探讨TCP握手时延
  • JavaScript正则表达式利器:exec()方法深度解析与应用实例
  • pnpm : 无法加载文件...
  • 用户画像中不同机器学习模型的优缺点和适用场景
  • Apache Flink 2.0-preview released
  • 如何在Debian操作系统上安装Docker
  • 每日回顾:简单用C写 归并排序
  • 光通信——前传基本架构