目录

1. 目录结构

2. 关键目录分析

2.1 应用applications

2.2 方舟编译器arkcompiler

2.3 基础库base

2.4 foundation子系统框架


本文梳理OpenHarmony源码目录结构,介绍重要目录包含的内容与作用 。OpenHarmony源码很多,模块也很多,先有个全局认识,再根据具体部分针对性学习。

1. 目录结构

 下面是结合源码目录对应的系统架构,整体包括:

  • 应用application层
  • 框架framework层
  • 内核驱动kernel/driver层
  • 硬件层
  • 还包括一些支撑的工具,编译脚本以及测试用例等

 如果做应用开发,更多关注应用层,无需深入底层framework。 Framework核心包括base、foundation等基础服务以及各核心子系统,如:显示子系统、通信子系统、多媒体子系统等。

图1 基于目录的系统架构

 下面针对源码目录来逐个分析主要目录:

图2 源码目录

下面是主要目录的解释,对于学习framework的,可以一起看看base以及foundation目录

图3  一级代码目录解释

2. 关键目录分析

2.1 应用applications

    applications主要存放用户的应用程序,以及OpenHarmony 预置的系统应用程序。

  Applications 包括:
          

  • sample  //示例应用,提供各种功能特性的演示和参考代码
  • standard //标准的应用程序,包括UI界面、后台服务、数据存储等

Standard包括:

       standard核心系统应用的集合,涵盖了从用户交互(Launcher、Settings)到安全隐私(Permission Manager、Security Center)、再到多媒体(Camera、Photos)、通信(Call、MMS)等多个方面。

  • admin_provisioning

管理员配置管理;用于设备初始化、企业级设备管理(如 MDM)、批量部署配置等。支持设备出厂设置、远程配置、策略下发等。

  • app_samples

应用示例模块。提供一些开发示例或模板应用,供开发者学习使用 OpenHarmony 的 API 和框架。通常不包含系统核心功能。

  • applications_cangjie_wrapper

仓颉输入法封装层。为仓颉输入法(OpenHarmony 官方输入法)提供对外接口封装,可能用于适配不同设备或 UI 框架。

  • auth_widget

身份验证小部件。实现生物识别(如指纹、人脸)或密码认证的 UI 组件,供其他应用调用进行身份验证。

  • calendardata

日历数据服务。负责日历事件的存储、同步与管理,可能是日历应用的数据后端模块。

  • call

电话拨号与通话功能。实现拨打电话、接听、通话记录等功能,属于系统级电话应用。

  • camera

相机应用。提供拍照、录像等基础相机功能,集成摄像头硬件驱动与图像处理逻辑。

  • contacts

联系人管理应用。展示和编辑用户联系人信息,支持导入导出、搜索等操作。

  • contacts_data

联系人数据存储与管理。负责联系人数据的持久化存储(如数据库)、同步(如云同步)及权限控制。

  • dlp_manager

数据防泄露管理(Data Loss Prevention)。防止敏感数据被非法复制、传输或外泄,常用于企业设备管理场景。

  • filepicker

文件选择器。提供一个通用的 UI 组件,允许用户从设备中选择文件,供其他应用调用。

  • hap

HAP(HarmonyOS Ability Package)相关工具或服务。可能涉及 HAP 包解析、安装、更新、签名验证等,属于系统包管理的一部分。

  • launcher

桌面启动器。系统的主界面,负责显示应用图标、桌面小组件、快捷方式等,是用户与系统交互的主要入口。

  • mms

彩信(Multimedia Messaging Service)。支持发送和接收包含图片、音频、视频等多媒体内容的短信。

  • notes

笔记应用。提供文本笔记记录功能,支持创建、编辑、分类、搜索笔记。

  • permission_manager

权限管理系统。负责应用权限申请、授权、状态查询等,确保隐私和安全。

  • photos

相册应用。展示设备中的照片和视频,支持浏览、编辑、分享、删除等操作。

  • printspooler

打印队列管理。管理打印任务的排队、发送、状态监控,支持无线打印等功能。

  • screenlock

屏幕锁定机制。实现锁屏界面(如密码锁、图案锁),保护设备安全。

  • screenshot

截屏服务。提供截屏功能,支持全屏、区域截图,并保存到相册。

  •  security_privacy_center

安全与隐私中心。集中管理设备的安全设置和隐私选项,如应用权限、数据加密、隐私保护策略等。

  • settings

系统设置主应用。提供系统级设置菜单,包括网络、声音、显示、电池、存储等配置项。

  • settings_data

设置数据存储。负责系统设置项的持久化存储,如用户偏好、配置参数等。

  • systemui

系统用户界面组件。包含状态栏、通知栏、导航栏等系统级 UI 元素,是系统视觉呈现的重要部分。

  • theme

主题管理。支持系统主题切换,包括壁纸、图标样式、颜色方案等个性化设置。

  • user_certificate_manager

