鸿蒙生态应用开发白皮书 developer.huawei.com/consumer/cn...
鸿蒙(Harmony OS)不仅仅是一个操作系统,更是一套完整的应用生态,旨在提供数字时代的一整套消费电子产品的人机交互解决方案。
鸿蒙的设计理念的三点核心思想
- 全场景
- 轻量化
- 原生AI
全场景
一次编码,多端部署。支持多样化设备,打通跨设备协作。
分布式调试,分布式调优
在此基础上,建立分布式调试能力,听起来很NB,不知道实际运行起来效果如何。第(4)、(5)两步是借助什么通道实现的?
不仅有分布式调试 ,还有分布式调优,支持多设备分布式调用链跟踪、跨设备调用堆栈缝合,并联合采集与分析多设备性能数据。
多端UI适配
这个是我最关心的能力之一,UI适配一直是大前端工程师不能言说之痛,任务繁琐,价值低廉,却又不能不做,为了达到所谓极致的产品体验,牺牲了太多大前端工程师的宝贵时间在这种低价值任务上。
针对不同尺寸的显示设备,鸿蒙采用自适应布局 和响应式布局 两种UI适配策略,以达成一次编写、多端运行的目标。
- 自适应布局:静态适应,即代码运行在不同分辨率设备上的时候,UI自动变化。包含7种能力------拉伸、均分、占比、缩放、延伸、隐藏、折行,听起来像极了葫芦娃。
- 响应式布局:动态适应,当显示空间大小变化时,布局自动切换。包含3种能力:断点、媒体查询、栅格。
交互事件抽象,设备能力抽象
这两者较为接近,都是增加一层抽象层,降低开发者适配成本。
多端分发
借鉴App Bundles
思想,不同设备仅下载自己所需要的能力,可以拆分下载,虽然白皮书中未标明,但我认为似乎支持单个Hap的动态更新。
轻量化
元服务?小程序的另一个名字
用元服务取代应用,免下载安装,支持热更新------鸿蒙自己的小程序。
类似后端的中台 思想,将应用拆分为基础服务,例如ABC服务构成应用甲,BCD服务构成应用乙。简言之,将开发阶段的模块化后移到了应用阶段。
自由流转
跨端迁移和多端协同,保证任务流不中断。这也是我个人非常期待的一个功能,在不同地点、不同设备上无缝衔接,最典型的使用场景是云文档。
原生AI
原生智能,端侧AI实践,软硬协同。这部分介绍的不多。
鸿蒙学习路径
"核心三理念"是道,"赋能套件"是术,"开发套件"是器。
- 赋能套件:赋予开发者开发能力的套件集合,视频课程,Codelabs等
- 开发套件 :开发者实操工具箱
- 设计、开发、测试套件
- 运维套件
- OS开放能力集
OS开放能力集-方舟编译器(ArkCompiler)
- 编译期 :将
ArkTS/TS/JS
作为输入,编译成ABC(ArkCompiler Bytecode,方舟字节码)
文件。 - 运行时:运行字节码文件
开发者视角:语言与应用程序框架
ArkTS语言
鸿蒙生态应用使用ArkTS作为开发语言,后缀为.ets
(疑惑,为什么是ets
而非ats
),该框架基于声明式开发范式,具有简洁高效的优点。
- 渲染管线扁平化,利用语言增强特性
- 数据驱动UI(包含动效),最小化更新
Stage模型
鸿蒙系统上的应用模型称为Stage模型,用于定义和管理应用全生命周期。
Ability
Ability
是应用程序框架中最基本的完成独立功能的单位,可以类比Android SDK中的Application,但又不完全相同。
Ability
:类似Application,可分为:UIAbility
:是应用主入口,对应桌面图标,由多个ArkUI
页面(类似Activity
)组成ExtensionAbility
:有多个具体子类型,如FormExtension
、InputMethodExtensionAbility
等
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
)提供开放能力给开发者的应用/元服务调用。