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

鸿蒙 动态共享包HSP的创建和引用

1.什么是动态共享包HSP

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

说明:

应用内HSP:在编译过程中与应用包名(bundleName)强耦合,只能给某个特定的应用使用。

集成态HSP:构建、发布过程中,不与特定的应用包名耦合;使用时,工具链支持自动将集成态HSP的包名替换成宿主应用包名。

2.使用场景

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

  • HSP在运行时按需加载,有助于提升应用性能。

  • 同一个组织内部的多个应用之间,可以使用集成态HSP实现代码和资源的共享。

HSP旨在解决HAR存在的几个问题:

  • 多个HAP引用相同的HAR,导致的APP包大小膨胀问题。

  • 多个HAP引用相同的HAR,HAR中的一些状态变量无法共享的问题。

3.约束限制

  • HSP不支持在设备上单独安装/运行,需要与依赖该HSP的HAP一起安装/运行。HSP的版本号必须与HAP版本号一致。
  • HSP不支持在配置文件中声明UIAbility组件与ExtensionAbility组件。
  • HSP可以依赖其他HAR或HSP,但不支持循环依赖,也不支持依赖传递。
  • 集成态HSP只支持Stage模型。
  • 集成态HSP需要API12及以上版本,使用标准化的OHMUrl格式。

4.创建动态共享包

(1)点击选择FIile>New > Module

(2)模板类型选择Shared Library,点击Next

(3)在Configure New Module界面中,设置新添加的模块信息,设置完成后,单击Finish完成创建

  • Module name:新增模块的名称。
  • Device type:支持的设备类型。
  • Enable native:是否创建一个用于调用C++代码的模块。

(4)创建完成后,会在工程目录中生成库模块及相关文件。

Index.ets如下:

5.编译HSP模块

开发完库模块后,选中模块名,然后通过DevEco Studio菜单栏的Build > Make Module ${libraryName}进行编译构建,生成HSP。

打包HSP时,会同时默认打包出HAR,在模块下build目录下可以看到*.har和*.hsp。

6.上传私仓

如需在应用内共享HSP,请将HSP共享包上传至私仓(请参考将三方库发布到 ohpm-repo),请先按以下操作编译生成*.tgz包。

(1.)将编译模式切换成release模式。

(2.)选中HSP模块的根目录,点击Build > Make Module ${libraryName}启动构建

(3.)构建完成后,build目录下生成HSP包产物,其中.tgz用来上传至私仓。

7.引用

(1. )在使用方entry/feature模块的oh-package.json5文件中添加HSP模块引用

(2.)如果没有安装“ohpm install”,点击Run 'ohpm install',HSP目录将映射到entry/feature的oh_modules目录下

(3.)使用

点击 “Edit Configurations...”

(4.)引用HSP下的utils/Calc.ets/add方法

运行结果如下:

8.发布共享包 

在之前的静态共享包里面已经介绍 静态共享包HAR的创建和引用_hsp和har-CSDN博客

相关文章:

鸿蒙 动态共享包HSP的创建和引用

1.什么是动态共享包HSP HSP(Harmony Shared Package)是动态共享包,可以包含代码、C库、资源和配置文件,通过HSP可以实现代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应…...

ARM架构(二)—— arm v7-a/v8/v9寄存器介绍

1、ARM v7-A寄存器 1.1 通用寄存器 V7 V8开始 FIQ个IRQ优先级一样, 通用寄存器:31个 1.2 程序状态寄存器 CPSR是程序状态毒存器,保存条件标志位,中断禁止位,当前处理器模式等控制和状态位。每种异常模式下还存在SPS…...

C++合作开发项目:美术馆1.0

快乐星空MakerZINCFFO 合作入口&#xff1a;CM工作室 效果图&#xff1a; 代码&#xff1a; &#xff08;还有几个音乐&#xff01;&#xff09; main.cpp #include <bits/stdc.h> #include <windows.h> #include <conio.h> #include <time.h> #in…...

QT 5 同时使用Q_DECLARE_METATYPE(pointdata) 和继承 QObjectUserData

在Qt框架中&#xff0c;QObjectUserData 和 Q_DECLARE_METATYPE() 宏都与Qt的元对象系统有关&#xff0c;但它们的使用方式有一些特别的限制和兼容性问题。 关于QObjectUserData&#xff1a; QObjectUserData 是一个用来存储用户数据的类。在Qt中&#xff0c;每个 QObject 可以…...

【MySQL进阶之路 | 高级篇】范式概述与第一范式

1. 范式简介 在关系型数据库中&#xff0c;关于数据表的设计的基本原则&#xff0c;规则就称为范式。可以理解为&#xff0c;一张数据表的设计结果需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库&#xff0c;必须满足一定的范式。 范式的英文名是Normal …...

Open-TeleVision复现及机器人迁移

