HarmonyOS“一次开发,多端部署“优秀实践——玩机技巧,码上起航

news2024/11/26 14:40:56

随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间按需调用、互助共享,让用户享受无缝的全场景体验。作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户群体。一个应用要在多类设备上提供统一的内容,需要适配不同的屏幕尺寸和硬件,开发成本较高。"一次开发,多端部署"(后文中简称为"一多")的应用开发理念,可以让开发者基于统一的设计,在多类设备上,高效构建可运行的应用。在2023HDC大会上,华为展示了其自研应用"玩机技巧"基于这一理念的优秀实践。玩机技巧作为华为终端用户常用的应用,通过"一多",部署在手机、折叠屏、平板等多设备上,不仅获得了体验提升,开发代码量也下降了约40%。下文,我们将从架构设计、UI设计、交互设计和上架4个层面对玩机技巧应用的"一多"开发进行解读。

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

三层架构分层设计

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

玩机技巧开发将应用拆分成公共能力层(Common)、基础特性层(Feature)、产品定制层(Product)三层工程结构,支持一套代码工程一次开发上架,即可多端按需部署。公共能力层支持网络框架、工具类、数据管理等能力。特性层抽象出可复用的高内聚、低耦合的基础特性集,如富媒体浏览、搜索。在产品定制层,针对多设备存在差异的特性集成UI、资源和配置,如多窗口、分栏体验,与应用基座解耦等多种因素。通过自适应布局、响应式控件、交互归一等系统OS能力,以及IDE工程能力,将应用工程归一,最大化复用代码,提升设计和开发效率,并兼顾多设备的整体用户体验。支撑应用工程归一、最大化复用代码,提升了设计和开发效率,兼顾了多设备的整体用户体验。

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

多端设计UI自适应

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

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

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

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

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

视觉风格

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

交互事件归一

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

一次上架按需部署

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

一次上架按需部署逻辑图

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

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

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

点击关注阅读原文,了解更多资讯

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么编辑pdf?这几种编辑技巧看看

怎么编辑pdf?PDF文件是一种非常常见的文件格式,它可以被很多程序打开,但却不容易被编辑。然而,有时候我们需要编辑PDF文件,比如在一份PDF文件中添加或删除一些内容,或者对PDF文件进行注释,签名等…

ELK安装、部署、调试(一)设计规划及准备

一、整体规划如图: 【filebeat】 需要收集日志的服务器,安装filebeat软件,用于收集日志。logstash也可以收集日志,但是占用的系统资源过大,所以使用了filebeat来收集日志。 【kafka】 接收filebeat的日志&#xff…

F5服务器负载均衡能力如何?一文了解

但凡知道服务器负载均衡这个名词的,基本都知道 F5,因为负载均衡是 F5 的代表作,换句话来说,负载均衡就是由 F5 发明的。提到F5服务器负载均衡能力如何?不得不关注F5提出的关于安全、网络全面优化的解决方案&#xff0c…

代码复现,我能行之DMP-MATLAB

代码复现,我能行——系列一 一、基础概念 Dynamic Movement Primitives (DMP),中文为动态运动基元或动态运动原语,由美国University of Southern California的Stefan Schaal教授团队于2002年提出,是一种用…

【转存】Lambda 表达式完整教程

Java Lambda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法。实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedynamic指令来实现Lambda表达式的。具体原理放到下一篇。本篇我们首先感受一下使用La…

【LeetCode-中等题】114. 二叉树展开为链表

文章目录 题目方法一:前序遍历(构造集合) 集合(构造新树)方法二:原地构建方法三:前序遍历--迭代(构造集合) 集合(构造新树) 题目 方法一&#x…

中间继电器 ZQGZ-PY31 DC220V 导轨安装 品牌:JOSEF约瑟

ZQGZ-04、31、22、40导轨安装系列中间继电器用于电力系统继电保护及各种自动控制线路中。以增加保护和控制线路中的触点数量及触电容量。 系型型号 ZQGZ-04 ZQGZ-31 ZQGZ-22 ZQGZ-40 ZQGZ-RJ04 ZQGZ-RJ31 ZQGZ-RJ22 ZQGZ-RJ40 ZQGZ-PJ04 ZQGZ-PJ31 ZQGZ-PJ22 ZQGZ-PJ40 …

iPhone 15 Pro与iPhone 13 Pro:最大的预期升级

如果你在2021年首次发布iPhone 13 Pro时就抢到了它,那么你的合同很可能即将到期。虽然距离iPhone 15系列还有几周的时间,但你可能已经在想:是时候把你的旧iPhone升级为iPhone 15 Pro了吗? 我们认为iPhone 13 Pro是你现在能买到的最好的手机之一。但如果你想在2023年晚些时…

