HarmonyOS"一次开发,多端部署"优秀实践——玩机技巧,码上起航_鸿蒙应用开发一套代码多端适配-程序员宅基地

随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间按需调用、互助共享,让用户享受无缝的全场景体验。作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户群体。一个应用要在多类设备上提供统一的内容,需要适配不同的屏幕尺寸和硬件,开发成本较高。"一次开发,多端部署"(后文中简称为"一多")的应用开发理念,可以让开发者基于统一的设计,在多类设备上,高效构建可运行的应用。在2023HDC大会上,华为展示了其自研应用"玩机技巧"基于这一理念的优秀实践。

玩机技巧作为华为终端用户常用的应用,通过"一多",部署在手机、折叠屏、平板等多设备上,不仅获得了体验提升,开发代码量也下降了约40%。下文,我们将从架构设计、UI设计、交互设计和上架4个层面对玩机技巧应用的"一多"开发进行解读。

image.png

通过"一多",玩机技巧应用部署在不同设备上

一、三层架构分层设计

玩机技巧通过在一个工程中采用三层架构的分层设计,获得了能够支持多种设备的基础能力,适配差异化和代码共享也达到最大平衡。

玩机技巧开发将应用拆分成公共能力层(Common)、基础特性层(Feature)、产品定制层(Product)三层工程结构,支持一套代码工程一次开发上架,即可多端按需部署。

公共能力层支持网络框架、工具类、数据管理等能力。

特性层抽象出可复用的高内聚、低耦合的基础特性集,如富媒体浏览、搜索。

在产品定制层,针对多设备存在差异的特性集成UI、资源和配置,如多窗口、分栏体验,与应用基座解耦等多种因素。通过自适应布局、响应式控件、交互归一等系统OS能力,以及IDE工程能力,将应用工程归一,最大化复用代码,提升设计和开发效率,并兼顾多设备的整体用户体验。支撑应用工程归一、最大化复用代码,提升了设计和开发效率,兼顾了多设备的整体用户体验。

image.png

玩机技巧应用的三层架构分层设计

 

二、多端设计UI自适应

不同设备屏幕尺寸、分辨率等存在差异。HarmonyOS对屏幕进行逻辑抽象,包括尺寸和物理像素,并通过方舟开发框架(简称ArkUI)提供丰富的自适应、响应式的布局,方便开发者进行不同屏幕的界面适配。同时,HarmonyOS将人因设计、多端设计UI自适应等经验,都固化到相关设计指南和ArkUI控件中,让应用开发者在设计阶段就可以考虑多端的差异化和一致性。

在玩机技巧的设计开发中,多设备的体验在一致性与差异性中取得良好的平衡。首先,玩机技巧界面设计和交互方式在手机和2in1设备上尽量保持一致,首页采用了统一的信息架构、界面布局、系统控件,减少用户学习成本。其次,2in1设备在屏幕尺寸、人群场景、操控方式和功能范围上兼顾一定的差异化设计,满足了开发者个性化的诉求。

 

灵活布局

多端设计UI自适应,在同一个栅格模式下切换窗口大小, 玩机技巧能够随窗口大小的变化而自动适应界面上的所有元素,从而保证动态界面的美观。当界面窗口变化到一定程度时(断点),比如从2in1模式拖动窗口变小到手机窗口大小时(从2in1模式切换成手机模式),界面需要响应式变化布局,从而保证应用在不同窗口大小下的展示美观。

 

栅格响应式能力

组件作为应用的基础组成部分,在视觉、交互、动效等表现形式上需针对不同设备进行必要的调整,达到最佳体验。在玩机技巧中使用一多能力,同一个组件标题栏可实现在手机和2in1的不同样式。

image.png

同一个组件标题栏在手机和2in1的不同样式

视觉风格

为了保证各组件风格样式一致,玩机技巧使用HarmonyOS统一定义的视觉样式系统资源,即分层参数配置(比如色彩、字号、圆角、间距等)。

 

三、交互事件归一

对于不同类型的终端设备,用户可能有不同的交互方式,如通过触摸屏、鼠标、触控板等。不同输入设备的相同意图的输入指令,交互归一提供给开发者统一的API。玩机技巧应用一个hap可以安装在不同设备中,不需要针对不同设备处理交互,极大的精简了开发难度和开发代码量。

 

四、一次上架按需部署

一次上架后,剩下的工作交给AppGallery Connect,开发者可以按需部署到不同终端上。

image.png

一次上架按需部署逻辑图

玩机技巧在开发态,通过业务解耦,把不同的业务拆分为多个模块。在部署态,可以将一个或多个模块自由组合,打包成一个App Pack统一上架。在分发运行态,每个模块都可以单独分发满足用户单一使用场景,也可以多个模块组合分发满足用户更加复杂的使用场景。

开发者可以在以下两种模式中选择,进行生态应用、元服务的打包和上架。

image.png

通过"一多"能力进行打包、上架的两种模式

如上为玩机技巧在"一多"特性的实践经验,希望为开发者提供参考,欢迎更多应用开发者了解并使用"一次开发,多端部署"能力。

 

点击进入华为官网,解锁更多精彩内容 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/csdndevpress0028/article/details/133939788

智能推荐

利用Docker建立服务器和docker容器的监视系统-程序员宅基地

文章浏览阅读112次。为什么80%的码农都做不了架构师?>>> ...

Linux进程间通信——有名管道 FIFO 详解_有名管道的fifo怎么理解-程序员宅基地

文章浏览阅读788次,点赞3次,收藏2次。详细介绍了FIFO相关的关键概念、FIFO的创建、FIFO的打开规则、FIFO的读写规则,并对打开规则及读写规则进行了实例程序验证。_有名管道的fifo怎么理解

MyBatis中resultType和resultMap的区别-程序员宅基地

