HarmonyOS一次开发多端部署

268 阅读3分钟

HarmonyOS一次开发多端部署

如何理解“一多”

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

也就是一套代码适配多种设备终端(手机,平板,折叠屏手表等)

目标:支撑开发者快速高效的开发支持多种终端设备形态的应用

实现对不同设备兼容的同时,提供跨设备的流转、迁移和协同的分布式体验。

0000000000011111111.20240628204249.80952742383607939499524563960626:50001231000000:2800:E15410973F4C49A66683F0B4F4A5393551118E89D9A24577A50B060E19A4169E.jpg

实现“一多”需要解决的问题

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

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

    • 自适应布局-拉伸能力、均分能力、占比能力、缩放能力、延伸能力、隐藏能力、折行能力
    • 响应式布局--断点、媒体查询、栅格布局
    • 多态组件-同一个组件在不同类型的终端上进行差异化的展示
    • 交互归一不同类型的智能设备,用户可能有不同的交互方式,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层不可以横向调用。

image-20240701152130630

“一多部署模型”

“一多”有两种部署模型:

  • 部署模型A:把整个项目编译成一个hap包
  • 部署模型B:将不同的product编译成不同的hap包

这两种模式该怎么去选择:一般情况下,泛手机类(手机、折叠屏,平板)可以打成一个hap包,通过屏幕自适应去适配,不同泛类的设备(手机,穿戴设备、智慧屏)可以编译成多个hap包。