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

智能推荐

前端开发之vue-grid-layout的使用和实例-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout

Power Apps-上传附件控件_powerapps点击按钮上传附件-程序员宅基地

文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件

C++ 面向对象(Object-Oriented)的特征 & 构造函数& 析构函数_"object(cnofd[\"ofdrender\"])十条"-程序员宅基地

文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"

修改node_modules源码,并保存,使用patch-package打补丁,git提交代码后,所有人可以用到修改后的_修改 node_modules-程序员宅基地

文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules

【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure-程序员宅基地

文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure

整理5个优秀的微信小程序开源项目_微信小程序开源模板-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板

随便推点

Centos7最简搭建NFS服务器_centos7 搭建nfs server-程序员宅基地

文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server

Springboot整合Mybatis-Plus使用总结(mybatis 坑补充)_mybaitis-plus ruledataobjectattributemapper' and '-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d

EECE 1080C / Programming for ECESummer 2022 Laboratory 4: Global Functions Practice_eece1080c-程序员宅基地

文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c

洛谷p4777 【模板】扩展中国剩余定理-程序员宅基地

文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...

android 退出应用没有走ondestory方法,[Android基础论]为何Activity退出之后,系统没有调用onDestroy方法?...-程序员宅基地

文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy

SylixOS快问快答_select函数 导致堆栈溢出 sylixos-程序员宅基地

文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos

推荐文章

热门文章

相关标签