相关信息 标题 Open-TeleVision: Teleoperation with Immersive Active Visual Feedback作者 Xuxin Cheng1 Jialong Li1 Shiqi Yang1 Ge Yang2 Xiaolong Wang1 UC San Diego1 MIT2主页 https://robot-tv.github.io/链接 https://robot-tv.github.io/resources/television.pdf代…...

Notepad++换安装路径之后,右键打开方式报错:Windows无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目。的处理方法

把Notepad添加到右键打开方式&#xff0c;可以参考下面的3篇文章添加&#xff1a; https://blog.csdn.net/xiaoerbuyu1233/article/details/88287747 https://blog.csdn.net/qq_44000337/article/details/120277317 https://www.cnblogs.com/zhrngM/p/12899026.html 这里主要是…...

【Flutter 面试题】 使用成熟状态管理库的弊端有哪些?

【Flutter 面试题】 使用成熟状态管理库的弊端有哪些? 文章目录 写在前面口述回答补充说明写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同学,你好! 😊 …...

Apache Commons技术详解

文章目录 简介官网链接原理基础使用Commons LangCommons Collections 高级使用Commons IOCommons Math 优缺点优点缺点 总结 简介 Apache Commons 是 Apache 软件基金会下的一个项目&#xff0c;旨在提供可重用的Java组件。这些组件覆盖了广泛的编程任务&#xff0c;从字符串处…...

怎样使用 Juicer tools 的 dump 命令将.hic文件转换为交互矩阵matrix计数文件 (Windows)

创作日志&#xff1a; 万恶的生信…一个scHiC数据集没有提供处理好的计数文件&#xff0c;需要从.hic转换。Github一个个好长的文档看了好久才定位到 juicer tools 的dump命令&#xff0c;使用起来比想象中简单。 一、下载Juicer tools 注意&#xff1a;使用Juicer tools的前提…...

【Docker】Docker Desktop - WSL update failed

问题描述 Windows上安装完成docker desktop之后&#xff0c;第一次启动失败&#xff0c;提示&#xff1a;WSL update failed 解决方案 打开Windows PowerShell 手动执行&#xff1a; wsl --set-default-version 2 wsl --update...

基于rsync\unlink 等一套本机备份跨机备份历史备份清理shell 脚本

一 摘要 本文主要介绍一套本地备份、跨机器备份、历史备份清理脚本&#xff0c;使用场景如数据库备份等 二 环境 linux 系列系统 基本都支持&#xff0c;个别命令可能需要微调。 2.1 实验环境 [rootlocalhost rsync]# cat /etc/centos-release CentOS Linux release 7.9.2…...

使用nginx实现一个端口和ip访问多个vue前端

前言&#xff1a;由于安全组要求&#xff0c;前端页面只开放一个端口&#xff0c;但是项目有多个前端&#xff0c;此前一直使用的是一个前端使用单独一个端口进行访问&#xff0c;现在需要调整。 需要实现&#xff1a;这里以80端口为例&#xff0c;两个前端分别是&#xff1a;p…...

Linux云计算 |【第一阶段】SERVICES-DAY5

主要内容&#xff1a; 源码编译安装、rsync同步操作、inotify实时同步、数据库服务基础 实操前骤&#xff1a;&#xff08;所需tools.tar.gz与users.sql&#xff09; 1.两台主机设置SELinnx和关闭防火墙 setenforce 0 systemctl stop firewalld.service //停止防火墙 sy…...

IP第一次综合实验

一、实验拓扑 二、实验要求 1、R6为ISP&#xff0c;接口IP地址均为公有地址&#xff0c;该设备只能配置地址之后不能冉对其进行任何配置 2、R1-R5为局域网&#xff0c;私有Ip地址192.168.1.0/24&#xff0c;请合理分配 3、R1、82、R4&#xff0c;各有两个环回IP地址;R5,R6各…...

Could not load dynamic library ‘cudart64_100.dll‘

python代码报错 Could not load dynamic library cudart64_100.dll; dlerror: cudart64_100.dll not found 2024-07-22 14:19:21.931639: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine…...

四大引用——强软弱虚

目录 一、强引用 二、软引用 三、弱引用 四、虚引用 一、强引用 强引用是在程序代码之中普遍存在的&#xff0c;类似于“Object obj new Object()”&#xff0c;obj变量引用Object这个对象&#xff0c;就叫做强引用。当内存空间不足&#xff0c;Java虚拟机宁愿抛出OutOfMe…...

MySQL--索引(2)

InnoDB 1.索引类型 主键索引(Primary Key) 数据表的主键列使用的就是主键索引。 一张数据表有只能有一个主键&#xff0c;并且主键不能为 null&#xff0c;不能重复。 在 mysql 的 InnoDB 的表中&#xff0c;当没有显示的指定表的主键时&#xff0c;InnoDB 会自动先检查表中是…...

JVM类加载机制详解

