HarmonyOS一次开发多端部署
如何理解“一多”
定义:一套代码工程,一次开发上架,多端按需部署。
也就是一套代码适配多种设备终端(手机,平板,折叠屏手表等)
目标:支撑开发者快速高效的开发支持多种终端设备形态的应用
实现对不同设备兼容的同时,提供跨设备的流转、迁移和协同的分布式体验。
实现“一多”需要解决的问题
为了实现“一多”的目标,需要解决几个基础问题:
-
不同设备间的屏幕尺寸、色彩风格等存在差异,页面如何适配。
- 自适应布局-拉伸能力、均分能力、占比能力、缩放能力、延伸能力、隐藏能力、折行能力
- 响应式布局--断点、媒体查询、栅格布局
- 多态组件-同一个组件在不同类型的终端上进行差异化的展示
- 交互归一不同类型的智能设备,用户可能有不同的交互方式,arkTs统一了各种交互方式的API,即实现了交互归一
-
不同设备的系统能力有差异,如智能穿戴设备是否具备定位能力、智慧屏是否具备摄像头等,功能如何兼容
动态逻辑判断某个设备是否支持某种系统能力--用canIUse判断该设备是否支持某个特定的syscap 开发者可通过import的方式将模块导入,若当前设备不支持该模块,import的结果为undefined,开发者在使用其API时,需要判断其是否存在 -
代码工程如何组织管理
-
采用三层架构规范
-
common(公共能力层):用于存放公共基础能力集合(如工具库、公共配置等)。
common层可编译成一个或多个HAR包或HSP包(HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝;而HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份),其只可以被products和features依赖,不可以反向依赖。
-
features(基础特性层):用于存放基础特性集合(如应用中相对独立的各个功能的UI及业务逻辑实现等)。
各个feature高内聚、低耦合、可定制,供产品灵活部署。不需要单独部署的feature通常编译为HAR包或HSP包,供products或其它feature使用,但是不能反向依赖products层。需要单独部署的feature通常编译为Feature类型的HAP包,和products下Entry类型的HAP包进行组合部署。features层可以横向调用及依赖common层。
-
products(产品定制层):用于针对不同设备形态进行功能和特性集成。
products层各个子目录各自编译为一个Entry类型的HAP包,作为应用主入口。products层不可以横向调用。
-
-
“一多部署模型”
“一多”有两种部署模型:
- 部署模型A:把整个项目编译成一个hap包
- 部署模型B:将不同的product编译成不同的hap包
这两种模式该怎么去选择:一般情况下,泛手机类(手机、折叠屏,平板)可以打成一个hap包,通过屏幕自适应去适配,不同泛类的设备(手机,穿戴设备、智慧屏)可以编译成多个hap包。