当前位置: 首页 > news >正文

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

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

  • 引言
  • 功能级一多开发
    • SysCaps机制介绍
      • 能力集
      • canlUse接口
  • 工程级一多开发
    • 三层架构规范

引言

一次开发多端部署
定义:一套代码工程,一次开发上架,多端按需部署
目标:支撑开发者快速高效的开发多终端设备上的应用
为了实现一多开发的定义与目标,我们需要解决三个问题

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

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

功能级一多开发

SysCaps机制介绍

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

在这里插入图片描述

能力集

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

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

canlUse接口

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

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

http://www.lryc.cn/news/481956.html

相关文章:

  • STL常用遍历算法
  • 前端开发中常见的ES6技术细节分享一
  • 行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化
  • [High Speed Serial ] Xilinx
  • Unity学习笔记(3):场景绘制和叠层设置 Tilemap
  • 不吹不黑,客观理性深入讨论中国信创现状
  • NoSQL大数据存储技术测试(2)NoSQL数据库的基本原理
  • 「QT」几何数据类 之 QPoint 整型点类
  • 植物明星大乱斗5
  • 每日算法练习
  • 把握鸿蒙生态崛起机遇:开发者如何在全场景操作系统中脱颖而出
  • 字符串类型排序,通过枚举进行单个维度多个维度排序
  • figma的drop shadow x:0 y:4 blur:6 spread:0 如何写成css样式
  • 基于Matlab 疲劳驾驶检测
  • Linux内核.之 init文件,/init/main.c
  • CentOS系统中查看内网端口映射的多种方法
  • Mac中禁用系统更新
  • GoogLeNet-水果分类
  • 深度学习入门指南:一篇文章全解
  • java ssm 医院病房管理系统 医院管理 医疗病房信息管理 源码 jsp
  • 钩子函数的使用
  • 【Docker】自定义网络:实现容器之间通过域名相互通讯
  • 护理陪护系统|护理陪护软件|陪护软件
  • 苍穹外卖-账号被锁定怎么办?
  • webpack loader全解析,从入门到精通(10)
  • python机器人Agent编程——实现一个本地大模型和爬虫结合的手机号归属地天气查询Agent
  • 【动态规划】斐波那契数列模型总结
  • EasyUI弹出框行编辑,通过下拉框实现内容联动
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现word文件在线留痕
  • 使用亚马逊 S3 连接器为 PyTorch 和 MinIO 创建地图式数据集