前言
随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,可以在不同的硬件设备之间随意调用、互助共享,让用户享受无缝的全场景体验。而作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户群体。但如果一个应用需要在多个设备上提供同样的内容,则需要适配不同的屏幕尺寸和硬件,开发成本较高。HarmonyOS系统面向多终端提供了“一次开发,多端部署”(简称为“一多”)能力,让开发者可以基于一种设计,高效构建多端可运行的应用。
一、一多开发是什么?
简单来说,就是 一套代码 多端部署 可以在不同的设备上 例如手机 手表 平板 2in1等 呈现效果
二、一多开发解决的三个问题
1. 界面级一多
页面级一多 又分为两类 :
- 自适应布局:略微调整界面结构,自适应布局又有七种能力
2. 响应式布局 比较大的调整 适应不同的设备 响应式布局能力又分为三种 断点 媒体查询 栅格布局Grid
响应式布局能力 | 简介 |
---|---|
断点 | 将窗口宽度划分为不同的范围(即断点)监听窗口尺寸变化,当断点改变时同步调整页面布局 |
媒体查询 | 媒体查询支持监听窗口宽度、横竖屏、深浅色、设备类型等多种媒体特征,当媒体特征发生改变时同步调整页面布局。 |
栅格布局 | 栅格组件将其所在的区域划分为有规律的多列,通过调整不同断点下的栅格组件的参数以及其子组件占据的列数等,实现不同的布局效果。 |
应用场景
2. 功能级一多
功能开发的适配主要体现在需要适配不同范类的应用,比如既要适配手机和平板,也需要适配智能穿戴设备,如果是同泛类产品,系统能力一致,无需考虑多设备上应用功能开发的差异,我们的美寇商城需要适配的是手机和Pad,属于同泛类产品,无需考虑功能开发的差异。
以下是常见类型分类:
● 默认设备(一般为手机)、平板
● 车机、智慧屏
● 智能穿戴
2.1 系统能力
系统能力(即SystemCapability,缩写为SysCap)指操作系统中每一个相对独立的特性,如蓝牙,WIFI,NFC,摄像头等,都是系统能力之一。每个系统能力对应多个API,随着目标设备是否支持该系统能力共同存在或消失。
2.2. 如何适配系统能力
方法1:使用canUse接口判断设备是否支持某系统能力
if (canIUse("SystemCapability.Communication.NFC.Core")) {
console.log("该设备支持SystemCapability.Communication.NFC.Core")
} else {
console.log("该设备不支持SystemCapability.Communication.NFC.Core")
}
方法2:通过import动态导入,配合try/catch
import controller from '@ohos.nfc.controller'
try {
controller.enableNfc()
console.log("controller enableNfc success")
} catch (busiError) {
console.log("controller enableNfc busiError: " + busiError)
}
3. 工程级一多
就是采用华为官方推荐的三层架构
commons 公共能力层 存放工具库 公共配置等
features 基础特性层 存放本项目的一些UI及业务逻辑 方便以后代码复用
products 产品定制层 作为应用入口 集成不同设备的功能特性
就是把项目拆分成不同类型的模块 在通过模块之间的引用组合 最终实现应用功能
总结
本文介绍了“一次开发,多端部署”的定义、目标等,同时从UX设计、工程管理、页面开发、功能开发等角度,端到端的给出了指导,帮助开发者快速开发出适配多种类型设备的应用。