HarmonyOS 鸿蒙Next应用开发基础架构搭建-模块设计

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next应用开发基础架构搭建-模块设计
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

关于HarmonyOS 鸿蒙Next应用开发基础架构搭建-模块设计的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

1 回复

HarmonyOS NEXT应用开发基础架构搭建-设计理念和目录结构

HarmonyOS NEXT应用开发基础架构搭建-模块设计

HarmonyOS NEXT应用开发基础架构搭建-路由管理

HarmonyOS NEXT应用开发基础架构搭建-路由页面权限控制

HarmonyOS NEXT应用开发基础架构搭建-多端布局之自适应布局

HarmonyOS NEXT应用开发基础架构搭建-多端布局之响应式布局

模块化设计理是一种在多个领域广泛应用的设计思想,特别是在工程、软件开发、产品设计和建筑设计中。这一理念的核心是将复杂系统分解为多个相互独立、功能明确的模块,每个模块都可以单独设计、开发、测试和维护,最后再将这些模块组合起来形成一个完整系统题更容易被理解和解决。

在软件开发中,模块化设计通常涉及到定义清晰的接口(APIs)来规范模块之间的交互,确保模块间的松耦合。模块化设计强调了设计的通用性、灵活性和可持续性,是现代设计和工程实践中不可或缺的一部分。

鸿蒙Next中使用Stage模型应用程序包结构,分为开发态包结构、编译态包结构、发布态包结构

开发态包结构

在DevEco Studio上创建一个工程,可以创建多个不同类型的Module。

0000000000011111111.20240612120859.62021799427562958643064772527028.png

编译态包结构

不同类型的Module编译后会生成对应的HAP、HAR、HSP等文件。

0000000000011111111.20240612120900.13447796664770007106737750743093.png

发布态包结构

每个应用中至少包含一个.hap文件,可能包含若干个.hsp文件、也可能不含,一个应用中的所有.hap与.hsp文件合在一起称为Bundle,其对应的bundleName是应用的唯一标识。当应用发布上架到应用市场时,需要将Bundle打包为一个.app后缀的文件用于上架,这个.app文件称为App Pack(Application Package),与此同时,DevEco Studio工具自动会生成一个pack.info文件。pack.info文件描述了App Pack中每个HAP和HSP的属性,包含APP中的bundleName和versionCode信息、以及Module中的name、type和abilities等信息。

0000000000011111111.20240612120900.92619347912569051177781997839797.png

模块的选择

结合业务本身的性能和功能,根据实际的业务考虑中有两大模块:

  1. 共享模块:某个功能模块(业务模块或者能力模块)需要在多个应用之间共享其代码逻辑和资源。
  2. 按需加载模块:某个功能模块,使用时由用户决定安装时机,动态从应用市场下载安装使用。

这里就需要了解HAR和HSP。

HAR:Harmony Archive是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。

HAR的使用场景

  • 作为二方库,发布到OHPM私仓,供公司内部其他应用使用。
  • 作为三方库,发布到OHPM中心仓,供其他应用使用。

HSP:Harmony Shared Package是动态共享包,可以包含代码、C++库、资源和配置文件,通过HSP可以实现代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有相同的包名和生命周期。

HSP的使用场景

  • 多个HAP/HSP共用的代码和资源放在同一个HSP中,可以提高代码、资源的可重用性和可维护性,同时编译打包时也只保留一份HSP代码和资源,能够有效控制应用包大小。

  • HSP在运行时按需加载,有助于提升应用性能。

  • 同一个组织内部的多个应用之间,可以使用集成态HSP实现代码和资源的共享。

那么在具体业务中该如何选择呢?

我们以单HAP工程为例:

  1. 如果不包含按需加载模块,也就是不需要按需加载, 而且只有一个Entry类型的HAP工程,可以全部使用HAR进行模块设计。

  2. 如果包含按需加载模块,需要采用HSP作为按需加载组件模块。由于HSP是动态共享库,其安装和加载均会有一些性能损失,所以过多的HSP可能会影响安装效率和App启动性能。需要在应用大小和性能直接做平衡,酌情考虑模块是否按需加载。是否必须使用HSP。例如,应用中有一个满意度调查表,而这个调查表不是在应用第一次加载时必须使用的,可以使用HSP模块进行开发。

例如以下应用:

0000000000028230179.20240614090612.53586399152459539794076675150514.png

公共模块使用har

0000000000028230179.20240614090820.95230372586755169753306422282474.png

业务功能模块使用har

cke_2727.png

cke_11001.png

调查表模块使用HSP

HarmonyOS NEXT应用开发基础架构搭建-设计理念和目录结构

HarmonyOS NEXT应用开发基础架构搭建-模块设计

HarmonyOS NEXT应用开发基础架构搭建-路由管理

HarmonyOS NEXT应用开发基础架构搭建-路由页面权限控制

HarmonyOS NEXT应用开发基础架构搭建-多端布局之自适应布局

HarmonyOS NEXT应用开发基础架构搭建-多端布局之响应式布局

回到顶部