鸿蒙 HAP/HAR/HSP,你分清楚了吗?

鸿蒙 App 的项目结构一般为:HAP(主 App) 依赖 HSP(动态库) 或 HAR(静态库)。

模块描述场景
HAPHAP(Harmony Ability Package)是应用安装和运行的基本单元。HAP 包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entry 和 feature。单 HAP 场景 :如果只包含 UIAbility 组件,无需使用 ExtensionAbility 组件,优先采用单 HAP(即一个 entry 包)来实现应用开发。虽然一个 HAP 中可以包含一个或多个 UIAbility 组件,为了避免不必要的资源加载,推荐采用“一个 UIAbility+多个页面”的方式。

多 HAP 场景 :如果应用的功能比较复杂,需要使用 ExtensionAbility 组件,可以采用多 HAP(即一个 entry 包+多个 feature 包)来实现应用开发,每个 HAP 中包含一个 UIAbility 组件或者一个 ExtensionAbility 组件。在这种场景下,可能会存在多个 HAP 引用相同的库文件,导致重复打包的问题。

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

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

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

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

一般我们的业务模块为创建为 HSP 动态库模式,也是官网建议的模式,主要是可以缩减包体积大小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络部分知识点整理

停止等待协议的窗口尺寸为 1。 √以太网标准是IEEE802.3TCP/IP四层,OSI模型有7层,地址解析协议 ARP 在 OSI 参考七层协议属于数据链路层,在TCP/IP 协议属于网络层,ARP作用:将 IP 地址映射到第二层地址,交换…

Spring中使用FactoryBean配置注入Bean