用户证书管理。管理用户的数字证书(如 SSL 证书、身份证书),用于安全通信、身份认证等场景。

2.2 方舟编译器arkcompiler

它是方舟编译器核心模块,负责将高级语言(如 JavaScript、ETS 等)编译为高效可执行的中间表示(IR)或机器码,提升应用性能和运行效率

  • arkcompiler

编译器的核心逻辑和构建系统。作为整体编译器框架的组织结构,协调各子模块工作。实际开发中可能不会直接修改此目录内容,而是通过其下子模块实现具体功能。

  • cangjie_ark_interop

仓颉(Cangjie)与 Ark 编译器的互操作层。“仓颉”是 OpenHarmony 官方推出的编程语言(类 C++/Java 风格)此模块提供仓颉语言与 Ark 编译器之间的接口桥接,使仓颉代码可以被 Ark 编译器处理、优化并生成目标代码。实现了从仓颉语法树到 Ark IR 的转换支持。

  •  ets_frontend

ETS(eTS, Enhanced TypeScript)前端解析器。ETS 是 OpenHarmony 推荐的 UI 开发语言,基于 TypeScript 扩展而来。该模块负责解析 ETS 源码,进行词法分析、语法分析,生成抽象语法树(AST),是 ETS 编程语言进入编译流程的第一步。

  • ets_runtime

ETS 运行时支持库。提供 ETS 应用在设备上运行所需的运行环境。包括内存管理、对象模型、异常处理、垃圾回收机制等。支持 ETS 中的异步编程、组件生命周期管理等功能。与 JSVM 和 runtime_core 协同工作。

  •  jsvm

JavaScript 虚拟机(JS VM)。实现对 JavaScript 和 ETS 的解释执行能力。基于自研的虚拟机架构,支持动态类型、函数调用、闭包等特性。可能集成了 JIT(即时编译)或 AOT(预编译)技术以提升性能。支持 HarmonyOS Ability 的 JS/ETS 代码执行。

  • runtime_core

运行时核心模块。是整个 Ark Compiler 的运行时基础,提供通用的运行时服务。

                   包括:内存分配与管理、类加载机制、方法调度(Method Invocation)、异常处理框架、线程模型

  • toolchain

工具链模块。包含编译器使用的各种工具程序,例如:编译器驱动、汇编器、链接器、二进制格式生成器(如 .hap 文件打包工具)、优化工具(如 profile-guided optimization)。提供命令行接口,供开发者调用编译流程,支持跨平台编译(ARM、x86、RISC-V 等)。

2.3 基础库base

基础服务层(Base Services) 的核心组成部分,它提供了操作系统运行所依赖的底层能力、通用框架和系统级服务。这些模块通常不直接面向用户,而是为上层应用和服务提供支撑;

图4 base目录各功能目录

  • accesscontrol

访问控制管理。实现权限检查与策略执行机制。控制应用对敏感资源(如相机、位置、联系人)的访问权限。

  • account

账户管理系统。管理本地和远程用户账户(如华为账号、第三方账号)。支持多用户切换、账户同步、身份认证等功能。提供统一的身份标识接口。

  • customization

系统定制化支持。允许厂商或运营商对系统进行个性化配置(如品牌Logo、启动画面、默认应用等)。提供接口用于动态加载定制内容。

  • global

全局系统服务与配置。包含系统级别的公共组件、常量定义、全局状态管理。

  • hiviewdfx

HiView DFX(Diagnosis, Fault Finding, and Experience)。提供系统诊断、日志收集、性能监控和异常分析工具。支持崩溃报告、卡顿检测、内存泄漏分析等。是 OpenHarmony 的“健康监测”系统。

  • inputmethod

输入法框架。提供软键盘输入的支持,包括中文输入、语音输入、手写识别等。支持多种输入方式的插件化接入。

  • iothardware

物联网硬件抽象层。面向 IoT 设备的硬件驱动封装(如传感器、执行器、通信模块)。提供统一接口供上层应用调用,实现“一次开发,多端部署”。

  • location

位置服务。提供 GPS、Wi-Fi 定位、基站定位等能力。支持高精度定位、地理围栏、位置更新订阅。

  • msdp

Multi-Device Service Protocol(多设备服务协议)。实现设备间的数据传输与服务协同。支持跨设备文件同步、任务迁移、设备发现等。

  • notification

通知中心服务。管理来自应用的通知消息(如来电、短信、应用提醒)。提供通知显示、声音、震动、优先级设置等功能。

  • powermgr

电源管理。控制设备的功耗行为,如屏幕亮度调节、休眠唤醒、CPU 节能模式。

  •  print

打印服务。提供文档打印、PDF 输出、无线打印(如蓝牙/网络打印机)支持。

  • request

请求管理服务。处理系统内部的异步请求调度,如定时任务、事件回调、服务调用。

  • security

安全框架。提供加密算法、数字证书、密钥管理、安全存储等基础安全能力;是 user_certificate_manager 和 tee 的底层支撑。

  •  sensors

