【HarmonyOS学习日志(10)】一次开发,多端部署之功能级一多开发,工程级一多开发

embedded/2024/11/29 8:58:34/

功能级一多开发

SysCap机制介绍

HarmonyOS使用SysCap机制(即SystemCapability),可以帮助开发者仅关注设备的系统能力,而不用考虑成百上千种具体的设备类型。

在这里插入图片描述

在过去,开发不同设备上的应用就用不同设备的SDK进行开发,这些SDK都是独立存在的。在这种情况下进行多设备的开发的时候就要进行很多的适配。

HarmonyOS给开发者提供了一个统一的HarmonyOS SDK来进行多设备开发。

能力集

**系统能力集:**操作系统中每一个相对独立的特性,如蓝牙,WIFI,NFC,摄像头等,都是系统能力之一。

**支持能力集:**描述当前设备能够支持哪些功能。

**要求能力集:**描述当前应用,具有哪些能力。

在这里插入图片描述

有了这样的能力集,我们通过设备支持能力集和应用要求能力集来控制多设备应用的分发和安装。

在这里插入图片描述

如图,应用a有蓝牙,设备AB都有蓝牙,那么就可以将应用a安装到设备AB中

应用b多了一个NFC功能,那么它就不能安装到设备A中。

如果一定要让应用b安装到设备A中呢?

我们可以使用canIUse接口来实现。

canIUse接口

在编码阶段,开发者可以通过canIUse接口,判断目标设备是否支持某系统能力,进而执行不同的业务逻辑。通常当设备不支持某种能力时,运行到这部分代码后,给出友好弹窗,避免应用crush崩溃。

aboutToAppear() {if(canIUse('SystemCapability.Communication.NFC.Core')) {controller.on('nfcStateChange',(err,nfcState) => {this.message = 'nfcState: ' + nfcState})}else {this.message = 'This device does not support NFC.'}
}

在这段代码中,我们使用canIUseNFC这个能力进行判断,代码在设备A上进行执行时,就会给用户弹出一个友好的弹窗,来提示用户该设备不支持NFC功能。在设备B上执行则功能正常运行。

工程级一多开发

三层架构规范

推荐在应用开发过程中使用如下的”三层工程结构“,以方便代码复用及提升开发效率。

  • **common(公共能力层):**用于存放公共基础能力集合(如公共配置等)。其只可以被product和features依赖,不可以反向依赖。
  • **features(基础特性层):**用于存放相对独立的UI及逻辑实现等。其可以横向调用及依赖common层,但不能反向依赖product层。
  • **product(产品定制层):**用于针对不同设备形态进行功能和特性集成,作为应用主入口,product层不可以横向调用。
/applicationcommon             //公共能力层features           //基础特性层feature1       //子功能feature2       //子功能2feature3...product            //产品定制层werable        //智能穿戴泛类目录default        //默认设备泛类目录...

在之前学习过的内容中也提到了三层工程结构。当某一层级需要调用其他层级的模块时需要在module.json文件中dependencies部分中填写对需要模块的依赖,方便后续使用。


http://www.ppmy.cn/embedded/141416.html

相关文章

深度学习基本单元结构与输入输出维度解析

深度学习基本单元结构与输入输出维度解析 在深度学习领域,模型的设计和结构是理解其性能和应用的关键。本文将介绍深度学习中的基本单元结构,包括卷积神经网络(CNN)、反卷积(转置卷积)、循环神经网络&…

泷羽sec-linux进阶

基础之linux进阶 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽…

【YOLO系列复现】二、基于YOLOv6的目标检测:YOLOv6训练自己的数据集(史诗级详细教程)

官方模型:YOLOv6/README_cn.md at main meituan/YOLOv6 目录 1、模型和环境准备 1.1 模型下载 1.2 依赖环境安装 1.3 权重文件下载 1.4 环境测试 2、配置文件和数据集准备 2.1 准备数据集 2.2 配置文件准备 2.3 BUG修改 3、模型训练 3.1 模型训练 3.2 …

IDEA 2024 Maven 设置为全局本地仓库,避免新建项目重新配置maven

使用idea创建Java项目时每次都要重新配置Maven,非常麻烦。其实IDEA可以配置全局Maven。方法如下: 1.关闭所有项目进入初始页面 2.选择所有配置 3.设置为自己的路径

网络安全方面的专业词汇大全[荐]

Access Control List(ACL) 访问控制列表 access token 访问令牌 account lockout 帐号封锁 account policies 记帐策略 accounts 帐号 adapter 适配器 adaptive speed leveling 自适应速率等级调整 Address Resolution Protocol(ARP) 地址解析协议 Admin…

go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。 carbon 目前已捐赠给 dromara 开源组织,已被 awesome-go 收录&am…

分布式MQTT代理中使用布隆过滤器管理通配符主题

论文标题:Wildcard Topic Management using Bloom Filter in Distributed MQTT Brokers 中文标题:分布式MQTT代理中使用布隆过滤器管理通配符主题 作者信息: Ryohei Banno,Hitotsubashi University, Graduate School of Social…

将自定义 AWS S3 快照存储库连接到 Elastic Cloud

作者:来自 Elastic Annie Hansen, Stef Nestor 在本博客中,我们将介绍如何通过 Elasticsearch 的快照将我们已提交的集群数据备份到 AWS S3 存储桶中。在 Elastic Cloud(企业版)中,Elastic 在其 found-snapshots 存储…