文档管理中心

您当前浏览的3.1/4.0版本文档归档不再维护,推荐您使用最新的HarmonyOS NEXT版本文档。详细请参考文档维护策略变更

指南工具DevEco Studio使用指南应用/服务开发开发及引用共享包开发及引用动态共享包

开发及引用动态共享包

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

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

    收起
    自动换行
    深色代码主题
    复制
    1. {
    2. ...
    3. "dependencies": {
    4. "sharedlibrary": "file:../sharedlibrary"
    5. }
    6. }

    添加引用后,dependencies字段内的片段将出现报错:

  2. 将鼠标放置在报错处会出现提示,在提示框中点击Run 'ohpm install'

    HSP目录将映射到entry/feature的oh_modules目录下:

  3. 其他引用方法与引用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
  3. 单击Run > Run'模块名称'(如Run 'entry')或
  4. DevEco Studio会启动应用/服务的编译构建,完成后应用/服务即可运行在本地真机或模拟器上。

在 指南 中进行搜索
请输入您想要搜索的关键词