传感器服务。管理各类传感器(加速度计、陀螺仪、光线、接近、气压等)。提供传感器数据采集、滤波、事件分发。

  • startup

系统启动流程。负责系统开机后的初始化顺序,如加载关键服务、启动守护进程。包括引导程序、系统服务注册、依赖关系解析。

  • tee

可信执行环境(Trusted Execution Environment)。提供一个隔离的安全区域,用于执行敏感操作(如生物识别、支付验证)。

  • telephony

电话通信服务。实现蜂窝网络相关的功能:拨号、通话、短信、SIM 卡管理、信号强度查询等。

  • theme

主题服务。管理系统主题(颜色、字体、图标风格)的切换与应用。与 systemui 和 settings 协作。

  • time

时间服务。管理系统时间和时区设置。提供时间戳生成、闹钟、定时器等接口。

  •  update

系统更新服务。支持 OTA(Over-The-Air)升级、差分包安装、回滚机制。提供版本校验、下载进度、安装调度等功能。

  • usb

USB 服务。管理 USB 设备连接、枚举、通信协议(如 MTP、ADB、充电模式)。

  • useriam

用户身份与访问管理(User Identity and Access Management)。管理用户身份信息、登录凭证、会话状态。与 account 和 security 协同。

  •  web

Web 浏览器相关服务。提供 WebKit 或自研浏览器内核的集成支持。支持网页渲染、JavaScript 执行、网络请求等。

2.4 foundation子系统框架

     系统基础框架层(Foundation Framework) 的核心部分,它提供了操作系统运行所需的通用能力、分布式架构支持和核心服务。它是“能力底座”,支撑上层应用和服务的开发与运行。

图5 foundation下各功能目录

  • ability

Ability(能力)框架。实现 OpenHarmony 的核心应用模型——Ability(包括 FA 和 PA)。管理 Ability 的生命周期、启动、调度、数据传递。支持跨设备调用 Ability(分布式能力)。

  • ai

人工智能(AI)框架。提供 AI 推理引擎、模型加载、神经网络计算支持。支持轻量级 AI 模型(如 TensorFlow Lite、ONNX)在边缘设备上的部署。

  • arkui

ArkUI 框架(声明式 UI 框架)。是 OpenHarmony 官方推荐的 UI 开发框架,基于 ETS/JS。提供组件化 UI 构建能力(如 Button、List、Text)。

  • barrierfree

无障碍访问(Accessibility)。为视障、听障等用户提供辅助功能支持。包括屏幕朗读、手势导航、高对比度模式等。提供 API 供开发者实现无障碍兼容。

  • bundlemanager

应用包管理器。负责 HAP(HarmonyOS Ability Package)的安装、卸载、更新、签名验证。管理应用元数据(如权限、依赖)、版本控制。

  • CastEngine

投屏引擎。实现设备间的无线投屏(如手机投电视、平板投显示器)。支持 Miracast、DLNA、AirPlay 等协议。提供音视频流传输、画面同步、延迟优化。

  • communication

通信框架。提供进程间通信(IPC)、消息传递、事件总线等机制。支持本地与远程服务之间的数据交换,是 Ability 之间通信的核心通道。

  • deviceprofile

设备配置档案。存储设备的硬件信息、软件版本、功能特性(如是否支持 NFC、蓝牙)。用于判断设备能力,实现“按需加载”或“兼容性适配”。

  • distributeddatamgr

分布式数据管理。实现跨设备的数据同步与共享(如联系人、日历、文件)。提供统一的数据访问接口,屏蔽底层存储差异。

  • distributedhardware

分布式硬件管理。实现设备间硬件资源共享(如手机摄像头给平板用、耳机共享)。管理硬件连接、权限分配、状态同步。

  • filemanagement

文件管理系统。提供文件的创建、读写、删除、复制、移动等操作。提供安全访问控制(如权限检查)。

  • graphic

图形系统。提供 2D/3D 渲染引擎、Surface 管理、GPU 加速支持。支持 OpenGL ES、Vulkan、Skia 等图形 API。是 UI 绘制、动画、视频播放的基础。

  • multimedia

多媒体框架。支持音频、视频编解码、播放、录制、编辑。提供媒体源管理、音效处理、混音、DRM(数字版权管理)。

  • multimodalinput

多模态输入。集成多种用户输入方式:语音、手势、触控、视觉、体感等。

  • resourceschedule

资源调度管理。管理 CPU、内存、网络、I/O 等系统资源的分配与调度。实现优先级策略、负载均衡、节能优化。

  • systemabilitymgr

系统 Ability 管理器。管理系统级 Ability(如设置、通知中心、权限管理),负责系统服务的注册、启动、生命周期控制,是系统服务的“总调度中心”。

  • window

窗口管理。管理应用窗口的创建、显示、隐藏、层级关系、动画效果。支持悬浮窗、全屏、分屏、自由拖拽等。提供窗口属性控制(透明度、大小、位置)。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