HarmonyOS鸿蒙Next中关于应用架构的文件类型问题;feature类型的模块如何导入到entry模块中

HarmonyOS鸿蒙Next中关于应用架构的文件类型问题;feature类型的模块如何导入到entry模块中

  1. 谁能简单易懂的讲一下har、hsp的区别,以及hsp类型与feature ability类型的区别。在features层中,每个模块建议用feature类型还是hsp,还是说针对场景不同进行选择?

  2. feature模块之间的通信,以及feature类型模块与entry模块之间的通信建议通过什么实现(因为entry模块只能依赖har与hsp类型)。

12 回复

更多关于HarmonyOS鸿蒙Next中关于应用架构的文件类型问题;feature类型的模块如何导入到entry模块中的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


Feature Ability呢 ,Oh-package 只能依赖har和hsp,

为什么要用ability 你用说的是多HAP架构吧,我一直都用单HAP架构

是的,那我明白了,之前一直纠结特性模块用hap还是har/hsp,感谢,

如果你app size不到 可以使用har,如果你要size优先,可以考虑用hsp,并且hsp支持动态加载,也就是 你打包为app以后,上传应用商店,如果app大小100M, 动态hsp 60M,那么 用户看到应用商店页面是 40M,用户安装以后 也是40M,可以代码中动态进行 加载那60M的hsp

那这60M是从 哪里加载的,从40M的代码本身吗,

HSP分为静态和动态依赖两种,静态会随安装一起;如果你设置为动态依赖,则100M上传到商店,会自动分包,然后用户加载 就是从商店,作为更新包加载的,Stage模型应用程序包结构-应用程序包结构-应用程序包基础知识-开发基础知识-基础入门 - 华为HarmonyOS开发者 详见文档

学习了

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

在HarmonyOS Next中,feature类型模块(通常为hsp或har)需先在entry模块的oh-package.json5中添加依赖声明(如"@feature/xxx": "file:../feature")。然后在entry的module.json5dynamicImportsmoduleDependencies中注册feature模块名称。代码中使用import引用feature模块导出的接口即可。

在 HarmonyOS Next 应用架构中:

  • har(静态共享包)在编译期直接把代码和资源打进引用它的 HAP 中,无法独立更新,适合稳定、无需动态部署的公共库。
  • hsp(动态共享包)在运行时由系统按需加载,可独立升级,能被多个 HAP 共享,适合需动态分发、跨模块复用的代码与资源。
  • feature ability 类型模块本质是 Ability 类型的 feature 模块,具备独立的 ability,属于应用架构中的业务单元,不能作为 library 直接以依赖形式被 entry 引用(entry 只能依赖 har 与 hsp),需要通过路由或跨 ability 跳转进行通信。

选择建议:feature 层模块若需独立 ability 并支持按需下载/动态分发,使用 feature 类型模块;若仅为业务代码共享且被 entry 打包在一起,用 har;若代码需多个 HAP 共享且要独立升级,则用 hsp。

通信方式:feature 模块间、feature 与 entry 间建议通过 Navigation 路由 + 统一参数传递,或通过 startAbility 携带 want 参数,结合应用内事件或状态管理实现解耦通信,避免直接代码依赖。

回到顶部