HarmonyOS 开发:我想先告诉你这些(一)

本文概述

  • 作为入行不久的Android 程序员,鸿蒙开发是我所感兴趣的。这种逐渐趋于成熟的可用于移动端开发,且具备一定跨平台能力的技术,对我有着不小的吸引力。
  • 文章简要介绍了其发展历程技术理念。观山游水,先知全貌。在Coding 之前,有一个大体认识,我认为这是必要的。

鸿蒙发展进程

鸿蒙系统时间节点

  • HarmonyOS 1.0:2019年8月9日

  • HarmonyOS 2.0:2020年9月10日

    • Java,JS 语言来开发
  • HarmonyOS 3.1 Developer Preview:2022年11月04日

  • HarmonyOS 4.0:2023年8月4日,HarmonyOS 4.0操作系统正式发布

    • JavaScript JS ,TS TypeScript
  • 2024年:预计推出HarmonyOS Next 5.0

    • 砍掉AOSP 部分:不兼容Android,只支持纯血鸿蒙原生应用

重要等式

  • HarmonyOS 4.0 = AOSP + HMS + OpenHarmony
  • HarmonyOS Next = HSM + OpenHarmony

鸿蒙系统技术理念

基本概述

  • 一次开发,多端部署;可分可合,自由流转;统一生态,原生智能

一次开发,多端部署

  • 多端开发环境 + 多端开发能力 + 多端分发机制

多端开发环境

  • 支持多端双向览 + 分布式调优 + 分布式调试 + 超级终端模拟 + 低代码可视化开发

  • 多端双向预览:

    • HUAWEI DevEco Studio 提供了多种设备的双向预览能力,支持同时查看 UI 代码在多个设备上的预览效果,并支持 UI 代码和预览效果的双向定位修改
  • 分布式调试功能

    • 支持跨设备调试,通过代码断点和调试堆栈,可以方便地跟踪不同设备之间的交互,用于定位多设备互动场景下的代码缺陷
  • 分布式调优:

    • HUAWEI DevEco Studio 提供了分布式调优功能,支持多设备分布式调用链跟踪,跨设备调用堆栈缝合,同时采集多设备性能数据并进行联合分析
  • 超级终端模拟:万物互联

    • HUAWEI DevEco Studio 提供了不同类型的终端模拟,支持开发者在多个模拟终端上进行开发调试,多个模拟终端、真机设备也可以自由地组成超级终端,进一步降低开发者获取分布式调测环境的难度
  • 低代码开发:

    • 提供 UI 可视化开发能力,支持自由拖拽组件和可视化数据绑定,可快速预览效果,所见即所得。通过拖拽式编排、可视化配置的方式,帮助开发者减少重复性的代码编写,快速地构建多端应用程序、低代码开发的产物如组件模板等可以被其他模块的代码引用,并且能通过跨工程复用,支持开发团队协同完成复杂应用的开发

多端开发能力

  • 跨端开发的困境:

    • 应用如果在多个设备上运行,要适配不同的屏幕尺寸、分辨率不同的交互方式(如触摸和键盘等)、不同的硬件能力(如内存差异和器件差异等),开发成本较高
  • 鸿蒙的解决思路:

    • 多端 UI 适配,交互事件归一,设备能力抽象
  • 多端UI适配:

    • 屏幕逻辑抽象:鸿蒙系统提供虚拟像素 vp(virtual pixel)对分辨率进行抽象,不同设备的系统在底层将物理像素转化成虚拟像素,为应用开发者提供统一单位。

    • 布局:自适应布局 + 响应式布局

      • 自适应布局能力主要有 7 种:拉伸能力 + 均分能力 + 占比能力 + 缩放能力 + 延伸能力 + 隐藏能力 + 折行能力
      • 响应式布局能力主要有 3 种:断点 + 媒体查询 + 栅格布局
  • 交互事件归一

    • 不同设备间的交互方式等存在差异,如触摸、键盘、鼠标、语音、手写笔等,鸿蒙系统将不同设备的输入映射成归一交互事件,从而简化开发者适配逻辑
  • 设备能力抽象:

    • 在鸿蒙系统中,使用SystemCapability(简写为 SysCap)定义每个部件对应用开发者提供的系统软硬件能力。应用开发者基于统一的方式访问不同设备的能力

