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层不可以横向调用。

相关推荐
林涧泣6 分钟前
【Uniapp-Vue3】uni-icons的安装和使用
前端·vue.js·uni-app
特立独行的猫a10 分钟前
HarmonyOS NEXT边学边玩:从零实现一个影视App(七、今日票房页面的设计与实现)
华为·harmonyos
拉一次撑死狗18 分钟前
Vue基础(2)
前端·javascript·vue.js
热情仔1 小时前
mock可视化&生成前端代码
前端
m0_748246351 小时前
SpringBoot返回文件让前端下载的几种方式
前端·spring boot·后端
wjs04061 小时前
用css实现一个类似于elementUI中Loading组件有缺口的加载圆环
前端·css·elementui·css实现loading圆环
爱趣五科技1 小时前
无界云剪音频教程:提升视频质感
前端·音视频
计算机-秋大田2 小时前
基于微信小程序的校园失物招领系统设计与实现(LW+源码+讲解)
java·前端·后端·微信小程序·小程序·课程设计
林涧泣2 小时前
【Uniapp-Vue3】下拉刷新
前端·vue.js·uni-app
浪遏2 小时前
Langchain.js | Memory | LLM 也有记忆😋😋😋
前端·llm·aigc