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

2023-10-30

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 拉链表...

    目录 什么是拉链表 拉链表的作用 拉链表的形成 什么是拉链表 一张表存储的每一条信息就是一条记录的一个生命周期 这样的表格即为拉链表 拉链表的作用 用于记录一些 会发生变化但是变换频率不高的数据 比如某人的某个手机号使用情概况 通过对于日期
  • java IO学习笔记

    Java 流在处理上分为字符流和字节流 字符流处理的单元为 2 个字节的 Unicode 字符 分别操作字符 字符数组或字符串 而字节流处理单元为 1 个字节 操作字节和字节数组 Java 内用 Unicode 编码存储字符 字符流处理类负
  • 任务五-模型参数优化

    模型参数优化 使用网格搜索法对模型进行调优 调参时采用五折交叉验证的方式 并进行模型评估 网格搜索 网格搜索 其实可以叫穷举搜索 就是在所有候选的参数中 将不同参数组合起来 找出表现最好的一组参数 eg 以有两个参数的模型为例 参数a有3种

随机推荐

  • 导入别人的android studio项目

    在导入别人的android studio项目 假设为项目A 时 会遇到gradle不一致的情况 以下简短介绍解决方法 1 打开要导入的项目的目录 删除下图红框中的文件 2 找到自己以前在自己的android studio的任一项目 假设为项
  • 使用MATLAB快速搭建神经网络实现分类任务(模式识别)(附源码)

    使用神经网络能执行几种典型的任务 聚类 拟合 分类 模式识别 以及时间序列预测 其中分类任务可以说是最常应用的场景之一 在之前的文章里也使用了分类任务作为案例对神经网络进行了入门讲解 时常遇到想要使用神经网络快速地实现分类的同学 今天就讲一
  • Javascript中的shift() 、unshift() 和 pop()、push()区别

    定义一组数据 对其进行添加删除操作 unshift 从头部插入数据 向数组的开头添加一个或更多元素 并返回新的长度 shift 从头部删除数据 把数组的第一个元素从其中删除 并返回第一个元素的值 push 从尾部插入数据 向数组的末尾添加一
  • echarts饼图相关配置及效果展示

    const valData xAxis series data name item typeName value item ylFee feeRatio item feeRatio circleRatio item circleRatio
  • 网络编程6——多线程并发服务器实现(线程分离

    recall一下 代码实现 还是要先封装wrap h 1 socket 2 bind 绑定端口 注意参数 定义初始化强转化 3 listen函数 限定同时访问数 4 loop中 accept等待连接 注意参数 第三个参数长度的类型是sock
  • [lammps教程]OVITO绘制原子应力云图

    在我们用分子动力学模拟力学性能时 应力应变云图是我们模拟结果中常常出现的 如下图为分子动力学的铜铅合金拉伸变形特性的研究一文中铜铅合金剪应力云图 本文介绍如何利用OVITO软件绘制原子应力云图 图参考自 韩浏淼 基于分子动力学的铜铅合金拉伸
  • (附源码)计算机毕业设计SSM基于Eclipse的大学生自我管理系统

    附源码 计算机毕业设计SSM基于Eclipse的大学生自我管理系统 项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe My
  • mybatis中 #{}和${}的区别

    简明的解释 是预编译处理 是字符串替换 当做占位符来用 mybatis在处理 时 会将sql中的 替换为 号 调用PreparedStatement的 set方法来赋值 mybatis在处理 时 就是把 替换成变量的值 使用 可以有效的防止
  • AD20元件重叠绿色报错的解决方法,距离太近绿色报错

    有时因为元件靠的太近而导致绿色的报错 但在实际中这样使用是没有问题的 可以人为的消除掉元件间距离检查 距离太近报错的修改方法 设计 规则 将 ComponentClearance 中的 最小间距 都改为 0 最小间距设置为0后 要人为仔细检
  • 四、mybatis第四节

    一 分页插件PageHelper 在我们日常使用中 缺少不了分页查询 就好比你百度时 那么多的数据 肯定需要分页来处理 那么我们就可以用分页插件来帮我们快速实现分页查询操作 首先了解一下分页查询的sql语句 select from 表名 w
  • Docker入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

    目录 一 Docker概述 1 1 Docker 为什么出现 1 2 Dorker历史 1 3 能做什么 虚拟机技术 通过 软件 模拟的具有完整 硬件 系统功能的 运行在一个完全 隔离 环境中的完整 计算机系统 容器化技术 容器化技术不是模
  • PCB走线线宽电流对照表

    在PCB设计的过程中 大电流电路需要特别留意其参数 其几个个决定性因数包括 材质 厚度和宽度 下表为普通铜电路板计算参考
  • LayUI框架——选项卡

    目录 前言 1 动态实现选项卡 1 1 优化dao类 1 2 优化前端JSP页面 1 3 引入头部hand jsp页面 1 4 优化后台主界面js 2 运行效果图 前言 首先效果展示 1 动态实现选项卡 继 上篇博客 实现的导航栏 本篇实现
  • c语言分支结构程序设计教学设计 赛课,《分支结构程序设计》教学设计.doc

    分支结构程序设计 教学设计 潮州市饶平县华侨中学 邮编515700 张远航 Email zyuanhang 教学分析与教学设计思路 一 教学对象分析与教学设计 本教案适用于高中二年级学生 这一阶段的学生具备一定的数学基础和具有一定的比较 归
  • 利用python编程,制作自己的游戏“外挂”!

    Python简介及应用领域 Python是一种解释型脚本语言 可以应用于以下领域 Web 和 Internet开发 科学计算和统计 人工智能 教育 桌面界面开发 软件开发 后端开发 网络爬虫 编程用的好 不仅可以提高工作效率 还能让玩游戏变
  • FastAPI学习(二)——FastAPI+Jinjia2模板渲染网页(跳转返回渲染页面)

    文章目录 一 简单实现 1 依赖库安装 2 建立目录 3 item html文件代码 4 main py文件代码 5 浏览器输入 二 借用bootstrap模板 1 目录结构与名称 2 index html代码 3 main py代码 4
  • 值得收藏 Modbus RTU 协议详解

    值得收藏 Modbus RTU 协议详解 目录 值得收藏 Modbus RTU 协议详解 Modbus是什么 Modbus分类 Modbus通讯过程 Modbus RTU协议数据帧结构 功能码01 读线圈状态 功能码02 读离散量输入 功能
  • matlab 锐化降噪,matlab 图形锐化 滤波

    help imread help fspecial imfilt 帮助稳定中有较多的示例 fspecial 函数 功能 产生预定义滤波器 格式 H fspecial type H fspecial gaussian n sigma 高斯低通
  • 精密全波整流电路

    精密全波整流电路 单运放型 利用单运放构成的精密全波整流电路主要有两种 一种称之为 T 型 另一种称为 型 T 型精密全波整流电路的原理图如下 图1 T型精密全波整流电路 上面电路中 R1 R3 2 R2 当输入为正电压时 D1 导通D2截
  • HarmonyOS“一次开发,多端部署“优秀实践——玩机技巧,码上起航

    随着终端设备形态日益多样化 分布式技术逐渐打破单一硬件边界 一个应用或服务 可以在不同的硬件设备之间按需调用 互助共享 让用户享受无缝的全场景体验 作为应用开发者 广泛的设备类型也能为应用带来广大的潜在用户群体 一个应用要在多类设备上提供统