type
status
date
slug
summary
tags
category
icon
password

OpenHarmony技术架构

notion image
以4为核心,辅助2+3+5部分
  • OS内核
  • HDF:统一驱动框架
  • 标准系统最小运行内存:128M
 

DevEco Studio开发工具


1.DevEco Studio基本特性

  • 多设备统一开发环境
  • 支持多语言的代码开发和调试
  • 支持FA/PA快速开发
  • 支持分布式多端应用开发
  • 支持应用开发UI实时预览

2.OpenHarmony应用开发流程

 

OpenHarmony应用开发


1.移动应用概念

移动应用从本质上来说,也是一种应用软件,因此其遵循和PC上软件一样的开发过程,也是经历代码编写、代码编译、代码调试运行,到代码发布的阶段。但其开发和运行处于不同的主机。
notion image

2.移动应用的组成

(1)APP

OpenHarmony的应用软件以APP Pack(Application Package)形式发布,它是由一个或多个HAP(OpenHarmony Ability Package)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包,OpenHarmony应用代码围绕Ability组件展开。

(2)APP包组成

一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模型类型。
  • entry:应用的主模块。一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。
  • feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不包含。只有包含Ability的HAP才能够独立运行。
HAP是由一个或多个Ability组成。
notion image

(3)Module结构

在开发态,一个应用包含一个或者多个Module,可以在DevEco Studio工程中创建一个或者多个Module。Module是OpenHarmony应用/服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/服务配置文件,每一个Module都可以独立进行编译和运行。
Module分为Ability和Library两种类型
  • Ability类型的Module对于编译后的HAP
  • Library类型的Module对于编译后的HAR或者HSP
notion image

(4)Ability

Ability是应用所具备的能力的抽象,一个应用可以包含一个或者多个Ability。Ability分类两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。
  • FA有UI界面,而PA无UI界面。
库文件是应用依赖的第三方代码,存放在libs目录中。
配置文件(module.json5)包含在应用中Ability的配置信息,用于声明应用的Ability,以及应用所需权限等信息。

(5)pack.info

描述应用软件包中每个HAP的属性,有IDE编译生成。HAP的具体属性包括:
  • divery-with-install:表示该HAP是否支持随应用安装。“true”表示支持随应用安装;“false”表示不支持随应用安装。
  • name:HAP文件名。
  • module-type:模块类型,entry或者feature。
  • device-type:表示支持该HAP运行的设备类型。

(6)共享包

OpenHarmony提供了两种共享包,HAR(Harmony Archive)静态共享包和HSP(Harmony Shared Package)动态共享包。
HAR与HSP都是为了实现代码和资源的共享,都可以包含代码、C++库、资源和配置文件,最大的不同之处在于:HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的变异产物中会存在多份相同拷贝;而HSP中的代码和资源可以级独立编译,运行时在一个进程中代码也只会存在一份。
notion image

(7)资源分类与访问

应用开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同设备或者配置中,这些资源的值可能不同。
  • 应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同的设备或配置中的表现。
    • 应用资源文件(字符串、图片、音频等):统一存放于resources目录下,便于开发者使用和维护。resourse目录包括base目录与限定词目录。
  • 系统资源:开发者直接使用系统预置的资源定义(即分层参数,统一资源ID在设备类型、深浅色等不同配置下有不同的取值)。

(8)配置文件

每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向变异工具、操作系统和应用市场提供应用的基本信息。
在基于Stage模型开发的应用项目代码下,都存在一个app.json5及一个或多个module.json5这两种配置文件。
app.json5主要包含以下内容:
  • 应用的全局配置信息,包含应用的包名、开发厂商、版本号等基本信息。
  • 特定设备类型的配置信息。
module.json5这主要包含以下内容:
  • Module的基本配置信息,例如Module名称、类型、描述、支持的设备类型等基本信息。
  • 应用组件信息,包含UIAbility组件和ExtensionAbility组件的描述信息。
  • 应用运行过程中所需的权限信息。

3.应用模型

应用模型师OpenHarmony为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单且高效。

(1)应用组件——应用模型的最重要的部分

应用组件是应用的基本组成单位(UIAbility和ExtensionAbility),是应用的运行入口。用户启动、使用和退出应用过程中,应用组件会在不同状态间切换,这些状态称为应用组件的生命周期。应用组件提供生命周期的回调函数,开发者通过应用组件的生命周期回调感知应用的状态变化。应用开发者在编写应用时,首先需要编写的就是应用组件,同时还需要编写应用组件的生命周期回调函数,并在应用配置文件中配置相关信息。这样,操作系统在运行期间通过配置文件创建应用组件的实例,并调度它的生命周期回调函数,从而执行开发者的代码。

(2)应用进程和线程

  • 应用进程模型:应用进程模型定义应用进程的创建和销毁方式,以及进程间的通信方式。
  • 应用线程模型:应用线程模型定义应用进程内线程的创建和销毁方式、主线程和UI线程的创建方式、线程间的通信方式。
  • 应用任务管理模型:应用任务管理模型定义任务(Mission)的创建和销毁方式,以及任务与组件间的关系。
