首页 > 其他分享 >OpenHarmony—开发及引用动态共享包

OpenHarmony—开发及引用动态共享包

时间:2024-02-02 15:12:23浏览次数:25  
标签:OpenHarmony 模块 Module HSP 开发 引用 应用 共享

对于企业大型应用开发,有部分公共的资源和代码,只能在开发态静态共享,并且打包到每个依赖的HAP里,这样导致包体积较大,且有重复多份公共资源和代码重复打包到应用中。

为了解决运行态状态无法共享,以及减少包体积,让多个HAP能够共享同一公共资源代码,DevEco Studio支持动态共享包HSP(Harmony Shared Package)。

应用内HSP指的是专门为某一应用开发的HSP,只能被该应用内部其他HAP/HSP使用,用于应用内部代码、资源的共享。 应用内HSP跟随其宿主应用的APP包一起发布,与该宿主应用具有相同的包名和生命周期。

当前暂不支持跨应用共享包。

使用约束

  • HSP及其使用方都必须是API 9及以上版本Stage模型。
  • HSP及其使用方都必须使用模块化编译模式。

开发动态共享包

创建HSP模块

1.通过如下两种方法,在工程中添加新的Module。

方法1:鼠标移到工程目录顶部,单击鼠标右键,选择New > Module,开始创建新的Module。方法2:选中工程目录中任意文件,然后在菜单栏选择File > New > Module,开始创建新的Module。

2.模板类型选择Shared Library,点击Next
在这里插入图片描述
3.在Configure New Module界面中,设置新添加的模块信息,设置完成后,单击Finish完成创建。

  • Module name:新增模块的名称,如设置为sharedlibrary。
  • Language:开发语言。
  • Device type:支持的设备类型。
  • Enable native:是否创建一个用于调用C++代码的模块。
    在这里插入图片描述
    创建完成后,会在工程目录中生成库模块及相关文件。在这里插入图片描述

编译HSP模块

参考应用内HSP开发指导开发完库模块后,选中模块名,然后通过DevEco Studio菜单栏的Build > Make Module ${libraryName}进行编译构建,生成HSP。在这里插入图片描述
打包HSP时,会同时默认打包出HAR,在模块下build目录下可以看到.har和.hsp。在这里插入图片描述

引用动态共享包

在使用方模块中引用HSP

在使用方entry/feature模块的oh-package.json5文件中添加HSP模块引用,以引用名为sharedlibrary的HSP为例:

{
  ...
  "dependencies": {
    "sharedlibrary": "file:../sharedlibrary"
  }
}

添加引用后,dependencies字段内的片段将出现报错:
在这里插入图片描述
2.将鼠标放置在报错处会出现提示,在提示框中点击Run 'ohpm install'。在这里插入图片描述
HSP目录将映射到entry/feature的oh_modules目录下:在这里插入图片描述
其他引用方法与引用HAR文件和资源一致。

说明
在HSP中,通过如$r(app.string.xxxx)的方式使用本模块resources目录下的资源。注意图片等资源需放置在resources/base下的目录。如果使用相对路径的方式,例如: 在HSP模块中使用Image("common/example.png"),实际上该Image组件访问的是HSP调用方(如entry)下的资源entry/src/main/ets/common/example.png。

运行引用HSP的使用方模块

1.连接本地真机或本地模拟器。

2.单击Run > Edit Configurations,选择Deploy Multi Hap标签页,勾选Deploy Multi Hap Packages,选择使用方模块(如entry)和HSP模块(如sharedlibrary),点击OK。
在这里插入图片描述
1.单击Run > Run'模块名称'(如Run 'entry')或点击播放。

2.DevEco Studio会启动应用/服务的编译构建,完成后应用/服务即可运行在本地真机或模拟器上。

要想成为一名合格的鸿蒙高级开发工程师,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术

为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《鸿蒙全栈技术 实战项目驱动式教学》的学习导图,从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:https://docs.qq.com/doc/DZXB5WmVIVHRwS0pY?u=c989a59502e643b797e0b256b6ac529b
在这里插入图片描述
除了上面整理的思维导图以外,这里还特别整理的一份《鸿蒙 (Harmony OS)开发学习手册》给大家进行参考学习:

一、入门必看

1.应用开发导读(ArkTS)

2.……在这里插入图片描述
二、HarmonyOS 概念

1.系统定义

2.技术架构

3.技术特性

4.系统安全

