当前位置: 首页 > article >正文

HarmonyOS“一次开发,多端部署”

目录

一、核心概念与目标

二、开发基础问题与解决思路

(一)基础问题

(二)解决思路

三、应用开发流程与示例

四、工程管理具体操作

五、应用 UX 设计通用规则与考虑因素

一、核心概念与目标

  • 定义:一套代码工程,一次开发上架,多端按需部署。

  • 目标:帮助开发者快速高效开发支持多种终端设备形态的应用,实现跨设备的流转、迁移和协同的分布式体验,同时兼容不同设备并提供一致的用户体验。

二、开发基础问题与解决思路

(一)基础问题

  1. 不同设备间屏幕尺寸、色彩风格等差异导致页面适配问题。

  2. 不同设备系统能力差异(如智能穿戴设备是否具备定位能力、智慧屏是否具备摄像头等)影响功能兼容。

(二)解决思路

  1. 从 UX 设计角度考虑多设备的 “差异性”、“一致性”、“灵活性” 和 “兼容性”。

    • 差异性:充分了解设备特性(屏幕尺寸、交互方式、使用场景、用户人群等)进行针对性设计,参考设备设计指南。

    • 一致性:考虑设备共性,采用通用性设计方法,减少用户学习难度和开发成本。

    • 协同性:了解设备协同模式,展现多设备无缝流转体验,参考分布式设计指南。

  2. 工程管理方面采用合适的开发框架、程序包结构、部署模型和工程结构。

    • 方舟开发框架

      • 提供两种开发范式:

        • 声明式开发范式:采用 TS 语言,进行声明式 UI 语法扩展,从组件、动效和状态管理三个维度提供 UI 绘制能力,适用于复杂度较大、团队合作度较高的程序及移动系统应用开发人员、系统应用开发人员。其 UI 开发更接近自然语义编程,让开发者直观描述 UI 界面,且占用内存更少,更推荐使用。

        • 类 Web 开发范式:采用经典的 HML、CSS、JavaScript 三段式开发方式,适用于界面较为简单的中小型应用和卡片开发,更接近 Web 前端开发者习惯,可将已有 Web 应用改造成方舟开发框架应用。

    • 应用程序包结构

      • 应用包含一个或多个 Module,Module 是应用 / 服务的基本功能单元,分为 “Ability” 和 “Library” 两种类型。“Ability” 类型的 Module 编译后生成 HAP 包,“Library” 类型的 Module 编译后生成 HAR 包或 HSP 包。

      • 应用以 APP Pack 形式发布,包含一个或多个 HAP 包。HAP 分为 Entry 和 Feature 两种类型,Entry 类型是应用主模块,同一设备类型只支持一个,用于实现应用入口界面等;Feature 类型是应用动态特性模块,可包含一个或多个,也可不含。

    • 部署模型

      • 部署模型 A:不同类型设备通过一次编译生成相同的 HAP(或 HAP 组合),适用于相同泛类设备,UX 设计或功能相似的情况。

      • 部署模型 B:不同类型设备通过一次编译生成不同的 HAP(或 HAP 组合),适用于不同泛类设备,UX 设计或功能差异大的情况,但需审视设计及功能规划合理性。实际开发中常混合使用 A 和 B 模型,且都应采用一次编译。

    • 工程结构

      • 推荐 “三层工程结构”:

        • common(公共能力层):存放公共基础能力集合,可编译成 HAR 包或 HSP 包,只可被 products 和 features 依赖,不可反向依赖。

        • features(基础特性层):存放基础特性集合,feature 高内聚、低耦合、可定制,不需要单独部署的编译为 HAR 包或 HSP 包,供 products 或其他 feature 使用,需要单独部署的编译为 Feature 类型的 HAP 包,和 products 下 Entry 类型的 HAP 包组合部署,可横向调用及依赖 common 层。

        • products(产品定制层):针对不同设备形态进行功能和特性集成,各个子目录各自编译为一个 Entry 类型的 HAP 包,作为应用主入口,不可以横向调用。部署模型 A 和 B 的主要差异点在 products 层,A 在同一子目录中集成,B 在不同子目录中差异化集成。开发阶段应考虑代码复用,减少工作量。

三、应用开发流程与示例

(一)以天气应用为例的开发过程

  1. UX 设计

    • 从设备屏幕宽度维度将设备分为超小、小、中、大四类(当前以小、中、大设备场景为例,对应默认设备和平板等)。

    • 天气应用包含主页、管理城市和添加城市页面,主页有菜单和更新间隔弹窗。不同设备上应用整体风格保持一致,相近屏幕宽度布局基本不变,不同宽度布局有差异,小屏幕显示元素是大屏幕子集,大屏幕有独有元素(如侧边栏),体现 UX 的一致性和差异性。

  2. 工程管理及调试

    • 工程创建:在创建过程中勾选应用期望运行的目标设备类型。

    • 预览调试:开启预览器,打开 “Multi - profile preview” 开关观察不同设备表现,可新增自定义预览器。

  3. 页面开发

    • 天气主页

      • 划分为 9 个基础区域,1 - 8 区域尺寸及布局基本不变,用自适应布局以自定义组件实现,区域间布局用响应式布局栅格布局实现,基础区域 9 仅大设备显示,侧边栏通过媒体查询在大设备展示,展开和隐藏功能用侧边栏组件实现。

      • 每小时天气区域通过延伸能力实现,随显示区域增加展示更多信息。

    • 城市天气详情

      • 区域 1 - 8 可能无法一次性显示,外层用 Scroll 组件支持滚动。通过栅格布局在不同设备下划分不同列数实现三套不同布局,大设备侧边栏隐藏状态下调整 GridCol 栅格子组件的 order 属性改变每日天气与空气质量相对顺序。

    • 主页整体实现

      • 根节点用侧边栏组件,小和中设备不展示侧边栏及控制按钮,大设备默认展示并提供控制按钮。

      • 主页右侧城市天气详情,小和中设备用 Swiper 组件并开启导航点左右滑动切换城市,大设备通过侧边栏城市列表切换,关闭导航点。

    • 功能开发

      • 应用功能开发包括后端功能等,服务器端开发不在讨论范围。对于不同设备系统能力差异,如超小设备(智能穿戴等)因硬件限制裁剪系统,可在应用安装包描述所需系统能力,或在使用特定系统能力前通过 canIUse 接口判断系统能力是否存在,进而执行不同逻辑。

