【初探鸿蒙01】鸿蒙生态用开发白皮书V3.0解读

0 阅读4分钟

鸿蒙生态应用开发白皮书 developer.huawei.com/consumer/cn…

鸿蒙(Harmony OS)不仅仅是一个操作系统,更是一套完整的应用生态,旨在提供数字时代的一整套消费电子产品的人机交互解决方案。

鸿蒙的设计理念的三点核心思想

  • 全场景
  • 轻量化
  • 原生AI

全场景

一次编码,多端部署。支持多样化设备,打通跨设备协作。

分布式调试,分布式调优

在此基础上,建立分布式调试能力,听起来很NB,不知道实际运行起来效果如何。第(4)、(5)两步是借助什么通道实现的?

image.png

不仅有分布式调试,还有分布式调优,支持多设备分布式调用链跟踪、跨设备调用堆栈缝合,并联合采集与分析多设备性能数据。

image.png

多端UI适配

这个是我最关心的能力之一,UI适配一直是大前端工程师不能言说之痛,任务繁琐,价值低廉,却又不能不做,为了达到所谓极致的产品体验,牺牲了太多大前端工程师的宝贵时间在这种低价值任务上。

针对不同尺寸的显示设备,鸿蒙采用自适应布局响应式布局两种UI适配策略,以达成一次编写、多端运行的目标。

  • 自适应布局:静态适应,即代码运行在不同分辨率设备上的时候,UI自动变化。包含7种能力——拉伸、均分、占比、缩放、延伸、隐藏、折行,听起来像极了葫芦娃。
  • 响应式布局:动态适应,当显示空间大小变化时,布局自动切换。包含3种能力:断点、媒体查询、栅格。

交互事件抽象,设备能力抽象

这两者较为接近,都是增加一层抽象层,降低开发者适配成本。

多端分发

借鉴App Bundles思想,不同设备仅下载自己所需要的能力,可以拆分下载,虽然白皮书中未标明,但我认为似乎支持单个Hap的动态更新。

image.png

轻量化

元服务?小程序的另一个名字

元服务取代应用,免下载安装,支持热更新——鸿蒙自己的小程序。

类似后端的中台思想,将应用拆分为基础服务,例如ABC服务构成应用甲,BCD服务构成应用乙。简言之,将开发阶段的模块化后移到了应用阶段。

image.png

自由流转

跨端迁移和多端协同,保证任务流不中断。这也是我个人非常期待的一个功能,在不同地点、不同设备上无缝衔接,最典型的使用场景是云文档。

原生AI

原生智能,端侧AI实践,软硬协同。这部分介绍的不多。

image.png

鸿蒙学习路径

“核心三理念”是道,“赋能套件”是术,“开发套件”是器。

image.png

  • 赋能套件:赋予开发者开发能力的套件集合,视频课程,Codelabs等
  • 开发套件:开发者实操工具箱
    • 设计、开发、测试套件
    • 运维套件
    • OS开放能力集

OS开放能力集-方舟编译器(ArkCompiler)

image.png

  • 编译期:将ArkTS/TS/JS作为输入,编译成ABC(ArkCompiler Bytecode,方舟字节码)文件。
  • 运行时:运行字节码文件

开发者视角:语言与应用程序框架

ArkTS语言

鸿蒙生态应用使用ArkTS作为开发语言,后缀为.ets(疑惑,为什么是ets而非ats),该框架基于声明式开发范式,具有简洁高效的优点。

  • 渲染管线扁平化,利用语言增强特性
  • 数据驱动UI(包含动效),最小化更新

Stage模型

鸿蒙系统上的应用模型称为Stage模型,用于定义和管理应用全生命周期。

Ability

image.png

Ability是应用程序框架中最基本的完成独立功能的单位,可以类比Android SDK中的Application,但又不完全相同。

  • Ability:类似Application,可分为:
    • UIAbility:是应用主入口,对应桌面图标,由多个ArkUI页面(类似Activity)组成
    • ExtensionAbility:有多个具体子类型,如FormExtensionInputMethodExtensionAbility
  • ArkUI:类似Activity,是具体页面

Module

与Android Studio里面的Module相同,Module的编辑结果有三种形态:

  • HAR(HarmonyOS Archive):中间变异产物,最终会编译合并在HSP或HAP中。
  • HSP(HarmonyOS Shared Package):动态共享库,在运行态复用,最终打包中只包含一份。
  • HAP(HarmonyOS Ability Package):静态共享库,是可单独安装的容器包,可类比apk,用于不同设备安装。最终生成的App包里面可含有多份HAP。

HarmonyOS提供的系统能力

HarmonyOS SDK以kit的形式(类似aar)提供开放能力给开发者的应用/元服务调用。

image.png

image.png