> 文档中心 > OpenHarmony介绍

OpenHarmony介绍


 2022 CSDN OpenHarmony应用学习挑战赛火热报名中,平板电脑、智能手表、智能手环等你来拿!点击链接了解详情:2022CSDN Openharmony应用学习挑战赛(点我立即报名)

前言

        之前和一些市场朋友沟通,他们会有一些概念上的问题,比如OpenHarmony是不是等于HarmonyOS,鸿蒙究竟是不是传闻中的安卓套壳呢?本系列文章呢也是作为科普向文章,以我个人的理解带大家了解一些相关知识,从而调起大家自主学习的兴趣,共同学习进步。

一、OpenHarmony & Harmony OS

在这里插入图片描述
我们首先先来区分OpenHarmony和HarmonyOS两个概念。 

在这里插入图片描述

用通俗的话解释,OpenHarmony如果比喻成毛坯房,HarmonyOS就是华为基于这个毛坯作了精装修。这不意味谁好谁坏,因为如果我们作为手机厂商想要跟鸿蒙挂边,也就是打算按照自己风格装修,还要依照OpenHarmony重新开发一套系统。简而言之,华为开源的是“毛坯房” 

OpenHarmony,而不是内饰部分是鸿蒙内核+Aosp的HarmonyOS,因为HarmonyOS只开放基础核心架构,手机厂商是无法直接使用HarmonyOS的。而鸿蒙“套壳”的说法其实并不绝对,因为Aosp(AndroidOpen-SourceProject)不等于安卓系统,它是参与开发的Android信息和源代码的社区,Aosp不是安卓,通过谷歌认证并有GMS的才是安卓。目前用在智能手机上的HarmonyOS是鸿蒙内核+Aosp。

那或许有疑问为什么要学习OpenHarmony呢,因为我们终于在开源系统上有了自己的话语权。那么对于全中国乃至全世界的开发者,只有有意愿就可以基于OpenHarmony设计自己操作系统,这对整个鸿蒙生态的意义是非凡的。

了解完这几个关键词,大家是不是对OpenHarmony的好奇更多了呢,接下来我详细讲解下技术内容。

二、技术架构

在这里插入图片描述

学习鸿蒙体系,官方给出的这张技术架构图是重中之重,其他的很多内容都是基于这张图进行细分解释。它在架构层面采用的是分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件
这意味着OpenHarmony的伟大之处在于从架构开始,就把庞大的系统做了全线的拆解,让平板、手机、智能家居都可以通过建房子搭积木的方式来使用鸿蒙系统。这样一来,可穿戴设备和手机、平板和车机都可以实现万物互联。
而我们本次主要介绍的是系统基本能力子系统集的框架层,以及最上层的应用层。系统功能部分会主要介绍子系统和组件等概念。目的是为了从比较好入手的地方进行兴趣点的切入,像打怪升级一样进行学习。

1.内核层

我们先来看看相关概念,未来开启源码解析课程的时候,在去深入理解这块的内容。

内核子系统:采用多内核(Linux内核或者LiteOS)设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。

驱动子系统:驱动框架(HDF)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

2.系统服务层

系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:

系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。

基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。

增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。

硬件服务子系统集:提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。

根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。

3.框架层(重点)

框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的JS UI框架,以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,设备支持的API也会有所不同。
本次我们后续教程也会介绍下框架层的知识。

4.应用层(重点)

应用层包括系统应用和第三方非系统应用。应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。

那么本次我们学习的重点也是框架层和应用层,后续会通过案例进行更深层的理解

三、系统类型及特性

1.系统类型

轻量系统(mini system)

面向MCU类处理器例如Arm Cortex-M、RISC-V 32位的设备,硬件资源极其有限,支持的设备最小内存为128KiB,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的IOT总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。

小型系统(small system)

面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为1MiB,可以提供更高的安全能力、标准的图形框架、视频编解码的多媒体能力。可支撑的产品如智能家居领域的IP Camera、电子猫眼、路由器以及智慧出行域的行车记录仪等。

标准系统(standard system)

面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为128MiB,可以提供增强的交互能力、3D GPU以及硬件合成能力、更多控件以及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏。

2.特性(重点)

子系统

OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。子系统是一个逻辑概念,它具体由对应的组件构成。

组件

对子系统的进一步拆分,可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。

实际上简单来讲,组件的概念是一个最小可独立构建的复用单元,是一块积木。子系统是逻辑概念,用几个积木搭建起来的模块。系统是你用大楼积木堆,和树木积木堆等等组装起的小区场景。
对于我们来说,首先先以标准系统中的应用框架进行教学,掌握这块知识后,后续的学习成本也会降低。

三、OpenHarmony开发的两种类型

2.1 设备开发

设备开发主要是指的通过openharmony提供的源码(类库)+开发板进行硬件设备的开发,比如智能设备的对接及应用等。这里上手的学习成本比较高,非硬件或者无安卓开发相关经验的不好快速上手。后期会看具体情况开设课程进行教学。

2.2 应用开发(重点)

OpenHarmony采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了开发难度和成本。这能够让我们聚焦上层业务逻辑,更加便捷、高效地开发应用。这里我着重说明下HarmonyOS与

1、开发语言

HarmonyOS主要支持java和js来开发应用(当然还有c和c++),而OpenHarmony不支持java来开发应用。
目前阶段HarmonyOS里面还是有部分功能是基于AOSP的,因此还是要用java,而OpenHarmony不再使用java,应该是想彻底放弃AOSP了。

2、sdk的不同

应用开发工具都是统一使用华为的DevEco Studio,但是使用的sdk不同,开发前首先要切换sdk配置。虽然HarmonyOS和OpenHarmony都可以用js来开发应用,但是它们的api还是有些细微的区别,之前一些其他博主介绍的时候也说明了这里的差异,但是由于新版本DevEco Studio的一些特性,我们会使用用最新的引入方式并在该模块详细介绍,用最新信息学习我们的开发成本也会更小。

总结与课后作业

目前我们已经学习了一些基本概念,大家通过本文的【重点】部分进行学习与总结。按照社区要求进行发文,视为打卡成功。 明天我们一起来学习下ide DevEco studio 3.0 bate 版的环境配置和工程创建。