HarmonyOS“一次开发,多端部署“优秀实践——玩机技巧,码上起航
随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间按需调用、互助共享,让用户享受无缝的全场景体验。作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户群体。一个应用要在多类设备上提供统一的内容,需要适配不同的屏幕尺寸和硬件,开发成本较高。"一次开发,多端部署"(后文中简称为"一多")的应用开发理念,可以让开发者基于统一的设计,在多类设备上,高效构建可运行的应用。在 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 统一上架。在分发运行态,每个模块都可以单独分发满足用户单一使用场景,也可以多个模块组合分发满足用户更加复杂的使用场景。开发者可以在以下两种模式中选择,进行生态应用、元服务的打包和上架。

通过"一多"能力进行打包、上架的两种模式
如上为玩机技巧在"一多"特性的实践经验,希望为开发者提供参考,欢迎更多应用开发者了解并使用"一次开发,多端部署"能力。
HarmonyOS“一次开发,多端部署“优秀实践——玩机技巧,码上起航的更多相关文章
- nodejs 开发服务端 部署到 iis 服务器环境 -- iisnode 安装问题解决记录
开发环境 nodejs: v10.15.3 windows: 10 iis: 10 需求: 用Nodejs开发了服务端,要部署到IIS 需要在IIS服务器上安装iisnode,结果遇到问题:安装不上 ...
- Linux 桌面玩家指南:18. 使用 Docker 隔离自己的开发环境和部署环境
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- 内网穿透神器(ngrok)服务端部署【分享一台自己的ngrok服务器】【多平台】
Ngrok为何物 “ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放.”这是百度百科上给Ng ...
- 【原创】新手入门一篇就够:从零开发移动端IM
一.前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和沟通代价,对各种应用形态产生了深远影响. 做为IM开发者或即将成为IM开发者的技术人员 ...
- mac端的优秀抓包工具——Charles使用
http://my.oschina.net/u/2340880/blog/508688 mac端的优秀抓包工具——Charles使用 一.简介 二.安装与使用 三.使用Charles在mac上进行抓包 ...
- 《IM开发新手入门一篇就够:从零开发移动端IM》
登录 立即注册 TCP/IP详解 资讯 动态 社区 技术精选 首页 即时通讯网›专项技术区›IM开发新手入门一篇就够:从零开发移动端IM 帖子 打赏 分享 发表评论162 想开 ...
- Sprint 5 summary: UI 界面更新,Azure端部署和用户反馈分析 12/28/2015
本次sprint主要完成的任务有对手机APP的UI界面的更新,同时对Azure客户端的部署进行了相应的学习和有关的程序设计.同时对于ALPHA release的用户反馈做出相应的分析以确定接下来工作的 ...
- HarmonyOS三方件开发指南(14)-Glide组件功能介绍
<HarmonyOS三方件开发指南>系列文章合集 引言 在实际应用开发中,会用到大量图片处理,如:网络图片.本地图片.应用资源.二进制流.Uri对象等,虽然官方提供了PixelMap进行图 ...
- electron 应用开发优秀实践
vivo 互联网前端团队-Yang Kun 一.背景 在团队中,我们因业务发展,需要用到桌面端技术,如离线可用.调用桌面系统能力.什么是桌面端开发?一句话概括就是:以 Windows .macOS 和 ...
- 前后端分离开发工具YAPI部署记录
之前公司说要建立起前后端分离开发模式,而我只是刚毕业,让我负责建立起这个规范 ,虽然刚毕业还没去大厂待过,对我来说是个挑战,只能按我理解和网上的方案进行建立.在 Google 和 github 搜了好 ...
随机推荐
- 【Azure 存储服务】ADLS Gen 2 Backup/软删除/Version管理/快照等功能参考资料
问题描述 ADLS Gen 2 存储的备份,软删除和version管理, 快照等功能应该怎么启用? 问题回答 存储的备份 测试显示 Premium 定价层 的 ADLS Gen 2 在中国区Azure ...
- Codeforces Round 638 (Div. 2)B. Phoenix and Beauty
B. Phoenix and Beauty 这道题目学到的东西: 从给出的数据范围观察,得到一些有用信息(峰哥教的) 考虑无解的情况' 其实这题考虑怎么操作是比较难的,如果能想出来满足条件的结果就比较 ...
- vscode vue 组件定位插件 webpack-code-inspector-plugin -- 强烈推荐 Alt+Shift+鼠标左键
作用 alt + shift + 鼠标左键 自动跳转 vscode项目的组件代码 项目地址 https://github.com/zh-lx/code-inspector/blob/main/pack ...
- vue css 背景图 路径 记得加波浪号 background-image: url("~@/assets/images/d.jpg");
vue css 背景图 路径 记得加波浪号 background-image: url("~@/assets/images/d.jpg"); 为什么 不加波浪号,图片显示不出来哟
- hesitation 单词学习 犹豫 hes 就是 her 粘 助记单词 here
hesitation 单词学习 犹豫 hes 就是 her 粘 助记单词 here hes + itation(ite + ate + ion) hesitation 美: [ˌhezɪˈteɪʃ(ə ...
- 微型MPU6050模块及串口/BLE透传的实物展示
前言 随着时间的积累,项目的沉淀.把很多做过的产品标准化掉,形成可以立即拿出来使用的产品.是非常重要的一个环节.最近,把基于MPU6050的模块微型化并使用串口透传这个产品梳理了一下.形成了标准化 ...
- Git | Git Server 搭建,在自己的服务器上进行 git server 搭建
系列文章目录 目录 系列文章目录 前言 操作 1. 创建 git 用户 2. 创建 .ssh 目录 3. 自定义仓库的根目录 4. 在服务器上创建个裸仓库 5. 手动配置一个公钥 6. 在本地测试一下 ...
- TornadoFx中的css美化
原文地址:TornadoFx中的css美化 - Stars-One的杂货小窝 TornadoFx中使用类重新对css进行了封装,所以可以用代码的形式来书写样式 说明 除了Text,其他的若是要修改文字 ...
- python学习笔记(4):面向对象
面向对象 定义 class Student(被继承类): def __init__(self, xx, xxx): #构造函数 类方法的第一个参数一定是self.除此之外和普通函数并没有区别.同样可以 ...
- 【实时渲染】3DCAT实时渲染云在BIM领域的应用
很多人不知道实时渲染云在BIM领域都有哪些应用,今天3DCAT就为大家整理了一篇关于实时渲染云在BIM领域的应用介绍的文章.我们将会从什么是BIM.BIM在协作方面的挑战.3DCAT的解决方案及3DC ...