鸿蒙OS HSP 开发

预计阅读时间1 分 310 views

在大型HarmonyOS应用开发中,将应用拆分成多个模块(HAP)是一种常见的架构模式。 而应用内HSP(Harmony Shared Package) 为模块间代码和资源共享提供了高效、灵活的解决方案。

一、 应用内HSP

应用内HSP是专门为特定应用开发的动态共享包,只能被该应用内部的其他HAP/HSP使用。 它就像连接各个模块的桥梁,使得代码、资源和其他资产能够在模块间高效共享,避免重复打包,减小应用体积。

二、开发应用内HSP步骤

1、创建HSP模块:

  • 在DevEco Studio中,创建一个类型为 “shared” 的新模块。
  • 在模块的module.json5文件中,将"type"字段设置为"shared"
{
  "type": "shared"
}

2、导出HSP接口:

  • 使用export关键字导出需要共享的ts类和方法、ArkUI组件、native方法等。
  • 在入口文件index.ets中使用export再次声明所有对外暴露的接口。 入口文件路径在oh-package.json5"main"字段中配置。
// library/src/main/ets/index.ets
export { Log, add, minus } from './utils/test';
export { MyTitleBar } from './components/MyTitleBar';
export { nativeMulti } from './utils/nativeTest';

3、HSP资源使用:

  • 在HSP模块内部,可以使用$r/$rawfile访问自身的资源文件。
  • 如果使用相对路径引用资源,例如Image("common/example.png"),实际上访问的是HSP调用方(例如entry模块)下的对应资源文件。

    三、使用应用内HSP:简单三步

    1、配置依赖: 在使用HSP的模块(例如entry模块)的oh-package.json5文件中,添加对HSP的依赖。

    // entry/oh-package.json5
    "dependencies": {
        "library": "file:../library"  // 假设HSP模块名为library,且位于同一级目录
    }

    2、导入接口: 使用import关键字导入HSP中导出的接口。

    // entry/src/main/ets/pages/index.ets
    import { Log, add, MyTitleBar, nativeMulti } from "library"; 

    3、调用接口: 像使用本地代码一样调用HSP提供的接口。

      四、跨模块页面跳转

      应用内HSP支持跨模块页面路由跳转,让应用导航更加灵活。 使用router.pushUrl方法,并指定目标页面的url,即可实现跳转。 url的格式如下:

      '@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)'

      总结

      应用内HSP是HarmonyOS模块化开发的强大工具,它简化了模块间代码和资源共享,有效减小应用体积,提升开发效率。

      分享此文档

      鸿蒙OS HSP 开发

      或复制链接

      本页目录