鸿蒙OS HSP 开发
在大型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模块化开发的强大工具,它简化了模块间代码和资源共享,有效减小应用体积,提升开发效率。