spring通过FactoryBean配置可以将第三方框架整合到Spring中来,FactoryBean配置如下: 写一个用于注于的实体类,如User,并对这个类写一个实现FactoryBean的中间类(UserFactoryBean) User类 /** *Description: *author…

粒子扩展卡尔曼滤波|MATLAB代码

粒子滤波PF与扩展卡尔曼滤波EKF结合 下载链接:https://download.csdn.net/download/callmeup/89512392 粒子滤波 粒子滤波是一种用于估计状态变量的非线性滤波方法。它通过引入一组粒子来近似表示概率分布,从而利用蒙特卡洛方法进行状态估计。粒子滤波的主要思想是根据系统…

什么是带有 API 网关的代理?

带有 API 网关的代理服务显著提升了用户体验和性能。特别是对于那些使用需要频繁创建和轮换代理的工具的用户来说,使用 API 可以节省大量时间并提高效率。 了解 API API,即应用程序编程接口,是服务提供商和用户之间的连接网关。通过 API 连接…

树莓派(名词)

看书的时候看到了这个名词,查了一下。 树莓派,(英语:Raspberry Pi,简写为RPi,别名为RasPi / RPI) 是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于L…

昂科烧录器支持MindMotion灵动微电子的32位微控制器MM32L052NT

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中MindMotion灵动微电子的32位微控制器MM32L052NT已经被昂科的通用烧录平台AP8000所支持。 MM32L052NT使用高性能的ARM Cortex-M0为内核的32位微控制器,最高工作频率…

Revit 专业实用的BIM模型设计软件下载安装,Revit 最新版下载安装

Revit,该软件是专门为建筑信息模型(BIM)量身打造的,不仅极大提升了建筑设计师的工作效率,更为他们创造了一个更加精确、高效的设计环境。 在Revit的助力下,建筑设计师们能够轻松地进行建筑建模&#xff0c…

Maven列出所有的依赖树

在 IntelliJ IDEA 中,你可以使用 Maven 插件来列出项目的依赖树。Maven 插件提供了一个名为dependency:tree的目标,可以帮助你获取项目的依赖树详细信息。 要列出项目的依赖树,可以执行以下步骤: 打开 IntelliJ IDEA,…

U盘非安全拔出后的格式化危机与数据拯救策略

在数字化时代,U盘作为便捷的数据携带工具,其重要性不言而喻。然而,许多用户在日常使用中往往忽视了安全退出的重要性,直接拔出U盘后再插入时可能会遭遇“需要格式化”的提示,这一状况不仅令人措手不及,更可…

循环队列三种实现方式的基本操作(王道标准)

文章目录 牺牲一个存储空间来区分队空和队满设置size数据成员,表示队列当前长度设置tag数据成员 牺牲一个存储空间来区分队空和队满 缺点: 有一个单元无法利用 定义 #define MaxSize 10 typedef struct{ElemType data[MaxSize];int front,rear; }SqQu…

备忘:PythonREPL中py_repl.run方法执行报错和修改方法

PythonREPL是python提供的 “Read–Eval–Print Loop”(读取-求值-打印-循环)的缩写,它是一种简单的、交互式的编程环境,我们之前在用AI生成代码后执行就使用这个方法,例如 def py_repl_tool(self, realcode: str):py…

linux下OpenSSL升级到1.1以上版本

要将CentOS 7上的OpenSSL升级到1.1以上版本,您需要遵循以下步骤。请注意,这些步骤可能需要一些系统管理经验,因为您将从源代码编译和安装OpenSSL。 1. 更新系统软件包 首先,确保您的系统软件包是最新的。使用以下命令更新所有软…

html+js+css登录注册界面

拥有向服务器发送登录或注册数据并接收返回数据的功能 点赞关注 界面 源代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>Login and Registration Form</title> <style> * …

深入Django(四)

Django模板系统 引言 在之前的几天中&#xff0c;我们介绍了Django的基本概念、模型和视图。今天我们将探讨Django的模板系统&#xff0c;它负责将数据和HTML模板结合起来&#xff0c;生成最终用户看到的内容。 Django模板系统概述 Django的模板系统是一个强大的工具&#…

【反者道之动,弱者道之用】统计学中的哲理——回归均值 Regression to the mean

&#x1f4a1;&#x1f4a1;在统计学中&#xff0c;回归均值(Regression toward the Mean/Regression to the Mean) 指的是如果变量在其第一次测量时是极端的&#xff0c;则在第二次测量时会趋向于接近平均值的现象。   在金融学中&#xff0c; 回归均值是指股票价格无论高于…

MySQL期末答辩—仓库管理系统

仓库管理系统&#xff1a;仓库管理系统是一种基于互联网对实际仓库的管理平台&#xff0c;旨在提供一个方便、快捷、安全的存取货物和查询商品信息平台。该系统通过在线用户登录查询&#xff0c;可以线上操作线下具体出/入库操作、查询仓库商品信息、提高仓库运作效率&#xff…

imx6ull/linux应用编程学习(8)PWM应用编程(基于正点)

1.应用层如何操控PWM&#xff1a; 与 LED 设备一样&#xff0c; PWM 同样也是通过 sysfs 方式进行操控&#xff0c;进入到/sys/class/pwm 目录下 这里列举出了 8 个以 pwmchipX&#xff08;X 表示数字 0~7&#xff09;命名的文件夹&#xff0c;这八个文件夹其实就对应了…

为什么有些人思考得多,决策反而不好?避免过度拟合的终极指南:决策高手的秘密:灰度认知,黑白决策

在决策过程中&#xff0c;过度关注细节可能导致决策效果不佳&#xff0c;这被称为“过度拟合”。为了避免这种情况&#xff0c;我们需要进行“灰度认知&#xff0c;黑白决策”&#xff0c;即接受不确定性&#xff0c;关注整体趋势&#xff0c;设定明确目标&#xff0c;简化选择…

统一开放平台实现方案(访微信SDK)

需求分析 在互联中&#xff0c;我们的服务是不对外开放的&#xff0c;但是有先场景下我们可以对外开放&#xff0c;但是必须是系统所允许的用户才可以&#xff0c;这样做一方面保证安全&#xff0c;另一方面可以提升平台的能力&#xff0c;比如调用微信的接口必须要进行微信开…

彻底掌握页面白屏检测

前言 在日常的前端开发中&#xff0c;白屏几乎是每个前端开发者都会遇到的问题。白屏问题严重影响了用户体验。当用户访问一个页面时&#xff0c;如果页面长时间处于白屏状态&#xff0c;用户可能会认为页面出现了问题&#xff0c;从而选择离开。这对于任何一个网站都是不利的…