四、工程管理具体操作

  1. 使用 DevEco Studio 进行多设备应用开发,基于 DevEco Studio 3.1.1 Release 版本(不同版本可能功能界面和操作有差异)。

  2. 工程创建与结构优化

    • 不推荐直接使用平级目录管理模块,推荐 “三层工程结构”(common、features、product)。

    • 新建 Module:参考开发 ohpm 包,新建 common、feature1、feature2 等模块,以及 entry 类型的模块(如 wearable)。

    • 修改 Module 配置

      • 修改 Module 名称:如将默认的 entry 模块名称修改为 default。

      • 修改 Module 类型及其设备类型:通过修改 module.json5 配置文件,如将 default 模块的 deviceTypes 配置为 ["phone", "tablet"],type 字段配置为 entry,使其编译的 HAP 在手机和平板安装运行;将 wearable 模块的 deviceTypes 配置为 ["wearable"],type 字段配置为 entry,使其 HAP 在智能穿戴设备运行。

    • 调整目录结构:创建 product 和 features 子目录,将 default、wearable 等目录按规则拖拽到相应目录中。

    • 修改依赖关系:通过修改 oh - package.json5 文件配置依赖关系,使 product 目录中模块依赖 features 和 common 中的公共代码实现功能,提高代码复用率。修改后点击右上角 “Sync Now” 使改动生效。

  3. 引用 ohpm 包中的代码

    • 在 common 模块新增 ComplexNumber 类(表征复数及包含 toString () 方法)和 Add 函数(计算两数之和)。

    • 在 common/index.ets 文件中申明要 export 的类、函数名称及位置。

    • 在 default 模块等中 import 和使用这些类和函数,需提前在 oh - package.json5 文件中配置对 common 模块的依赖关系。

五、应用 UX 设计通用规则与考虑因素

  1. 遵循通用设计规则,考虑多设备的 “差异性”、“一致性”、“灵活性” 和 “兼容性”。

  2. 从多个方面进行考虑:

    • 设计理念:了解 HarmonyOS 设计系统核心理念,确保多设备一致体验。

    • 人因研究:了解人因研究对 UX 设计的科学指导。

    • 应用架构:了解常用应用架构并实践。

    • 人机交互:了解不同人机交互方式及注意事项。

    • 视觉风格:了解基础概念、色彩、字体、图标、插画、布局等关键视觉设计概念和规则。

    • 动效:了解时长、曲线、帧率等基础要素及特征、转场、手势动效设计方法和微动效、插画动效设计指导。

    • 声音:了解声音设计属性及关键声音元素在不同设备间的设计方法。

    • 多态控件:了解不同设备下多态控件特点及显示状态,确保正确使用。

    • 界面用语:确保用语风格统一、清晰明了、流畅自然。

    • 全球化:提供通用和个性化方案满足不同国家需求。

    • 无障碍:让视障用户正常使用设备,获得良好信息无障碍体验。

    • 隐私设计:保护用户隐私,让用户自主管控信息。


http://www.kler.cn/a/370575.html

相关文章:

  • OA-CNN:用于 3D 语义分割的全自适应稀疏 CNN
  • VUE3 vite下的axios跨域
  • 机器学习-基本术语
  • 浙江安吉成新照明电器:Acrel-1000DP 分布式光伏监控系统应用探索
  • Linux虚拟化技术:从Xen到KVM
  • 蓝桥杯刷题第二天——背包问题
  • 即插即用篇 | YOLOv8 引入 空间和通道协同注意力模块 SCSA
  • 【计算机网络一】网络学习前置知识
  • 十四:Python学习笔记--基础知识完结(12)写几个案例 打包exe出来 齐活
  • 1.机器人抓取与操作介绍-深蓝学院
  • softmax回归简洁实现
  • Flutter Row组件实战案例
  • 软考:CORBA架构
  • 高效文本编辑与导航:Vim中的三种基本模式及粘滞位的深度解析
  • 【C++刷题】力扣-#448-找到所有数组中消失的数字
  • 关于整理EACO地球链500个问答0.1的建议,请用数字1-500列出来,谢谢20241028。
  • 使用Django框架开发企业级Web应用
  • NUUO网络视频录像机upload.php任意文件上传漏洞复现
  • 边缘计算网关在储能领域的应用-天拓四方
  • 【对比学习】正交阵/酉矩阵,对称矩阵/Hermite矩阵,正交相似对角化/奇异值分解的内在联系
  • 部署DNS主从服务器
  • go.mod 与go.sum作用
  • CSS进阶
  • HarmonyOS 组件样式@Style 、 @Extend、自定义扩展(AttributeModifier、AttributeUpdater)
  • 再识用户中心
  • Log4Net配置详解及输出自定义消息类示例代码