HarmonyOS 工程模块化问题?

关于项目的模块化有几个问题想咨询一下

1、假设我的项目只需要一个entry模块,这个entry中是否只有一个UIAbility组件就够了,多UIAbility组件是否只在任务视图中看到多个任务,或者需要同时开启多个窗口才需要使用?

2、对于各个业务模块、底层功能模块,在HAR和HSP的选择上有什么建议吗,二者的加载机制有什么区别呢?对启动耗时和包体大小影响的差异是什么样呢?

阅读 531
1 个回答

如果该entry模块没有在任务视图中看到多个任务或者同时开启多个窗口的需求,一个UIAbility就可以满足需求了。

参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/uiability-overview-V5

HAR是静态共享包,编译态复用。

  • 支持应用内共享,也可以发布后供其他应用使用。
  • 多包(HAP/HSP)引用相同的HAR时,会造成多包间代码和资源的重复拷贝,从而导致应用包膨大。
  • 不同HAP包引入同一个HAR包,无法实现数据的共享。

HSP是动态共享包,运行时复用。

  • 当前仅支持应用内共享。
  • 当多包(HAP/HSP)同时引用同一个共享包时,采用HSP替代HAR,可以避免HAR造成的多包间代码和资源的重复拷贝,从而减小应用包大小。
  • 同一进程,运行时可共享代码,相比har包能有效减少内存消耗,同时能实现数据共享(比如常用的单例模式)

使用建议如下:

  1. 二方库, 三方库场景:开发者开发的模块,需要暴露给其他应用使用 (公司内或者公司外) . 只能使用har。
  2. 单HAP场景:如果没有按需加载诉求,推荐使用单hap + har。如果有按需加载诉求,推荐使用hsp。hap (独有har) + 按需加载的hsp (独有的har) ==》公共hsp (封装公共的han)。
  3. 多HAP场景: 如果多hap没有共用的资源,推荐使用多hap + har。如果多hap有共用的资源,推荐使用hsp封装。hap1 (独有的har) + hap2 (独有的har) ==》公共hsp (封装公共的har)

参考地址:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-package-overview-V5

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进