HarmonyOS第一课总结:一次开发,多端部署

定义和目标

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

关键问题

为了实现“一多”的目标,需要解决如下三个基础问题:

问题1:页面如何适配

不同设备间的屏幕尺寸、色彩风格等存在差异,页面如何适配。

问题2:功能如何兼容

不同设备的系统能力有差异,如智能穿戴设备是否具备定位能力、智慧屏是否具备摄像头等,功能如何兼容。

问题3:工程如何组织

如何实现一套代码同时能部署到多种不同设备上,代码工程如何组织。

关键问题的解决思路

界面级一多

布局能力

自适应布局

根据容器的大小自动变化布局,一共有7种自适应布局能力
拉伸
均分
占比
缩放
延伸
在这里插入图片描述
折行

响应式布局

根据某个特征触发布局的变化,基于断点、媒体查询、栅格等能力
断点
将窗口宽度划分为不同的范围(即断点),监听窗口尺寸变化,当断点改变时同步调整页面布局。

媒体查询
媒体查询支持监听窗口宽度、横竖屏、深浅色、设备类型等多种媒体特征,当媒体特征发生改变时同步调整页面布局。

栅格布局
栅格组件将其所在的区域划分为有规律的多列,通过调整不同断点下的栅格组件的参数以及其子组件占据的列数等,实现不同的布局效果。

资源使用

自定义资源
在这里插入图片描述

交互归一

在这里插入图片描述

功能级一多

系统能力

HarmonyOS使用SysCap机制(即SystemCapability),简单来说,就是所有设备开发的SDK是一样的。
那么当系统能力和应用要求能力冲突怎么办呢?
在这里插入图片描述
以下是解决方案:

系统能力(即SystemCapability,缩写为SysCap)指操作系统中每一个相对独立的特性,如蓝牙,WIFI,NFC,摄像头等,都是系统能力之一。每个系统能力对应多个API
在这里插入图片描述

注意:
只有当应用要求能力集是设备支持能力集的子集的时候,应用才可以在该设备上分发、安装和运行。

使用前需要判断设备是否支持该系统能力:
方法1:HarmonyOS定义了API canIUse帮助开发者来判断该设备是否支持某个特定的syscap

if (canIUse("SystemCapability.Communication.NFC.Core")) {
   console.log("该设备支持SystemCapability.Communication.NFC.Core");
} else {
    console.log("该设备不支持SystemCapability.Communication.NFC.Core");
}

方法2:开发者可通过import的方式将模块导入,若当前设备不支持该模块,import的结果为undefined,开发者在使用其API时,需要判断其是否存在。

import controller from '@kit.ConnectivityKit';
   try {
    controller.enableNfc();
    console.log("controller enableNfc success");
} catch (busiError) {
    console.log("controller enableNfc busiError: " + busiError);
}

动态逻辑判断

配置联想能力集和要求能力集

工程级一多

工程结构

三层架构规范
common(公共能力层):用于存放公共基础能力集合(如工具库、公共配置等)。
common层不可分割,需编译成一个HAR包,其只可以被products和features依赖,不可以反向依赖。

features(基础特性层):用于存放基础特性集合(如应用中相对独立的各个功能的UI及业务逻辑实现等)。
各个feature高内聚、低耦合、可定制,供产品灵活部署。不需要单独部署的feature通常编译为HAR包,供products或其它feature使用。需要单独部署的feature通常编译为Feature类型的HAP包,和products下Entry类型的HAP包进行组合部署。features层可以横向调用及依赖common层,同时可以被products层不同设备形态的HAP所依赖,但是不能反向依赖products层。

products(产品定制层):用于针对不同设备形态进行功能和特性集成。
products层各个子目录各自编译为一个Entry类型的HAP包,作为应用主入口。products层不可以横向调用。
在这里插入图片描述

在这里插入图片描述

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值