Java在运行期才对类进行加载到内存、连接、初始化过程。这使得Java应用具有极高的灵活性和拓展性&#xff0c;可以依赖运行期进行动态加载和动态连接。 主要加载哪些&#xff1f;Java中的数据类型分为基本数据类型和引用数据类型&#xff0c;基本数据类型由虚拟机预先定义&…...

【MATLAB实战】基于UNet的肺结节的检测

数据&#xff1a; 训练过程图 算法简介&#xff1a; UNet网络是分割任务中的一个经典模型,因其整体形状与"U"相似而得名,"U"形结构有助于捕获多尺度信息,并促进了特征的精确重建&#xff0c;该网络整体由编码器,解码器以及跳跃连接三部分组成。 编码器由…...

植物大战僵尸杂交版下载2026最新版更新v3.16及版本介绍分享(附下载链接)

作为一名长期沉迷植物大战僵尸改版的玩家&#xff0c;我近期完整体验了杂交版全新V3.16版本&#xff0c;从植物、关卡到平台适配&#xff0c;逐一实测验证。整体而言&#xff0c;这是一次诚意满满的更新&#xff0c;既有新鲜玩法的创新&#xff0c;又兼顾了不同玩家的需求&…...

从CAD到PCB的‘神同步’:利用Altium Designer图层映射,让你的丝印层(Top Overlay)自动对齐结构孔

从CAD到PCB的‘神同步’&#xff1a;Altium Designer图层映射实战指南 在消费电子和嵌入式设备开发中&#xff0c;PCB与外壳结构的精确对齐常常成为产品落地的最后一道障碍。想象一下&#xff1a;当结构工程师更新了智能手表外壳的3D模型&#xff0c;新增了螺丝孔位和屏幕开口&…...

感统训练的真实效果能持续多久?会不会反弹?

​直接给出结论&#xff1a;常见的感统训练维持周期短、反弹率高&#xff0c;多数孩子训练效果仅能保持3-6个月。一旦停止课程&#xff0c;大部分孩子会逐步退回原有状态。感统只能调整身体感官反应&#xff0c;无法从根源提升大脑自控力&#xff0c;治标不治本。感统训练适用人…...

从极坐标栅格到地面点云:一种基于坡度与邻域一致性的分割实践

1. 极坐标栅格构建&#xff1a;自动驾驶的"地面扫描仪" 想象你正在玩一款赛车游戏&#xff0c;车辆需要自动识别哪些是能开的平坦路面&#xff0c;哪些是必须绕开的障碍物。现实中自动驾驶车辆面临同样的挑战&#xff0c;而极坐标栅格就是它的"地面扫描仪"…...

初次使用Taotoken平台从注册到完成API调用的全程指引

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初次使用Taotoken平台从注册到完成API调用的全程指引 对于初次接触大模型API的开发者而言&#xff0c;从注册平台到成功发出第一个…...

Helm Git插件:实现K8s Chart的GitOps部署与CI/CD集成

1. 项目概述&#xff1a;为什么我们需要一个Helm Git插件&#xff1f;在Kubernetes生态中&#xff0c;Helm是当之无愧的“包管理器”&#xff0c;它通过Chart的概念&#xff0c;将复杂的K8s应用定义打包、版本化&#xff0c;极大地简化了部署流程。然而&#xff0c;标准的Helm工…...

Simplefolio构建优化终极指南:Tree Shaking与代码分割实战

Simplefolio构建优化终极指南&#xff1a;Tree Shaking与代码分割实战 【免费下载链接】simplefolio ⚡️ A minimal portfolio template for Developers 项目地址: https://gitcode.com/gh_mirrors/si/simplefolio Simplefolio是一个为开发者设计的极简个人作品集模板&…...

ThunderAI:开箱即用的桌面AI助手,聚合Ollama与多模型应用实战

1. 项目概述&#xff1a;一个开箱即用的AI助手桌面应用最近在折腾本地AI应用的时候&#xff0c;发现了一个挺有意思的项目&#xff0c;叫ThunderAI。这名字听着就挺带劲&#xff0c;像一道闪电&#xff0c;主打的就是一个“快”和“直接”。简单来说&#xff0c;它就是一个基于…...

深度重构黑苹果系统架构:OpenCore实战解析与性能优化

深度重构黑苹果系统架构&#xff1a;OpenCore实战解析与性能优化 【免费下载链接】Hackintosh 国光的黑苹果安装教程&#xff1a;手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 在传统PC硬件与macOS系统兼容性的技术探索中&#xf…...

综述篇 | 2015-2024,情绪识别(Emotion Recognition)技术演进与核心论文全景解读

1. 情绪识别技术演进全景图&#xff08;2015-2024&#xff09; 十年前&#xff0c;当研究人员试图通过摄像头分析人脸肌肉变化来判断情绪时&#xff0c;准确率还停留在60%左右。如今&#xff0c;结合多模态数据的情绪识别系统在特定场景下已突破90%准确率。这九年间的技术跃迁可…...