notion image
  • C,由B推出C错误

(3)OpenHarmony的进程模型

  • 应用中(同一包名)的所有UIAbility、ServiceExtensionAbility运行在同一个独立进程中。
  • WebView拥有独立的渲染进程
基于OpenHarmony的进程模型,系统中应用间和应用内都会存在多个进程的情况,因此系统提供了乳腺癌两种进程间通信机制。
  • 公共事件机制:多用于一对多的通信场景,公共事件发布者可能存在多个订阅者同时接受事件。
  • 后台服务机制:当前主要通过ServiceExtensionAbility的能力实现。

(4)Stage模型

HarmonyOS 3.1 Developer Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。
(1)Stage模型特性
  • 为复杂应用而设计
    • 多个应用组件共享同一个ArkTS引擎(运行ArkTS语言的虚拟机)实例,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。
    • 采用面向对象的开发方式,使得复杂应用代码可读性高、易维护性好、可扩展性强。
  • 原生支持应用组件级的跨端迁移和多端协同:Stage模型实现了应用组件与UI解耦。UI和应用组件都可以独立实现分布式的交互能力,实现UI的流转和组件分布式的交互。
    • 跨端迁移场景下,系统在多设备的应用组件之间迁移数据/状态后,UI便可利用ArkUI的声明式特点,通过应用组件中保存的数据/状态恢复用户界面,便携实现跨端迁移。
    • 多端协同场景下,应用组件具备组件间通信的RPC调用能力,天然支持跨设备应用组件的交互。
  • 支持多设备和多窗口形态
    • 应用组件管理和窗口管理在架构层面解耦:
    • 便于系统对应用组件进行裁剪(无屏设备可裁剪窗口)。
    • 便于系统扩展窗口形态。
    • 在多设备(如桌面设备和移动设备)上,应用组件可使用同一套生命周期。
  • 平衡应用能力和系统管控成本
    • Stage模型重新定义应用能力的边界,平衡应用能力和系统管控成本。
    • 提供特定场景(如卡片、输入法)的应用组件,以便满足更多的使用场景。
    • 规范化后台进程管理:为保障用户体验,Stage模型对后台应用进程进行了有序治理,应用程序不能随意驻留在后台,同时应用后台行为受到严格管理,防止恶意应用行为。
notion image

4.事件通知(开发—>通知—>通知概述)

(1)通知简介

应用可以通过通知接口发送通知消息,终端用户可以通过通知栏查看通知内容,也可以点击通知来打开应用。
通知常见的使用场景:
  • 显示接收到的短消息、即时消息等。
  • 显示应用的推送消息,如广告、版本更新等。
  • 显示当前正在进行的事件,如下载等。
HarmonyOS通过ANS(Advanced Notification Service,通知系统服务)对通知类型的消息进行管理,支持多种通知类型,如基础类型通知、进度条类型通知。

(2)通知业务流程

通知业务流程由通知子系统通知发送端(用户)、通知订阅端(操作系统)组成。一条通知从通知发送端产生,通过IPC通信发送到通知子系统,再由通知子系统分发给通知订阅端。
  • 通知发送端:可以是三方应用或系统应用。开发者重点关注。
  • 通知订阅端:只能为系统应用,比如通知中心。通知中心默认会订阅手机上所有应用对当前用户的通知。开发者无需关注。

5.文件(开发—>文件管理—>文件管理概述)

(1)文件存储

在文件管理模块中,按文件所有者的不同,有如下文件分类模型,其示意图如下面文件分类模型示意图:
  • 应用文件文件所有者为应用,包括应用安装文件、应用资源文件、应用缓存文件等。
  • 用户文件文件所有者为登录到该终端设备的用户,包括用户私有的图片、视频、音频、文档等。
  • 系统文件:与应用和用户无关的其他文件,包括公共库、设备文件、系统资源文件等。这类文件不需要开发者进行文件管理,本文不展开介绍。
notion image

(2)应用文件

应用文件:文件所有者为应用,包括应用安装文件、应用资源文件、应用缓存文件等。
  • 设备上应用所使用及存储的数据,以文件、键值对、数据库等形式保存在一个应用专属的目录内。该专属目录我们称为“应用文件目录”,该目录下所有数据以不同的文件格式存放,这些文件即应用文件。
  • “应用文件目录”与一部分系统文件(应用运行必须使用的系统文件)所在的目录组成了一个集合,该集合称为“应用沙箱目录”,代表应用可见的所有目录范围。因此“应用文件目录”是在“应用沙箱目录”内的。
  • 系统文件及其目录对于应用是只读的;应用仅能保存文件到“应用文件目录”下,根据目录的使用规范和注意事项来选择将数据保存到不同的子目录中。

(2)应用沙箱目录

