【OpenHarmony-v3.2代码分析】01 - 代码目录分析

本文档将深入分析OpenHarmony v3.2的代码目录,为开发者提供代码结构的理解。首先,提供了代码获取链接,包括V3.2 Release版和其他版本。此外,还列举了开发者网站和gitee资源,方便进一步学习。接着,文章将探讨每个目录的功能,帮助开发者了解OpenHarmony系统的组织架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【OpenHarmony-v3.2代码分析】01 - 【OpenHarmony-v3.2代码分析】01 - 代码目录分析

OpenHarmony-v3.2代码获取链接:《code-v3.2-Release.tar.gz
OpenHarmony其他版本代码获取链接:https://repo.huaweicloud.com/harmonyos/os/
开发者网站:https://developer.harmonyos.com/
gitee网站:https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Release/zh-cn/device-dev/quick-start/Readme-CN.md
子系统介绍:https://gitee.com/openharmony/docs/tree/master/zh-cn/readme

从今天开始,我们正式进入OpenHarmony V3.2的代码分析,
在分析代码前,先来看看代码结构,看看每个目录大概作用是什么?

$ tree -L 3 OpenHarmony
OpenHarmony
├── applications		// 内置的示例应用程序	
│   ├── sample			// 小型系统的示例应用程序,包含 CameraApp相机,wifi,gallery图库,launcher桌面,media拍照录像和音视频播放等
│   └── standard		// 标准系统的示例应用程序,如Camera摄像头、Call通话、Contacts联系人,photos图像等
├── arkcompiler			// 方舟编译器
│   ├── ets_frontend	// 方舟运行时子系统的前端工具,结合ace-ets2bundle组件,支持将ets文件转换为方舟字节码文件。
│   ├── ets_runtime		// OpenHarmony 上默认的ArkTS语言Runtime
│   ├── runtime_core	// 方舟编译器Runtime 公共组件
│   └── toolchain		// 方舟工具链, 一套OpenHarmony应用程序调试调优工具,其功能包括单步调试、断点调试、Watch变量及表达式、CPU Profiler和Heap Profiler等,并支持多实例和Worker调试
├── base				// 基础软件服务子系统集和硬件服务子系统集,可根据需要进行裁剪。
│   ├── account			// 在标准系统上,帐号子系统主要提供系统帐号生命周期管理,分布式帐号登录状态管理和应用帐号添加删除等基础管理能力。
│   ├── customization	// 配置策略组,企业设备管理组件EDM
│   ├── global			// 全球化子系统,提供多语言支持,多文化的资源管理,以及国际化能力
│   ├── hiviewdfx		// DFX框架子系统,提供日志和系统事件的打印,输出功能
│   ├── inputmethod		// 输入法框架,主要作用是拉通应用和输入法,保证应用可以通过输入法进行文本输入
│   ├── iothardware		// IOT(The Internet of Things)硬件设备操作的接口,提供设备操作接口有:FLASH,GPIO,I2C,PWM,UART,WATCHDOG等
│   ├── location		// 位置服务组件
│   ├── msdp			// MSDP设备状态感知框架能够识别出目前设备的状态并传递给订阅者,整个框架是基于MSDP算法库和系统SensorHDI组件组成的
│   ├── notification	
│   │   ├── common_event_service			 // 通过CES(Common Event Service)为应用程序提供订阅、发布、退订公共事件的能力
│   │   ├── distributed_notification_service // 通过ANS(Advanced Notification Service,通知系统服务)对通知类型的消息进行管理,支持多种通知类型,包括文本,长文本,多文本,图片,社交,媒体等。所有系统服务以及应用都可以通过通知接口发送通知消息,用户可以通过SystemUI查看所有通知消息。
│   │   └── eventhandler // 提供了OpenHarmony线程间通信的基本能力,可以通过EventRunner创建新线程,将耗时的操作抛到新线程上执行,从而实现在不阻塞原来的线程的基础上合理地处理耗时任务
│   ├── powermgr		// 电源管理服务子系统,提供系统各模块的电源状态管理等接口
│   ├── request			// 向三方应用提供文件下载/上传能力,以支撑应用开发者方便、高效地使用下载/上传业务的功能
│   ├── security		// 安全子系统,提供系统安全,数据安全,应用安全等能力
│   ├── sensors			// 传感器服务子系统,提供轻量级传感器服务基础框架
│   ├── startup			// 启动恢复子系统,负责在内核启动之后,到应用启动之前的系统关键进程和服务的启动过程,并提供系统属性查询,修改及设备恢复出厂设置的功能
│   ├── telephony		// 电话服务子系统,提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息。应用可以通过调用API来获取当前注册网络名称、网络服务状态、信号强度以及SIM卡的相关信息
│   ├── theme			// 锁屏管理服务是OpenHarmony中系统服务,为锁屏应用提供注册亮屏、灭屏、开启屏幕、结束休眠、退出动画、请求解锁结果监听,并提供回调结果给锁屏应用。锁屏管理服务向三方应用提供请求解锁、查询锁屏状态、查询是否设置锁屏密码的能力
│   ├── time			// 提供管理系统时间时区和定时的能力,支持设置获取时间、日期、时区和系统定时器功能
│   ├── update			// OpenHarmony升级子系统用来支持OpenHarmony设备的OTA(Over The Air)升级
│   ├── usb				// Usb设备作为host设备连接device设备进行数据传输
│   ├── useriam			// 人脸认证 (faceauth)支持用户人脸的录入,删除和认证功能
│   └── web				// nweb是OpenHarmony webview组件的Native引擎,基于Chromium和CEF构建
├── build				// 编译构建子系统提供了一个基于Gn和ninja的编译构建框架。
├── build.py -> build/lite/build.py
├── build.sh -> build/build_scripts/build.sh
├── commonlibrary
│   ├── c_utils			// C++公共基础类库为标准系统提供了一些常用的C++开发工具类
│   ├── ets_utils		// ets_utils组件共提供四个子模块,分别是:js_api_module、js_util_module、js_sys_module和js_worker_module
│   ├── memory_utils	// 内存基础库部件位于公共基础库子系统中,为上层业务提供对应的操作内存的系统库,保证上层业务的稳定性。
│   └── utils_lite		// 轻量级公共基础库存放OpenHarmony通用的基础组件。这些基础组件可被OpenHarmony各业务子系统及上层应用所使用
├── developtools		// 常用开发工具集合
│   ├── ace_ets2bundle	// 提供声明式范式的语法编译转换,语法验证,丰富友好的语法报错提示能力。
│   ├── ace_js2bundle	// 提供类Web范式的语法编译转换、语法验证,丰富友好的语法报错提示。
│   ├── bytrace			// bytrace是开发人员用于追踪进程轨迹、查看性能的一种工具,主要对内核ftrace进行了封装和扩展,来支持用户态的打点
│   ├── global_resource_tool	// OpenHarmony资源编译工具, 资源编译工具属于PC端工具,在OpenHarmony SDK中toolchain目录下,提供给IDE使用,支持Windows, Linux, MacOS平台。
│   ├── hapsigner		// Hap包签名工具, 为了保证OpenHarmony应用的完整性和来源可靠,在应用构建时需要对应用进行签名。经过签名的应用才能在真机设备上安装、运行、和调试。本仓提供了签名工具的源码,包含密钥对生成、CSR文件生成、证书生成、Profile文件签名、Hap包签名等功能。
│   ├── hdc				//  HDC-OpenHarmony设备连接器, 为开发人员提供的用于设备连接调试的命令行工具,pc端开发机使用命令行工具hdc,该工具需支持部署在Windows/Linux/Mac等系统上与OpenHarmony设备(或模拟器)进行连接调试通信。
│   ├── hiperf			// hiperf 应用性能优化剖析组件, 为开发人员提供的用于调试的命令行工具,用于抓取特定程序或者系统的性能数据,类似内核的 perf 工具
│   ├── integration_verification	// 集成验证部件,集成验证包含门禁冒烟和每日构建两个功能:门禁冒烟对开发者的提交进行基本功能、部件功能和按场景的端到端测试;每日构建定时取master和release分支代码进行版本归档、全量TDD测试、最小系统测试和部件化的架构看护检查。
│   ├── packing_tool	// 打包拆包工具使用说明, packing_tool子系统用于生成打包工具和拆包工具,其中打包工具用于hap,app,hqf,appqf,har包的生成,拆包工具用于对hap,app,hqf,appqf,har包的拆包及对hap,app,appqf的解析。
│   ├── profiler		// 性能调优组件,包含系统和应用调优框架,旨在为开发者提供一套性能调优平台,可以用来分析内存、性能等问题。
│   └── syscap_codec	// 系统能力编解码工具, 提供PCID编解码、RPCID编解码、编码字符串、PCID与RPCID比较
├── device				// 设备开发
│   ├── board			// HiHope、上海海思芯片的开发板相关内容, 目前支持运行轻量系统、小型系统和标准系统的多款开发板,覆盖智慧视觉、智慧媒体、智慧IOT等多个领域
│   ├── qemu			// Quick Emulator, 可以模拟内核运行在不同的单板,解除对物理开发板的依赖。
│   └── soc				// 本仓用于存放上海海思芯片、瑞芯微相关内容,包含HDI实现(media、display、camera、codec、audio、ai等)、芯片驱动、外设驱动、芯片SDK库和头文件等,
├── docs				// OpenHarmony文档仓库
│   ├── docker			// OpenHarmony的Docker编译环境使用指导
├── drivers				// OpenHarmony驱动子系统采用C面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
│   ├── hdf_core		// 存放OpenHarmony驱动子系统核心源码信息(包括驱动框架、配置管理、配置解析、驱动通用框架模型、硬件通用平台能力接口等),旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
│   │   ├── adapter		//包含所有LiteOS-M和LiteOS-A内核以及用户态接口库等相关适配代码以及编译脚本。
│   │   │   ├── khdf	//提供驱动框架对LiteOS-A、Linux、LiteOS-M内核依赖适配
│   │   │   ├── platform// 平台基础驱动实现,如can、gpio、i2c、mipi_dsi、pwm、spi、uart、watchdog		
│   │   │   ├── uhdf	//提供用户态驱动接口对系统依赖适配
│   │   │   └── uhdf2	//提供用户态驱动框架对系统依赖适配
│   │   ├── figures
│   │   │   └── architecture-of-the-hdf.png	// HDF系统框架图
│   │   └── framework		//HDF框架、平台驱动框架、驱动模型等平台无关化的公共框架。	
│   │	 	├── core           // 实现驱动框架的核心代码
│   │		│   ├── adapter    // 实现对内核操作接口适配,提供抽象化的接口供开发者使用
│   │		│   ├── common     // 驱动框架公共基础代码
│   │		│   ├── host       // 驱动宿主环境模块
│   │		│   ├── manager    // 驱动框架管理模块
│   │		│   └── shared     // host和manager共享模块代码
│   │		├── include        // 驱动框架对外提供能力的头文件
│   │		│   ├── audio      // AUDIO对外提供能力的头文件
│   │		│   ├── bluetooth  // 蓝牙对外提供能力的头文件
│   │		│   ├── core       // 驱动框架对外提供的头文件
│   │		│   ├── ethernnet  // 以太网操作相关的头文件
│   │		│   ├── net        // 网络数据操作相关的头文件
│   │		│   ├── osal       // 系统适配相关接口的头文件
│   │		│   ├── platform   // 平台设备相关接口的头文件
│   │		│   ├── utils      // 驱动框架公共能力的头文件
│   │		│   └── wifi       // WLAN对外提供能力的头文件
│   │		├── model          // 提供驱动通用框架模型
│   │		│   ├── audio      // AUDIO框架模型
│   │		│   ├── display    // 显示框架模型
│   │		│   ├── input      // 输入框架模型
│   │		│   ├── misc       // 杂项设备框架模型,包括dsoftbus、light、vibrator
│   │		│   ├── network    // WLAN框架模型
│   │		│   └── sensor     // Sensor驱动模型
│   │		│   └── storage    // 存储驱动模型
│   │		│   └── usb        // USB驱动模型
│   │		├── sample         // HCS配置描述示例及HDF驱动示例
│   │		├── support        // 提系统的基础能力 
│   │		│   └── platform   // 平台设备驱动框架及访问接口,范围包括GPIO、I2C、SPI等
│   │		│   └── posix      // posix框架及访问接口,范围包括Mem、Mutex、Sem、Spinlock、Thread、Time等
│   │		├── test           // 测试用例
│   │		├── tools          // hdf框架工具相关的源码
│   │		│   └── hc-gen     // 配置管理工具源码
│   │		│   └── hcs-view   
│   │		│   └── hdf-dbg    
│   │		│   └── hdf-dev_eco_tool 
│   │		│   └── hdf-gen    
│   │		│   └── idl-gen    
│   │		│   └── leagecy    
│   │		└── utils          // 提供基础数据结构和算法等
│   ├── interface			   // Display、Input、Sensor、WLAN、Audio、Camera等外设模块HDI接口定义,用于管理各模块HDI(Hardware Device Interface)接口定义,接口定义使用IDL语言描述并以·idl文件形式保存。
│   │   ├── activity_recognition
│   │   ├── audio			 	// audio HDI 接口定义
│   │   ├── battery				// battery HDI 接口定义
│   │   ├── bluetooth			// bluetooth HDI 接口定义
│   │   ├── camera				// camera HDI 接口定义
│   │   ├── codec				// codec HDI 接口定义
│   │   ├── connected_nfc_tag	
│   │   ├── display				// display HDI 接口定义
│   │   ├── distributed_camera	
│   │   ├── face_auth			// 人脸验证 HDI 接口定义
│   │   ├── figures				
│   │   ├── fingerprint_auth	// 指纹验证 HDI 接口定义
│   │   ├── input				// input HDI 接口定义
│   │   ├── light				// light HDI 接口定义
│   │   ├── location			// location	HDI 接口定义
│   │   ├── memorytracker
│   │   ├── motion
│   │   ├── nfc					// nfc HDI 接口定义
│   │   ├── nnrt
│   │   ├── partitionslot
│   │   ├── pin_auth
│   │   ├── power
│   │   ├── ril					// ril HDI 接口定义
│	│	├── sensor                      // sensor HDI 接口定义
│	│   └── v1_0                        // sensor HDI 接口 v1.0版本定义
│	│       ├── BUILD.gn                // sensor idl文件编译脚本
│	│       ├── ISensorCallback.idl     // sensor callback 接口定义idl文件
│	│       ├── ISensorInterface.idl    // sensor interface 接口定义idl文件
│	│       └── SensorTypes.idl         // sensor 数据类型定义idl文件
│   │   ├── thermal				// thermal HDI 接口定义
│   │   ├── usb					// usb HDI 接口定义
│   │   ├── user_auth
│   │   ├── vibrator			// vibrator 马达HDI 接口定义
│   │   └── wlan				// wlan HDI 接口定义
│   ├── liteos			// 内核驱动是软件与硬件交互的桥梁,通过文件系统接口访问OpenHarmony内核的硬件资源,是用户与内核之间、进程与进程之间通信的一种方式。每类驱动代表一种能力,用户可以根据需求选择对应驱动,完成数据的传输
│   │   └── hievent
│   └── peripheral		// Display、Input、Sensor、WLAN、Audio、Camera等外设模块硬件抽象层, 包含各外设器件驱动相关的HDI(Hardware Driver Interface)接口、HAL实现、驱动模型及测试用例等,根据模块划分不同目录。
│       ├── audio	
│       ├── base
│       ├── battery
│       ├── bluetooth
│       ├── camera
│       ├── codec
│       ├── connected_nfc_tag
│       ├── display
│       ├── distributed_camera
│       ├── face_auth
│       ├── fingerprint_auth
│       ├── format
│       ├── input
│       ├── light
│       ├── location
│       ├── memorytracker
│       ├── motion
│       ├── nfc
│       ├── partitionslot
│       ├── pin_auth
│       ├── power
│       ├── ril
│       ├── sensor
│       ├── thermal
│       ├── usb
│       ├── user_auth
│       ├── vibrator
│       └── wlan
├── foundation				// 系统基础能力子系统集,这部分可以根据需要进行裁剪	
│   ├── ability
│   │   ├── ability_base	// 部件作为元能力的基础定义部件,提供组件启动参数(Want),系统环境参数(Configuration),URI参数(Uniform Resource Identifier)的定义,用于启动应用,获取环境参数等功能。
│   │   ├── ability_lite	// 元能力组件,是OpenHarmony为开发者提供的一套开发鸿蒙应用的开发框架
│   │   ├── ability_runtime	// 元能力子系统实现对Ability的运行及生命周期进行统一的调度和管理,应用进程能够支撑多个Ability,Ability具有跨应用进程间和同一进程内调用的能力。Ability管理服务统一调度和管理应用中各Ability,并对Ability的生命周期变更进行管理。
│   │   ├── dmsfwk			// 分布式组件管理部件模块负责跨设备组件管理,提供访问和控制远程组件的能力,支持分布式场景下的应用协同
│   │   ├── dmsfwk_lite		// 轻量级分布式组件管理模块负责跨设备启动FA的能力,支持分布式场景下的应用协同
│   │   ├── form_fwk		// 卡片是一种界面展示形式,可以将应用的重要信息或操作前置到卡片,以达到服务直达的目的。
│   │   └── idl_tool		// 在OpenHarmony中,当应用/系统服务的客户端和服务端进行IPC(Inter-Process Communication)跨线程通信时,需要定义双方都认可的接口,以保障双方可以成功通信,OpenHarmony IDL(Interface Definition Language)则是一种定义此类接口的工具。OpenHarmony IDL先把需要传递的对象分解成操作系统能够理解的基本类型,并根据开发者的需要封装跨边界的对象。
│   ├── ai					// AI引擎框架
│   ├── arkui
│   ├── barrierfree
│   ├── bundlemanager
│   ├── communication
│   ├── deviceprofile
│   ├── distributeddatamgr
│   ├── distributedhardware
│   ├── filemanagement
│   ├── graphic
│   ├── multimedia
│   ├── multimodalinput
│   ├── resourceschedule
│   ├── systemabilitymgr
│   └── window
├── interface
│   └── sdk-js
├── kernel				// 内核系统
│   ├── linux			// 小型系统和标准系统
│   ├── liteos_a		// LiteOS-A内核是基于Huawei LiteOS内核演进发展的新一代内核,Huawei LiteOS是面向IoT领域构建的轻量级物联网操作系统,能够带给用户小体积、低功耗、高性能的体验以及统一开放的生态系统能力
│   ├── liteos_m		// LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点,其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等,分为硬件相关层以及硬件无关层,硬件相关层提供统一的HAL(Hardware Abstraction Layer)接口,提升硬件易适配性,不同编译工具链和芯片架构的组合分类,满足AIoT类型丰富的硬件和编译工具链的拓展
│   └── uniproton		// 为上层业务软件提供一个统一的操作系统平台,屏蔽底层硬件差异,并提供强大的调试功能。使得业务软件可在不同的硬件平台之间快速移植,方便产品芯片选型,降低硬件采购成本和软件维护成本。
├── napi_generator		// NAPI框架代码生成工具,它可以根据用户指定路径下的ts(typescript)接口文件一键生成NAPI框架代码、业务代码框架、GN文件等。在开发JS应用与NAPI间接口时,底层框架开发者无需关注Nodejs语法、C++与JS之间的数据类型转换等上层应用转换逻辑,只关注底层业务逻辑即可,专业的人做专业的事,从而可以大大提高开发效率。
├── prebuilts
│   ├── ark_tools
│   ├── build-tools
│   ├── clang
│   ├── cmake
│   ├── develop_tools
│   ├── gcc
│   ├── mingw-w64
│   ├── previewer
│   └── python
├── productdefine	// 一个完整的产品包括芯片组件部分和系统组件部分。芯片组件部分在vendor/{company}/{product}/目录下定义。
│   └── common	// 本仓主要定义与芯片无关的通用系统组件形态配置。
├── qemu-run -> vendor/ohemu/common/qemu-run
├── test			//  OpenHarmony稳定性测试自动化工具,通过模拟用户行为,对OpenHarmony系统及应用进行稳定性压力测试。
│   ├── ostest
│   ├── testfwk		// OpenHarmony自动化测试框架代码部件仓arkXtest,包含单元测试框架(JsUnit)和Ui测试框架(UiTest)。
│   └── xts
├── third_party		// 三方库
│   ├── EGL
│   ├── FatFs
│   ├── FreeBSD
│   ├── NuttX
│   ├── PyYAML
│   ├── abseil-cpp
│   ├── alsa-lib
│   ├── alsa-utils
│   ├── benchmark
│   ├── boost
│   ├── bounds_checking_function
│   ├── bzip2
│   ├── cJSON
│   ├── cef
│   ├── chromium
│   ├── cmsis
│   ├── css-what
│   ├── curl
│   ├── e2fsprogs
│   ├── ejdb
│   ├── elfio
│   ├── eudev
│   ├── exfatprogs
│   ├── expat
│   ├── f2fs-tools
│   ├── ffmpeg
│   ├── flatbuffers
│   ├── flutter
│   ├── freetype
│   ├── fsck_msdos
│   ├── gettext
│   ├── giflib
│   ├── glib
│   ├── glslang
│   ├── gn
│   ├── googletest
│   ├── gptfdisk
│   ├── grpc
│   ├── gstreamer
│   ├── harfbuzz
│   ├── icu
│   ├── iniparser
│   ├── iowow
│   ├── iptables
│   ├── jerryscript
│   ├── jinja2
│   ├── jsframework
│   ├── json
│   ├── jsoncpp
│   ├── libcoap
│   ├── libdrm
│   ├── libevdev
│   ├── libexif
│   ├── libffi
│   ├── libinput
│   ├── libjpeg-turbo
│   ├── libnl
│   ├── libphonenumber
│   ├── libpng
│   ├── libpsl
│   ├── libsnd
│   ├── libsoup
│   ├── libunwind
│   ├── libusb
│   ├── libuv
│   ├── libwebsockets
│   ├── libxml2
│   ├── littlefs
│   ├── ltp
│   ├── lwip
│   ├── lz4
│   ├── markupsafe
│   ├── mbedtls
│   ├── mesa3d
│   ├── mindspore
│   ├── mksh
│   ├── mtdev
│   ├── musl
│   ├── newfs_msdos
│   ├── nghttp2
│   ├── ninja
│   ├── node
│   ├── ntfs-3g
│   ├── openGLES
│   ├── openSLES
│   ├── opencl-headers
│   ├── openh264
│   ├── openmax
│   ├── openssl
│   ├── optimized-routines
│   ├── parse5
│   ├── pcre2
│   ├── pixman
│   ├── popt
│   ├── protobuf
│   ├── pulseaudio
│   ├── python
│   ├── qrcodegen
│   ├── quickjs
│   ├── re2
│   ├── selinux
│   ├── skia
│   ├── spirv-headers
│   ├── spirv-tools
│   ├── sqlite
│   ├── toybox
│   ├── typescript
│   ├── typescript_eslint
│   ├── tzdata
│   ├── unity
│   ├── vk-gl-cts
│   ├── vulkan-headers
│   ├── wayland-ivi-extension
│   ├── wayland-protocols_standard
│   ├── wayland_standard
│   ├── weex-loader
│   ├── weston
│   ├── wpa_supplicant
│   └── zlib
├── tools_previewer
└── vendor				// 芯片组件部分
    ├── alientek
    ├── hihope
    ├── hisilicon
    └── ohemu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馋喵星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值