多端分发机制

  • 基本概述:传统应用 + 元服务

    • 一套工程,一次打包出多个 HAP,统一上架,即可根据设备类型按需进行分发
  • 多设备按需分发

    • 鸿蒙系统提供了两种模式帮助开发者基于"一次开发,多端部署"能力分发应用和元服务到不同设备上
  • 多入口按需分发:

    • 鸿蒙系统为元服务提供了更多的分发入口,基于场景和用户意图拉起元服务,实现"服务直达"

可分可合 + 自由流转

  • 元服务:

    • 元服务是鸿蒙系统提供的一种全新的应用形态,具有独立入口,用户可通过点击、碰一碰、扫一扫等方式直接触发,无需显式安装,由程序框架后台静默安装后即可使用,可为用户提供便捷服务

    • 触手可及:元服务可以在服务中心发现并使用,同时也可以基于合适场景被主动推荐给用户使用

      • 例如用户可在服务中心和小艺建议中发现系统推荐的服务
    • 服务直达:元服务无需安装卸载,"秒开体验",即点即用,即用即走

    • 万能卡片:支持用户无需打开元服务便可获取服务内重要信息的展示和动态变化,

      • 如天气、关键事务备忘、热点新闻列表
    • 自由流转:元服务支持运行在多设备上并按跨需端迁移,或者多个设备协同起来给用户提供最优的体验。

      • 手机上未完成的邮件,迁移到平板继续编辑,
      • 手机用作文档翻译和批注,配合智慧屏完成分布式办公;
      • 例如分布式游戏场景,手机可作为手柄,与智慧屏配合玩游戏,获得新奇游戏体验
  • 可分可合

    • 在开发态,开发者通过业务解耦,把不同的业务拆分为多个模块。

    • 在部署态,开发者可以将一个或多个模块自由组合,打包成一个 App Pack 统一上架。

    • 在分发运行态,每个 HAP都可以单独分发满足用户单一使用场景,也可以多个 HAP 组合分发满足用户更加复杂的使用场景。

    • 开发者可以在以下两种模式中选择,进行渇蒙生态应用、元服务的打包和上架

      • 模式一:打包成多个 App Pack,不同 App Pack 的包名是不一样的,每个 App Pack 都需要单独上架。在运行态,应用和服务的生命周期完全独立
      • 模式二:打包成一个 App PackApp Pack 里面的 HAP 包名相同,统一上架。在运行态,应用生命周期完全共享
  • 自由流转:

    • 鸿蒙系统提供了自由流转的能力,使得开发者可以方便地开发出跨越多个设备的应用,用户也能够方便地使用这些功能
    • 自由流转可分为跨端迁移和多端协同两种情况。他们分别是时间上的串行交互和时间上的并行交互。自由流转不仅带给用户全新的交互体验,也为开发者搭建了一座从单设备时代通往多设备时代的桥梁。

统一生态 + 原生智能

  • 统一生态:

    • 移动操作系统和桌面操作系统的跨平台应用开发框架不尽相同,从渲染方式的角度可以归纳为 WebView 渲染 + 原生渲染和自渲染这三类,鸿蒙系统对应的提供系统 WebViewArkUI 框架XComponent 能力来支持三种类型的跨平台框架的接入
  • 原生智能:

    • MachineLearning Kit:提供场景化能力,包括通用卡证识别、实时语音识别等;提供 AI 控件能力,使系统控件融合文字识别等 AI 能力。
    • Core AI API:提供图像语义、语言解析、OCR 文字识别等能力
    • Core DeepLearning API:提供高性能低功耗的端侧推理和端侧学习环境

参考资料

相关推荐
Dnelic-2 小时前
【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录
android·junit·单元测试·android studio·自学笔记
Eastsea.Chen4 小时前
MTK Android12 user版本MtkLogger
android·framework
长亭外的少年12 小时前
Kotlin 编译失败问题及解决方案:从守护进程到 Gradle 配置
android·开发语言·kotlin
建群新人小猿14 小时前
会员等级经验问题
android·开发语言·前端·javascript·php
1024小神15 小时前
tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
android·ios·tauri
兰琛15 小时前
20241121 android中树结构列表(使用recyclerView实现)
android·gitee
Y多了个想法16 小时前
RK3568 android11 适配敦泰触摸屏 FocalTech-ft5526
android·rk3568·触摸屏·tp·敦泰·focaltech·ft5526
NotesChapter17 小时前
Android吸顶效果,并有着ViewPager左右切换
android
_祝你今天愉快18 小时前
分析android :The binary version of its metadata is 1.8.0, expected version is 1.5.
android
暮志未晚Webgl19 小时前
109. UE5 GAS RPG 实现检查点的存档功能
android·java·ue5