应用沙箱是一种以安全防护为目的的隔离机制,避免数据受到恶意路径穿越访问。在这种沙箱的保护机制下,应用可见的目录范围即为“应用沙箱目录”。
  • 对于每个应用,系统会在内部存储空间映射出一个专属的“应用沙箱目录”,它是“应用文件目录”与一部分系统文件(应用运行必需的少量系统文件)所在的目录组成的集合。
  • 应用沙箱限制了应用可见的数据的最小范围。在“应用沙箱目录”中,应用仅能看到自己的应用文件以及少量的系统文件(应用运行必需的少量系统文件)。因此,本应用的文件也不为其他应用可见,从而保护了应用文件的安全。
  • 应用可以在“应用文件目录”下保存和处理自己的应用文件;系统文件及其目录对于应用是只读的;而应用若需访问用户文件,则需要通过特定API同时经过用户的相应授权才能进行。
notion image
在应用沙箱保护机制下,应用无法获知除自身应用文件目录之外的其他应用或用户的数据目录位置及存在。同时,所有应用的目录可见范围均经过权限隔离与文件路径挂载隔离,形成了独立的路径视图,屏蔽了实际物理路径:
  • 如下图所示,在普通应用(也称三方应用)视角下,不仅可见的目录与文件数量限制到了最小范围,并且可见的目录与文件路径也与系统进程等其他进程看到的不同。我们将普通应用视角下看到的“应用沙箱目录”下某个文件或某个具体目录的路径,称为“应用沙箱路径”。

(4)分布式文件服务

分布式文件服务能够为用户设备中的应用程序提供多设备之间的文件共享能力,支持相同账号下同一应用文件的跨设备访问,应用程序可以不感知文件所在的存储设备,能够在多个涉笔之间无缝获取文件。
分布式文件:分布式文件是指依赖于分布式文件系统,分散存储在多个用户设备上的文件,应用间的分布式文件目录相互隔离,不同应用的文件不能互相访问。
运作机制:
notion image

6.传感器与媒体

(1)工作原理:运作机制

HarmonyOS传感器包含如下四个模块:Sensor API、Sensor Framework、Sensor Service和HDF层。
  • Sensor API:提供传感器的基础API,主要包含查询传感器列表,订阅/取消传感器的数据、执行控制命令等,简化应用开发。
  • Sensor Framework:主要实现传感器的订阅管理,数据通道的创建、销毁、订阅与取消订阅,实现与SensorService的通信。
  • Sensor Service:主要实现HD_IDL层数据接收、解析、分发,前后台的策略管控,对该设备Sensor的管理,Sensor权限管控等。
  • HDF层:对不同Sensor的数据采集方式【如FIFO】和采集频率进行策略选择,以及适配不同设备。
notion image

(2)普通传感器调用

权限配置:如果设备上使用了传感器权限列表中的传感器,需要请求相应的权限,开发者才能获取到传感器数据。
  • 开发者需要再module.json5里面配置权限。
注册监听:
  • 通过on()接口,实现对传感器的持续监听
  • 通过once()接口,实现对传感器的一次监听

(3)媒体访问和播放

媒体系统提供用户视觉、听觉信息的处理能力,如音视频信息的采集、压缩存储、解压播放等。在操作系统实现中,通常基于不同的媒体信息处理内容,将媒体划分为不同的模块,包括:音频、视频(也称播放录制)、图片等。
notion image
AVPlayer——音频播放
notion image
AVPlayer——视频播放
notion image
AVPlayer——音频格式
notion image
AVPlayer——视频格式
notion image
AVRecorder支持的输出格式
notion image
音频播放
播放的全流程包含:创建AVPlayer,设置播放资源,设置播放参数(音量/倍速/焦点模式),播放控制(播放/暂停/跳转/停止),重置,销毁资源。
在进行应用开发的过程中,开发者可以通过AVPlayer的state属性主动获取当前状态或使用on('stateChange')方法监听状态变化。
notion image
音视频播控服务(5.0新版里才有)
AVSession Kit(Audio & Video Session Kit,音视频播控服务)是系统提供的音视频管控服务,用于统一管理系统中所有音视频行为,帮助开发者快速构建音视频统一展示和控制能力。
  • 提供音视频统一管控能力,音视频类应用接入AVSession后,可以发送应用的数据(比如正在播放的歌曲、歌曲的播放状态等),用户可以通过系统播控中心、语音助手等应用切换多个应用、多个设备播放。
  • 提供音频后台约束能力,音频接入AVSession后,可以进行后台音频播放。此功能需要同时申请后台任务。
 
OpenHarmony文件管理ArkTS
Loading...
Koreyoshi
Koreyoshi
一个无可救药的乐观主义者
Latest posts
软件测试:集成测试
2025-3-25
软件测试:控制流测试
2025-3-25
软件测试:系统测试
2025-3-25
软件测试:数据流测试
2025-3-25
软件测试:测试驱动开发
2025-3-25
软件工程:面向对象的概念和记号
2025-3-24
Announcement
🎉写给自己的2025心愿🎉
保研
国奖
完善博客
学一门乐器
发表一篇论文
拍摄人生照片
去3个城市旅游
专业课知识视频
拍摄毕业季视频
----- 2025 ------
👏希望我们一起变好👏