1 鸿蒙简介
首先我们得了解HarmoneyOS
和OpenHarmoney
有什么区别,下面是官方对它们的简述:
HarmonyOS
:鸿蒙系统(鸿蒙 OS)是一款"面向未来"、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS
提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备。OpenHarmony
:是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景
、全连接
、全智能时代
、基于开源的方式,搭建一个智能终端设备操作系统
的框架和平台,促进万物互联
产业的繁荣发展。
怎么理解呢?OpenHarmoney
是HarmoneyOS
的核心,HarmoneyOS
是基于OpenHarmoney
的扩展。
OpenHarmony
的地位相当于安卓
,HarmonyOS
就相当于基于安卓打造的EMUI
。华为开源OpenHarmony
,把它捐献出来,就是想所有厂商可以基于OpenHarmony
开发出像MIUI
、Color OS
等属于且适合厂商自己的操作系统。OpenHarmony
相当于是华为做的毛坯房,HarmonyOS
是基于这个毛坯房做的精装房,而且这个毛坯房谁都可以使用。HarmonyOS
拥有OpenHarmony
的所有优秀特质,又不同于OpenHarmony
,因为它拥有更多的功能和特性
。
而所谓的鸿蒙北向开发为应用开发
,南向开发为设备开发
。如下图所示:
2 鸿蒙系统架构
HarmonyOS
整体遵从分层设计,从下向上依次为:内核层
、系统服务层
、框架层
和应用层
。系统功能按照"系统
> 子系统
> 功能/模块
"逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。
2.1 内核层
内核子系统:HarmonyOS
采用多内核设计,支持针对不同资源受限设备选用适合的OS
内核。内核抽象层(KAL,KernelAbstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理
、内存管理
、文件系统
、网络管理
和外设管理
等。
驱动子系统:HarmonyOS驱动框架(HDF)
是HarmonyOS
硬件生态开放的基础,提供统一外设访问能力
和驱动开发、管理框架
。
2.2 系统服务层
系统服务层是HarmonyOS
的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:
- 系统基本能力子系统集 :为分布式应用在
HarmonyOS
多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全、AI等子系统组成。其中,方舟运行时提供了C/C++/JS多语言运行时和基础的系统类库,也为使用方舟编译器静态化的Java程序(即应用程序或框架层中使用Java语言开发的部分)提供运行时。 - 基础软件服务子系统集 :为
HarmonyOS
提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX、MSDP&DV等子系统组成。 - 增强软件服务子系统集 :为
HarmonyOS
提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。 - 硬件服务子系统集 :为
HarmonyOS
提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
2.3 框架层
框架层为HarmonyOS
的应用程序提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架,以及各种软硬件服务对外开放的多语言框架API;同时为采用HarmonyOS
的设备提供了C/C++/JS等多语言的框架API,不同设备支持的API与系统的组件化裁剪程度相关。
2.4 应用层
应用层包括系统应用
和第三方非系统应用
。HarmonyOS
的应用由一个或多个FA(Feature Ability)
或PA(Particle Ability)
组成。其中,FA有UI界面
,提供与用户交互的能力;而PA无UI界面
,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA
开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
3 鸿蒙开发工具
鸿蒙开发工具DevEco Studio
,HarmoneyOS官网上下载的是HarmoneyOS
的开发工具,而OpenHarmoney官网下载的版本一般会比HarmoneyOS
官网下载的新,因为OpenHarmoney
作为核心无论开发工具、api版本都是最先更新的,所以推荐使用OpenHarmoney官网下载DevEco Studio
4 鸿蒙开发语言
HarmonyOS
提供了支持多种开发语言的API
,供开发者进行应用开发。
- 以前版本支持:的开发语言包括
ArkTS
、C/C++
、JS(JavaScript)
、CSS(Cascading Style Sheets)
和HML(HarmonyOS Markup Language)
、Java
、XML(Extensible Markup Language)
。 - 鸿蒙3.0之后:开发语言主要支持
ArkTS
、JS
语言。Api9后主推Stage模型,使用ArkTS开发。
5 鸿蒙UI编程框架
HarmonyOS3.0
发布以来,华为官方开始主推ets+ArkUI
开发模式,逐渐抛弃Java
,为以后去安卓化做铺垫。编程框架用于帮助开发者构建跨设备应用,在OS架构上属于上层框架。框架组成部分有:开发模型
,声明式UI范式
,系统API
。
方舟开发框架(简称ArkUI
)是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具,帮助您提升HarmonyOS
应用界面开发效率30%。您只需使用一套ArkTS API
,就能在多个HarmonyOS
设备上提供生动而流畅的用户界面体验。
5.1 ArkUI架构
3.0之后主推基于 ArkTS 的声明式开发范式
5.2 声明式开发范式
- 应用界面是由一个个页面组成,
ArkTS
是由ArkUI
框架提供,用于以声明式开发范式开发界面的语言。 声明式UI
构建页面的过程,其实是组合组件的过程,声明式UI
的思想,主要体现在两个方面:
(1)描述UI的呈现结果,而不关心过程
(2)状态驱动视图更新