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

相关推荐
程序员黄同学41 分钟前
Python 中如何创建多行字符串?
前端·python
anyup_前端梦工厂1 小时前
uni-app 认识条件编译,了解多端部署
前端·vue.js·uni-app
Fetters042 小时前
一篇快速上手 Axios,一个基于 Promise 的网络请求库(涉及原理实现)
前端·ajax·axios·promise
蒟蒻的贤2 小时前
vue11.22
开发语言·前端·javascript
爱上语文2 小时前
Axios案例练习
前端·javascript·css·html
河畔一角2 小时前
升级react@18.3.1后,把我坑惨了
前端·react.js·低代码
天天进步20152 小时前
Vue 3 + Vite:构建闪电般快速的开发环境
前端·javascript·vue.js
Dragon Wu2 小时前
前端框架 Redux tool RTK 总结
前端·javascript·前端框架
yqcoder2 小时前
reactflow 中 useStoreApi 模块作用
前端·javascript
williamdsy2 小时前
【vue】关于异步函数使用不当导致的template内容完全无法渲染的问题
前端·javascript·vue.js