HarmonyOS一次开发多端部署三巨头之功能级一多开发和工程级一多开发

功能级一多开发与工程级一多开发

引言

一次开发多端部署

定义:一套代码工程,一次开发上架,多端按需部署

目标:支撑开发者快速高效的开发多终端设备上的应用

为了实现一多开发的定义与目标,我们需要解决三个问题

  • 页面如何适配:不同设备间的屏幕尺寸,色彩风格等存在差异。
  • 功能如何兼容:不同设备的系统能力有差异,如智能穿戴设备,是否具有定位能力、智慧屏是否具有摄像头等。
  • 工程如何组织:如何实现同一套代码,同时能部署到多种不同的设备上。

这篇文章介绍的是功能级一多开发和工程级一多开发,界面级一多开发请锁定:
HarmonyOS一次开发多端部署三巨头之界面级一多开发

功能级一多开发

SysCaps机制介绍

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

能力集

  • 系统能力集:操作系统中每一个相对独立的特性,如蓝牙,WIFI,NFC,摄像头等,都是系统能力之一。
  • 支持能力集:描述当前设备能够支持的那些功能。
  • 要求能力集:描述当前应用,具备哪些能力

通过设备支持能力集和应用要求能力集控制多设备应用的分发和安装

canlUse接口

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

typescript 复制代码
aboutToApper() {
    if(canIUse('SystemCapability.Communication.NFC.Core')) {
        controller.on('nfcStateChange', (err, nfcState)) => {
            this.message = 'nfcState' + nfcState
        })
    } else {
        this.message = 'This device does not support NFC.'
    }
}

工程级一多开发

三层架构规范

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

  • commons(公共能力层):用于存放公共基础能力集合(如公共配置等)。commons层可编译成一个或多个HAR包或HSP包,其只可以被product和features依赖,不可以反向依赖
  • features(基础特性层):用于存放相对独立的UI及逻辑实现等。各个feature高内聚、低耦合、可定制,供产品灵活部署。不需要单独部署的feature通常编译为HAR包或HSP包,供products或其它feature使用。需要单独部署的feature通常编译为Feature类型的HAP包,和products下Entry类型的HAP包进行组合部署。其可以横向调用及依赖common层,但不能反向依赖prduct层。
  • product(产品定制层):用于针对不同设备形态进行功能和特性集成,作为应用主入口。。products层各个子目录各自编译为一个Entry类型的HAP包,作为应用主入口。product层不可以横向调用。

录各自编译为一个Entry类型的HAP包,作为应用主入口。product层不可以横向调用。

相关推荐
DRXB25072017 分钟前
开源自由还是生态红利?LangChain 的灵活性与小艺开放平台的鸿蒙流量池,开发者该如何抉择?
langchain·开源·harmonyos
qizayaoshuap19 分钟前
HarmonyOS :底部导航 — 构建 Tab 导航栏的标准模式
华为·harmonyos
Yao80631 分钟前
MinIO自建对象存储,省OSS费用的完整方案
前端·后端
2501_9339232539 分钟前
设计网页的时候加载不出来怎么办?认识常见的状态码
前端·spring
only-lucky1 小时前
QML深入学习五(Controls模块)
前端·javascript·学习
程序员黑豆1 小时前
鸿蒙应用开发之路由:Router 页面路由使用教程
前端·harmonyos
gyx_这个杀手不太冷静1 小时前
Agent开发进阶指南(第 2 章):Agent 运行全流程拆解、上下文窗口、流式输出、记忆系统与 Function Call 实战
前端·架构·agent
anyup1 小时前
像这种问题千万别自己动手,否则你可太看不起 AI 了
前端·架构·trae
hunterandroid2 小时前
[鸿蒙从零到一] HarmonyOS Web 组件与 JSBridge 通信实战:从页面加载到安全协议
前端
xingren2 小时前
「拍摄器」UI 特效 - 在 Winform/WPF/WinUI3/Avalonia/Web 的实现
前端