对于企业大型应用开发,有部分公共的资源和代码,只能在开发态静态共享,并且打包到每个依赖的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