JVM解密: 解构类加载与GC垃圾回收机制

文章目录 一. JVM内存划分二. 类加载机制1. 类加载过程2. 双亲委派模型 三. GC垃圾回收机制1. 找到需要回收的内存1.1 哪些内存需要回收?1.2 基于引用计数找垃圾(Java不采取该方案)1.3 基于可达性分析找垃圾(Java采取方案) 2. 垃圾回收算法2.1 标记-清除算法2.2 标记…

国标GB28181视频平台EasyGBS国标平台智能边缘计算网关关于小区电动车进电梯的应用方案设计

一、行业背景 随着人工智能技术的不断成熟与落地,各行各业也逐渐融入AI智能检测技术,尤其是在视频监控领域,通过AI视频智能检测与分析,可以大大提高视频的自动化、智能化监控能力。比如在小区的管理中,由电动车上楼入…

了解 Socks 协议:它的过去、现在与未来

在网络世界的江湖中,有一名叫做 Socks 协议的高手,它凭借着一招“代理”绝技,在网络安全领域独步天下。今天,就让我们来了解一下这位神秘高手的过去、现在和未来。 在过去,互联网世界的江湖可谓是风起云涌,…

JavaScript 中 如何在数组中找到两个值的和等于给定的值

在JavaScript中&#xff0c;您可以使用两种常见的方法来找到数组中两个值的和等于给定的值。 方法一&#xff1a;使用双重循环 function findSum(arr, target) {for (let i 0; i < arr.length; i) {for (let j i 1; j < arr.length; j) {if (arr[i] arr[j] target…

WebVR — 网络虚拟现实

推荐&#xff1a;使用 NSDT编辑器 快速搭建3D应用场景 虚拟现实设备 随着Oculus Rift和许多其他生产设备即将上市&#xff0c;未来看起来很光明——我们已经有足够的技术来使VR体验“足够好”&#xff0c;可以玩游戏。有许多设备可供选择&#xff1a;像Oculus Rift或HTC Vive这…

如何利用课间休息时间?这个工具很重要

在不断演变的时代&#xff0c;学校不再仅仅是知识的源泉&#xff0c;它们也正在成为创新和科技应用的舞台。新零售模式的崭新风貌正在逐渐融入校园&#xff0c;而自动售货机作为这一变革的重要组成部分&#xff0c;为学校带来了前所未有的便利与活力。 在这个充满机遇的背景下&…

分享一篇关于如何使用BootstrapVue的入门指南

你想轻松地创建令人惊叹且响应式的在线应用程序吗&#xff1f;使用BootstrapVue&#xff0c;您可以快速创建美观且用户友好的界面。这个开源工具包是基于Vue.js和Bootstrap构建的&#xff0c;非常适合开发现代Web应用程序。本文将介绍其基础知识&#xff0c;让您可以开始使用这…

数据结构day04(概念、顺序表)

今日任务 2.冒泡排序和选择排序 #define MAX 10typedef struct{int id; }data;typedef struct seq{data arr[MAX];int len; }seqList,*seqListP;/** function: 选择排序* param [ in] * param [out] * return */ int selectSort(seqListP p){if(is_empty(p))return 1;…

springboot整合Excel填充数据

填充一组数据 准备模板 封装数据 import java.util.ArrayList; import java.util.List;/*** 使用实体类封装填充数据** 实体中成员变量名称需要和Excel表各种{}包裹的变量名匹配*/ Data public class FillData {private String name;private int age;// 生成多组数据代码pub…

采购退款,撸卡撸货高成功率的下单方法,到底应该怎么做?

市面上的网络环境有非常多种&#xff0c;纯ip类的有luminati&#xff0c;922&#xff0c;G3&#xff0c;M5&#xff0c;谷歌fi&#xff0c;纯环境类的有VM&#xff0c;ads, 巨象&#xff0c;林肯法球等等。还有VPS比如无间道&#xff0c;手机AWZ /ALS 还有一些环境IP的比如云手…

地图设计指南之30大要点

1 明确的目的 ● 地图设计的第一步&#xff0c;先问问自己设计地图的目的是什么&#xff1f; 2标题 ● 地图标题应反映地图的用途&#xff0c;应该向读者揭示重要的信息&#xff0c;不应该让读者猜测地图的内容。标题一般包括主题和地理位置信息。 3适当利用模板 ● 和使用…

刷完这个笔记,15K不能再少了....

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;得准备面试了&#xff0c;又不知道从何下手&#xff01;为了帮大家节约时间&#xff0c;特意准备了一份面试相关的资料&#xff0c;内容非常的全面&#xff0c;真的可以好好补一补&#xff0c;希望大家在都能拿到理想…