5........在这里插入图片描述
**三、如何快速入门?https://docs.qq.com/doc/DZXB5WmVIVHRwS0pY?u=c989a59502e643b797e0b256b6ac529b

1.基本概念

2.构建第一个ArkTS应用

3.构建第一个JS应用

4.……在这里插入图片描述
四、开发基础知识

1.用基础知识

2.配置文件

3.应用数据管理

4.应用安全管理

5.应用隐私保护

6.三方应用调用管控机制

7.资源分类与访问

8.学习ArkTS语言

9.……在这里插入图片描述
五、基于ArkTS 开发

1.Ability开发

2.UI开发

3.公共事件与通知

4.窗口管理

5.媒体

6.安全

7.网络与链接

8.电话服务

9.数据管理

10.后台任务(Background Task)管理

11.设备管理

12.设备使用信息统计

13.DFX

14.国际化开发

15.折叠屏系列

16.……在这里插入图片描述
更多了解更多鸿蒙开发的相关知识可以参考:https://docs.qq.com/doc/DZXB5WmVIVHRwS0pY?u=c989a59502e643b797e0b256b6ac529b

标签:OpenHarmony,模块,Module,HSP,开发,引用,应用,共享
From: https://www.cnblogs.com/11usd/p/18003199

相关文章

  • 2023 OpenHarmony年度运营报告
                                 ......
  • java面向对象基础语法之两个引用指向同一个对象内存
    一:概述前面已经说了单个对象的引用指向和两个对象的引用指向。下面来说一下两个对象引用指向同一个对象的内存图。二:具体说明<1>说明的具体代码实例代码publicclassStudent1{Stringname;intage;publicvoidstudy(){System.......
  • OpenHarmony—开发及引用静态共享包(API 9)
    HAR(HarmonyArchive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。接下来,将简单介绍库模块的工程结构,如下图所示:相关字段的描述......
  • OpenHarmony 定义扩展组件样式:@Extend 装饰器
    说明:从APIversion9开始,该装饰器支持在ArkTS卡片中使用。装饰器使用说明语法@Extend(UIComponentName)functionfunctionName{...}使用规则●和@Styles不同,@Extend仅支持定义在全局,不支持在组件内部定义。●和@Styles不同,@Extend支持封装指定的组件的私有属性......
  • 引用类型与值类型
    一、内存分配了解内存分配是计算机编程的基础。内存提供了存储数据和程序高效运行所需的所有命令的空间,程序本质上就是数据+指令,两者都需要分配内存空间。就好比菜板和菜刀是指令,蔬菜是数据,厨房就是计算机的内存,我们要进行“切菜”这个程序,厨具和蔬菜肯定都在厨房里面占用一定的空......
  • 百度网盘(百度云)SVIP超级会员共享账号每日更新(2024.02.01)
    一、百度网盘SVIP超级会员共享账号可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答。我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免了U盘的物理载体,直接在网上就实现文件传输。百度网盘SVIP会员可以让自己百度账......
  • 特殊的方法引用
    在java中,使用方法引用时,引用的方法和需要实现的方法参数不一致?!在我学习mybatis-plus时,多次运用lambda表达式,其中不免使用到方法引用!其中有种特殊方法引用我就很是不解,就是基础知识不够牢靠导致,我也亡羊补牢立即回去取经,特此记随写一篇!示例:@GetMapping("test")publicR......
  • 【c++】引用的用法
    一、引用的介绍引用还有一个别的叫法:取别名通俗点说:每个人都有一个大名,可能也有一个小名,但是都是指一个人,引用也就是一个变量的别名。1.引用的概念:引用不是定义一个别的变量,而是给一个变量取别名注:引用变量编译器不会为这个变量单独开辟一块内存,它和它引用的变量使用同一块内存2.引......
  • 共享内存 ---进程间通讯 解决死锁和数据损坏的问题 同时可以解决数据不同步的问题
    usingSystem;usingSystem.IO.MemoryMappedFiles;usingSystem.Text;usingSystem.Threading;classWriteProcess{staticvoidMain(){using(MemoryMappedFilemmf=MemoryMappedFile.CreateOrOpen("my_shared_memory",1024)){......
  • 调试OpenHarmony应用/服务
    调试流程DevEcoStudio提供了丰富的OpenHarmony应用/服务调试能力,帮助开发者更方便、高效的调试应用/服务。OpenHarmony应用/服务调试支持使用真机设备调试。使用真机设备进行调试前,需要对HAP进行签名后进行调试。详细的调试流程如下图所示:配置签名信息DevEcoStudio为开发者......