大师兄的鸿蒙学习笔记:对比HarmonyOs和Android系统

一. 与Android系统架构比对

1. HarmonyOs架构概览
  • HarmonyOs的架构分为内核层系统服务层应用框架层应用层
1.1 内核层
  • 内核层主要由内核子系统驱动子系统组成:

内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核,如:Linux Kernel, LiteOs等。
内核抽象层(KAL,KernelAbstract Layer):通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
驱动子系统:HarmonyOS驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

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

系统基本能力子系统集:为分布式应用在HarmonyOS多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全、AI等子系统组成。其中,方舟运行时提供了C/C++/JS多语言运行时和基础的系统类库,也为使用方舟编译器静态化的Java程序(即应用程序或框架层中使用Java语言开发的部分)提供运行时。
基础软件服务子系统集:为HarmonyOS提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX、MSDP&DV等子系统组成。
增强软件服务子系统集:为HarmonyOS提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
硬件服务子系统集:为HarmonyOS提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。

1.3 应用框架层
  • 应用框架层为HarmonyOS的应用程序提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架,以及各种软硬件服务对外开放的多语言框架API;
  • 应用框架层为采用HarmonyOS的设备提供了C/C++/JS等多语言的框架API,不同设备支持的API与系统的组件化裁剪程度相关。
1.4 应用层
  • 应用层包括系统应用和第三方非系统应用。
  • HarmonyOS的应用由一个或多个FA(Feature Ability)PA(Particle Ability)组成:

FA有UI界面,提供与用户交互的能力;
PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。

  • 基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
2. 与Android系统架构比对
2.1 架构不同
  • HarmonyOsAndroid系统都是基于Linux,但是HarmonyOs是基于微内核(Micro Kernel)架构设计,而Android系统是基于宏内核/单内核(Monolithic Kernel)架构设计:

微内核:内核管理着所有的系统资源,在微内核中用户服务和内核服务在不同的地址空间中实现。在应用程序和硬件的通信中,内核进程和内存管理的极小的服务,而客户端程序和运行在用户空间的服务通过消息的传递来建立通信,它们之间不会有直接的交互,这样一来,微内核中的执行速度相对就比较慢了,这是微内核架构的一个缺点。
在内核架构中,用户服务是独立于内核服务的,因此任何用户服务崩溃都不会影响到内核服务,这就加强了操作系统的健壮性,这是微内核的优势所在。另一点,微内核的扩展性强,添加一个功能,只需要建立一个新的服务到用户空间当中,而内核空间不需要任何的修改。因此,微内核可移植性强、安全并且易于扩展。

宏内核定义:宏内核同样管理着用户程序和硬件之间的系统资源,但是和微内核不一样的是,在宏内核架构中,用户服务和内核服务在同一空间中实现。具体一点,就是内核可以代表内核进程运行代码,就是通常的内核进程;当用户进程经过系统调用或者中断进入到内核态时,内核也可以代表它运行代码。这样一来,宏内核需要管理的资源多于微内核,其大小就相对大一些了。
在宏内核架构当中,内核管理着CPU调度,内存管理,文件管理和系统调用等各模块的的工作,由于用户服务和内核服务被实现在同一空间中,这样在执行速度上要比微内核快。然而,宏内核的劣势也是显而易见的,那就是当内核中的某个服务崩溃了,整个内核也会崩溃。另一点,想要在内核中添加新的功能就意味着内核中的各个模块需要做相应的修改,因此其扩展性很弱。

  • 总结微内核和宏内核的区别如下:
区别 微内核 宏内核
基本概念 用户服务和内核服务运行在不同的地址空间 用户服务和内核服务运行在相同的地址空间
执行速度
尺寸 较小 较大
可扩展性 易扩展 不易扩展
安全性 单个服务崩溃不影响全局 单个服务崩溃往往意味整个系统崩溃
开发量 开发量大 平台提供的代码多,相对开发量少
2.2 使用范围不同
  • 原生Android系统主要适用于手机。
  • HarmonyOs采用了分布式设计,可以支持手机、智能穿戴设备、电脑、电视等智能家居设备,形成一个无缝的、统一的操作系统。

二. 与Android系统工程结构比对

1. HarmonyOs的APP工程结构
  • HarmonyOS的应用软件包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个 HAP 属性的 pack.info 组成。
  • HAPAbility的部署包,HarmonyOS应用代码围绕Ability组件展开。一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entryfeature两种模块类型:

entry:应用的主模块。一个 APP 中,对于同一设备类型必须有且只有一个 entry类型的HAP,可独立安装运行。
feature:应用的动态特性模块。一个 APP 可以包含一个或多个 feature类型的HAP,也可以不含。

2. 与Android工程结构对比
  • HarmonyOS工程目录结构:
  • Android系统工程目录结构:
目录结构 Android HarmonyOS
源码目录 project\entry\src\main\java project\app\src\main\java
资源文件目录 project\app\src\main\res project\entry\src\main\resources
清单文件 project\app\src\main\AndroidManifest.xml project\entry\src\main\config.json
依赖文件目录 project\app\libs project\entry\libs
模块编译配置文件 project\app\build.gradle project\entry\build.gradle
gradle目录 project\gradle project\gradle
  • 此外,HarmonyOS还支持用JS开发:

三. 与Android安装包比对

  • Android应用最终会被打包成.apk文件。
  • HarmonyOS应用会被构建成.hap文件,hap是由代码、资源和第三方库及应用配置文件组成的模块包。
  • hap文件在被打包构建时会生成一个entry_signed_entry.apk文件,用于兼容Android系统
  • classes.dex文件与Android系统相同,对应HarmonyOS中Java部分的代码。
  • assets\entry\resources对应Android系统中的res目录,用于储存resources中的资产文件。
  • config.json对应Android系统中的AndroidosManifest.xml清单文件。

你可能感兴趣的:(大师兄的鸿蒙学习笔记:对比HarmonyOs和Android系统)