HarmonyOS--三层架构设计

应用程序包基础

HAP

HAP(Harmony Ability Package)是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entry和feature。

entry:应用的主模块,作为应用的入口,提供了应用的基础功能。
feature:应用的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装。
应用程序包可以只包含一个基础的entry包,也可以包含一个基础的entry包和多个功能性的feature包。

HAR

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

如果在本地创建,相当于一个本地库,可以导出相应的资源,组件,类等,此外,也有远程库(即第三方库)。

该种模块用于多个模块共享ArkUI组件,资源等。

创建本地库并使用
创建HAR模块
点击项目,新建,Model,Static Library,进行本地库的命名

添加依赖
方法一:

打开终端,ohpm install …/library(本地库名称)

方法二:

手动添加依赖,在项目的oh-package.json5文件中设置依赖

“dependencies”: { “@ohos/library”: “file:…/library” }

打开终端,执行ohpm install

添加依赖后可以看到oh_modles目录下有添加的对应库

使用本地库
在HAR模块中进行编译文件,可能会遇到的问题:

无法导出对应的模块

解决方法:

看一下该库下面的Index文件,是否声明有错误,第一次使用的时候就是因为默认声明了,后来我改了那个默认的就无法导出来

这里有官方不同导出的内容有对应的引用格式,比如说UI组件,类等

不同内容引用格式

使用第三方库
直接打开终端使用命令即可

ohpm install @ohos/lottie

具体使用信息参考给的第三方库

HSP

动态共享包,其实和HAR功能一样,但是不同的是,它的存在可以优化HAR存在的问题

如下图所示:

Pasted image 20241009203820.png

如果多个HAP复用同个HAR会出现很多问题,而HSP可以优化这些问题

但是每个项目只有一个HSP

具体使用创建其实和HAR大差不差,模块类型选用share liburary,其他基本上一样

请添加图片描述

三层架构设计

三层架构设计工程如下

commons(公共能力层):用于存放公共基础能力集合(如工具库、公共配置等)。commons层可编译成一个或多个HAR包或HSP包,只可以被products和features依赖,不可以反向依赖。

features(基础特性层):用于存放基础特性集合(如应用中相对独立的各个功能的UI及业务逻辑实现等)。各个feature高内聚、低耦合、可定制,供产品灵活部署。不需要单独部署的feature通常编译为HAR包或HSP包,供products或其它feature使用。需要单独部署的feature通常编译为Feature类型的HAP包,和products下Entry类型的HAP包进行组合部署。features层可以横向调用及依赖common层,同时可以被products层不同设备形态的HAP所依赖,但是不能反向依赖products层。

products(产品定制层):用于针对不同设备形态进行功能和特性集成。products层各个子目录各自编译为一个Entry类型的HAP包,作为应用主入口。products层不可以横向调用。

在这里插入图片描述
工程目录最终如下图所示:

在这里插入图片描述

总结

DevEco Studio创建出的默认工程仅包含一个的entry类型的模块,如果直接使用平级目录进行模块管理,工程逻辑结构较混乱且模块间的依赖关系不够清晰,不利于多人开发和维护。三层架构设计清晰了项目各个层次的分工,明确了模块功能的划分,利于开发和维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值