文章浏览阅读664次,点赞2次,收藏15次。[size=medium][align=left]MyBatis中关于resultType和resultMap的区别共同:MyBatis中在查询进行select映射的时候,返回类型为resultType、resultMap区别:1.resultType是直接表示返回类型的(对应着我们的model对象中的实体)2.resultMap则是对外部ResultMap的引用(提前定义..._mabaits resulttype实体类中5个字段

lol战绩查询接口_如何在LOL中正确的抓出内鬼-程序员宅基地

文章浏览阅读6.1k次。原本假期计划是打两个星期游戏再随便折腾点好玩的.但可惜,假期余额不断充值到账,游戏也给我打腻了.于是顺着游戏里小伙伴的撕逼开始了抓内鬼之旅,让?来看看到底是谁让我上不了王者:D.爬数据最初打算是使用wegame的查询召唤师接口,但是没找到web端且只记录半年的数据,不方便抓包(懒得用wireshark分析).然后去翻翻有没有现成的轮子,看到掌盟上已经有人做过类似的工作,还真有.https..._lol战绩接口

platform基础介绍_platform详解-程序员宅基地

文章浏览阅读4.2k次,点赞5次,收藏23次。(1)什么是platformpaltform是一种虚拟的总线,用于管理外设资源内存资源中断资源。在硬件上有USB-BUS总线,PCI-BUS总线,这是在物理设备上实际存在的总线。USB-BUS管理USB设备,PCI总线管理PCI设备。但是在实际中,一些设备不属于这些总线,一些SOC上面的控制器或者设备。使用platform统一管理这些设备。platform的一个优点就是将驱..._platform详解

【计算机算法】回溯——子集和问题、旅行商问题_旅行商问题测试数据-程序员宅基地

文章浏览阅读319次。求集合中满足一个值的子集和测试数据:43113 24 11 7结果:{13,11,7}{24,7}#include<iostream>using namespace std;int *x,*y;int size,sum;void output(){ int count = 0;//计算子集中的个数,这个只是用来控制是否输出逗号的情况 int tempsum = 0; for(int i = 1;i <= size;i++){ if(y[i] !_旅行商问题测试数据

随便推点

数据链路层简介-程序员宅基地

文章浏览阅读7.2k次,点赞12次,收藏32次。数据链路的基本概念、主要功能_数据链路层

程序员人生:技术人员的职业发展规划_程序员个人发展目标-程序员宅基地

文章浏览阅读1.1k次。以下内容转载自https://blog.csdn.net/universsky2015/article/details/108846699技术人员的职业发展规划思考之前有一篇美团公众号的文章《工作中如何做好技术积累》。近期也在给团队同学做年度绩效沟通,在沟通的时候大家也探讨了职业发展规划。有些同学表示,希望后续能进一步在技术领域(或管理方向)进一步积累;有的同学也表示,希望在新的一年,能具有更好的技术影响力,自己能做一些技术决定,去影响其他人,这样自己会很有成就感。不过,我也挑战问了一些问题:._程序员个人发展目标

pymysql体温管理项目_spark 每天测量一次体温,数据库判断-程序员宅基地

文章浏览阅读501次。体温管理项目目标1.根据页面设计系统功能。2.设计项目数据库。3.代码实现。项目介绍登记学生每天提问信息,发现并记录异常情况!1.首页: 生成每个学生的当天体温名单,按照日期查询当天体温情况2.体温状态修改页面:实现修改某人的体温状态(1:正常,2.体温异常,3.未登记)3.异常信息登记页面:根据名字修改各种信息4.某天体温记录统计:要求:完成统计功能统计:体温正常的有多少人,异常的有多少人!扩展:统计本周/7天内/某个时间段内:某人异常体温次数。项目功_spark 每天测量一次体温,数据库判断

SpringCloud-SpringBoot读取Nacos上的配置文件_springboot读取nacos配置-程序员宅基地

文章浏览阅读2.2k次,点赞22次,收藏8次。在 Spring Boot 应用程序中,可以使用 Spring Cloud Nacos 来实现从 Nacos 服务注册中心和配置中心读取配置信息。​ 注解时,需要确保属性名与配置文件中的键名一致,Spring Boot 会自动根据前缀匹配来绑定配置项。​ 注解中的 value 值指定了要绑定的配置文件的前缀,可以直接读取到该配置文件中的相关属性值。如果想要在配置发生变化时动态刷新配置,可以在需要动态更新的 Bean 类上添加。​ 来触发配置的刷新,以便及时获取最新的配置信息。​,并添加相应的键值对。_springboot读取nacos配置

三年级教师计算机教学计划,三年级信息技术教学计划-程序员宅基地

文章浏览阅读110次。2018---2019学年度第一学期三年级信息技术教学计划一、学生分析经过三年级上学期的信息知识的学习,学生们积累了初步的经验。这个阶段的学生都是接触电脑课不久,电的操作还不是很熟练。但是学生对电脑课的兴趣比较浓,热情比较高。所以,老师要抓住这点优势,发扬上个学期总结的一些比较好的经验,把精力放在提高自己的教学方法和教学技巧上让学生学得开心,寓教于乐。二、教材分析本册从内容上来分可分为三单元。第1..._三年级计算机教学计划

kubernetes_kubet-程序员宅基地

文章浏览阅读620次。Kubernetes是自动化容器操作的开源平台,这些操作包括部署、调度和节点集群间扩展Borg是谷歌内部使用的大规模集群管理系统,基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。Kubernetes是Google Omega的开源版本背景kubelet 是 Kubernetes 项目用来操作 Docker 等容器运行时的核心组件,除了跟容器运行时打交道外,kubelet 在配置容器网络、管理容器数据卷时,都需要直接操作宿主机。_kubet