深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
│ ├── ostest
│ ├── testfwk
│ └── xts
├── third_party
│ ├── abseil-cpp
│ ├── alsa-lib
│ ├── alsa-utils
│ ├── benchmark
│ ├── bounds_checking_function
│ ├── bzip2
│ ├── cef
│ ├── chromium
│ ├── cJSON
│ ├── cmsis
│ ├── css-what
│ ├── curl
│ ├── e2fsprogs
│ ├── EGL
│ ├── ejdb
│ ├── elfio
│ ├── eudev
│ ├── exfatprogs
│ ├── expat
│ ├── f2fs-tools
│ ├── FatFs
│ ├── ffmpeg
│ ├── flatbuffers
│ ├── flutter
│ ├── FreeBSD
│ ├── freetype
│ ├── fsck_msdos
│ ├── gettext
│ ├── giflib
│ ├── glib
│ ├── glslang
│ ├── gn
│ ├── googletest
│ ├── gptfdisk
│ ├── grpc
│ ├── gstreamer
│ ├── harfbuzz
│ ├── icu
│ ├── iniparser
│ ├── iowow
│ ├── iptables
│ ├── jerryscript
│ ├── jinja2
│ ├── jsframework
│ ├── json
│ ├── jsoncpp
│ ├── libbpf
│ ├── 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
│ ├── NuttX
│ ├── opencl-headers
│ ├── openGLES
│ ├── openh264
│ ├── openmax
│ ├── openSLES
│ ├── openssl
│ ├── optimized-routines
│ ├── parse5
│ ├── pcre2
│ ├── pixman
│ ├── popt
│ ├── protobuf
│ ├── pulseaudio
│ ├── python
│ ├── PyYAML
│ ├── qrcodegen
│ ├── re2
│ ├── selinux
│ ├── skia
│ ├── spirv-headers
│ ├── spirv-tools
│ ├── sqlite
│ ├── toybox
│ ├── typescript
│ ├── typescript_eslint
│ ├── tzdata
│ ├── u-boot
│ ├── unity
│ ├── vk-gl-cts
│ ├── vulkan-headers
│ ├── wayland-ivi-extension
│ ├── wayland-protocols_standard
│ ├── wayland_standard
│ ├── weex-loader
│ ├── weston
│ ├── wpa_supplicant
│ └── zlib
└── vendor
├── alientek
├── asrmicro
├── bearpi
├── beken
├── bestechnic
├── chipsea
├── goodix
├── hihope
├── hisilicon
├── hpmicro
├── isoftstone
├── kaihong
├── lockzhiner
├── ohemu
├── openvalley
├── osware
├── talkweb
├── telink
└── unionman
### applications/
内置的示例应用程序
#### standard/
标准系统的示例应用程序,包括launcher,settings,systemui等
.
├── admin_provisioning
├── app_samples
├── call
├── camera
├── contacts
├── contacts_data
├── filepicker
├── hap
├── launcher
├── mms
├── notes
├── permission_manager
├── photos
├── screenlock
├── screenshot
├── security_privacy_center
├── settings
├── settings_data
├── systemui
└── theme
#### sample/camera
小型系统的示例应用程序,包括launcher,settings,camera等
#### sample/wifi-iot
轻量系统的示例应用程序,WIFI\_IOT\_APP组件,提供了iothardware、demolink、samgr等示例代码。
### arkcompiler
#### ets\_frontend
ets\_frontend组件是方舟运行时子系统的前端工具,结合ace-ets2bundle组件,支持将ets文件转换为方舟字节码文件。
#### ets\_runtime
方舟eTS运行时是OpenHarmony上默认的ArkTS语言运行时。支持Ecmascript规范定义的标准库和高效container容器库,提供完备的C++交互ArkTS NAPI和各种高性能的垃圾回收器,驱动着万物互联时代的OpenHarmony应用程序。
#### runtime\_core
方舟编译器运行时公共组件(ArkCompiler Runtime Core)是OpenHarmony中语言运行时的公共组件。主要由与语言无关的基础运行库组成,包含承载字节码以及执行字节码所需要相关信息的ArkCompiler File文件组件、支持运行时调试的Debugger Tooling工具组件、提供不同系统平台公共接口的ArkCompiler Base基础库组件、以及与语言无关的公共指令集体系结构ISA等。
#### toolchain
方舟工具链(ArkCompiler Toolchain)为开发者提供了一套OpenHarmony应用程序调试调优工具,其功能包括单步调试、断点调试、Watch变量及表达式、CPU Profiler和Heap Profiler等,并支持多实例和Worker调试。
### base
基础软件服务子系统集和硬件服务子系统集,可根据需要进行裁剪。
#### account/os\_account
在标准系统上,帐号子系统主要提供系统帐号生命周期管理,分布式帐号登录状态管理和应用帐号添加删除等基础管理能力。
#### customization
customization/config\_policy
配置策略组件为各业务模块提供获取各配置层级的配置目录或配置文件路径的接口。
customization/enterprise\_device\_management
企业设备管理组件EDM(Enterprise Device Management)给企业MDM(Mobile Device Management)应用开发者提供管理应用开发框架,设定管理模式以及提供企业设备管理功能能力集。为企业环境下的应用提供系统级别的管理功能API。
#### global
全球化子系统,提供多语言支持,多文化的资源管理,以及国际化能力
.
├── i18n
├── i18n_lite
├── resource_management
├── resource_management_lite
├── system_resources
└── timezone
#### hiviewdfx
DFX框架子系统,提供日志和系统事件的打印,输出功能
.
├── blackbox
├── faultloggerd
├── hiappevent
├── hichecker
├── hicollie
├── hidumper
├── hidumper_lite
├── hievent_lite
├── hilog
├── hilog_lite
├── hisysevent
├── hitrace
├── hiview
└── hiview_lite
#### inputmethod
inputmethod/imf
输入法框架,主要作用是拉通应用和输入法,保证应用可以通过输入法进行文本输入
### iothardware
iothardware/peripheral
IOT(The Internet of Things)硬件设备操作的接口。本模块提供设备操作接口有:FLASH,GPIO,I2C,PWM,UART,WATCHDOG等
#### location
位置服务组件
#### msdp
msdp/device\_status
MSDP设备状态感知框架能够识别出目前设备的状态并传递给订阅者,整个框架是基于MSDP算法库和系统SensorHDI组件组成的
#### notification
notification/common\_event\_service
OpenHarmony通过CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。
notification/distributed\_notification\_service
OpenHarmony通过ANS(Advanced Notification Service,通知系统服务)对通知类型的消息进行管理,支持多种通知类型,包括文本,长文本,多文本,图片,社交,媒体等。所有系统服务以及应用都可以通过通知接口发送通知消息,用户可以通过SystemUI查看所有通知消息。
notification/eventhandler
EventHandler提供了OpenHarmony线程间通信的基本能力,可以通过EventRunner创建新线程,将耗时的操作抛到新线程上执行,从而实现在不阻塞原来的线程的基础上合理地处理耗时任务
#### power
电源管理服务子系统,提供系统各模块的电源状态管理等接口
#### print
print/print\_fwk
打印框架服务(Distributed Print Service,DPS) 支持三方应用创建打印任务,拉起后台打印任务管理,管理打印扩展和打印任务。
提供打印扩展框架,实现三方打印扩展的接入,管理打印任务与打印机之间的关系,启动、暂停/恢复、取消打印任务,查询打印进度等。
打印框架服务覆盖范围包含:打印管理、打印管理服务和打印扩展管理
#### request
request/request
Request服务向三方应用提供文件下载/上传能力,以支撑应用开发者方便、高效地使用下载/上传业务的功能。
#### security
安全子系统,提供系统安全,数据安全,应用安全等能力
.
├── access_token
├── appverify
├── certificate_manager
├── crypto_framework
├── dataclassification
├── device_auth
├── device_security_level
├── huks
├── permission_lite
└── selinux
#### sensors
传感器服务子系统,提供轻量级传感器服务基础框架
.
├── medical_sensor
├── miscdevice
├── miscdevice_lite
├── sensor
├── sensor_lite
└── start
#### startup
启动恢复子系统,负责在内核启动之后,到应用启动之前的系统关键进程和服务的启动过程,并提供系统属性查询,修改及设备恢复出厂设置的功能。
#### telephony
电话服务子系统,提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息。应用可以通过调用API来获取当前注册网络名称、网络服务状态、信号强度以及SIM卡的相关信息。
.
├── call_manager
├── cellular_call
├── cellular_data
├── core_service
├── ril_adapter
├── sms_mms
├── state_registry
└── telephony_data
#### theme
theme\screenlock\_mgr
锁屏管理服务是OpenHarmony中系统服务,为锁屏应用提供注册亮屏、灭屏、开启屏幕、结束休眠、退出动画、请求解锁结果监听,并提供回调结果给锁屏应用。锁屏管理服务向三方应用提供请求解锁、查询锁屏状态、查询是否设置锁屏密码的能力。
theme\wallpaper\_mgr
该仓主要为系统提供壁纸管理服务能力,支持系统显示、设置、切换壁纸等功能。
#### time
time\time\_service
在整个OpenHarmony架构中提供管理系统时间时区和定时的能力,支持设置获取时间、日期、时区和系统定时器功能。
#### update
OpenHarmony升级子系统用来支持OpenHarmony设备的OTA(Over The Air)升级。
.
├── packaging_tools
├── sys_installer
├── sys_installer_lite
├── update_app
├── updater
└── updateservice
#### usb
usb/usb\_manager
Usb设备作为host设备连接device设备进行数据传输。
#### useriam
/useriam/face\_auth
**人脸认证** (faceauth)支持用户人脸的录入,删除和认证功能。
useriam/pin\_auth
**口令认证**(pinauth)模块支持用户口令的设置,删除和认证功能。与用户IAM子系统基础框架配合,也可以支持用户口令修改的功能。
useriam/user\_auth\_framework
统一用户认证框架
#### web
web/webview
nweb是OpenHarmony webview组件的Native引擎,基于Chromium和CEF构建。
### build
编译构建子系统提供了一个基于Gn和ninja的编译构建框架。
### foundation
系统基础能力子系统集,这部分可以根据需要进行裁剪。
#### ability
├── ability_base
├── ability_lite
├── ability_runtime
├── dmsfwk
├── dmsfwk_lite
├── form_fwk
└── idl_tool
**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先把需要传递的对象分解成操作系统能够理解的基本类型,并根据开发者的需要封装跨边界的对象。
### commonlibrary
.
├── c_utils
├── ets_utils
├── memory_utils
└── utils_lite
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
常用开发工具集合
developtools\ace\_ets2bundle提供声明式范式的语法编译转换,语法验证,丰富友好的语法报错提示能力。
### device
### docs
此仓库存放OpenHarmony网站提供的设备开发、应用开发对应的开发者文档。
### drivers
OpenHarmony驱动子系统采用C面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
.
├── hdf_core
├── interface
├── liteos
└── peripheral
hdf\_core该仓主要存放OpenHarmony驱动子系统核心源码信息(包括驱动框架、配置管理、配置解析、驱动通用框架模型、硬件通用平台能力接口等),旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
interface该仓库用于管理各模块HDI(Hardware Device Interface)接口定义,接口定义使用IDL语言描述并以`·idl`文件形式保存。
liteos内核驱动是软件与硬件交互的桥梁,通过文件系统接口访问OpenHarmony内核的硬件资源,是用户与内核之间、进程与进程之间通信的一种方式。每类驱动代表一种能力,用户可以根据需求选择对应驱动,完成数据的传输
peripheral此仓主要包含各外设器件驱动相关的HDI(Hardware Driver Interface)接口、HAL实现、驱动模型及测试用例等,根据模块划分不同目录。
### interface
interface/sdk-js
JS/TS API 公共仓,用来提交 API d.ts 声明文件以及API相关工具。
### kernel
OpenHarmony针对不同量级的系统,分别使用了不同形态的内核,分别为LiteOS和Linux。在轻量系统、小型系统可以选用LiteOS;在小型系统和标准系统上可以选用Linux。
.
├── common_modules
├── linux
├── liteos_a
├── liteos_m
└── uniproton
common\_modules
New IP在现有IP能力的基础上,以灵活轻量级报头和可变长多语义地址为基础,通过二三层协议融合,对协议去冗和压缩,减少冗余字节,实现高能效比,高净吞吐,提升通信效率。打造终端之间高效的横向通信,支撑超级终端的体验,实现异构网络的端到端互联。
linux
不同版本的Linux内核,以及不同芯片平台适配Linux内核的相关配置,编译脚本等等
liteos\_a
OpenHarmony LiteOS-A内核是基于Huawei LiteOS内核演进发展的新一代内核,Huawei LiteOS是面向IoT领域构建的轻量级物联网操作系统。在IoT产业高速发展的潮流中,OpenHarmony LiteOS-A内核能够带给用户小体积、低功耗、高性能的体验以及统一开放的生态系统能力,新增了丰富的内核机制、更加全面的POSIX标准接口以及统一驱动框架**HDF**(OpenHarmony Driver Foundation)等,为设备厂商提供了更统一的接入方式,为OpenHarmony的应用开发者提供了更友好的开发体验
liteos\_m
OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点,其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等,分为硬件相关层以及硬件无关层,硬件相关层提供统一的HAL(Hardware Abstraction Layer)接口,提升硬件易适配性,不同编译工具链和芯片架构的组合分类,满足AIoT类型丰富的硬件和编译工具链的拓展
uniproton
UniProton主要目的在于为上层业务软件提供一个统一的操作系统平台,屏蔽底层硬件差异,并提供强大的调试功能。使得业务软件可在不同的硬件平台之间快速移植,方便产品芯片选型,降低硬件采购成本和软件维护成本。
### napi\_generator
本文主要介绍NAPI框架代码生成工具,它可以根据用户指定路径下的ts(typescript)接口文件一键生成NAPI框架代码、业务代码框架、GN文件等。在开发JS应用与NAPI间接口时,底层框架开发者无需关注Nodejs语法、C++与JS之间的数据类型转换等上层应用转换逻辑,只关注底层业务逻辑即可,专业的人做专业的事,从而可以大大提高开发效率。目前工具支持可执行文件、VS Code插件、IntelliJ插件三种入口。
### prebuilts
.
├── ark_tools
├── build-tools
├── clang
├── cmake
├── develop_tools
├── gcc
├── mingw-w64
├── previewer
├── python
└── rustc
### productdefine
![img](https://img-blog.csdnimg.cn/img_convert/c66d5a4fcd128bba5906eea3ba68ae08.png)
![img](https://img-blog.csdnimg.cn/img_convert/7b2a3da52fcdd299fc77807fe7910b8a.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618636735)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
### napi\_generator
本文主要介绍NAPI框架代码生成工具,它可以根据用户指定路径下的ts(typescript)接口文件一键生成NAPI框架代码、业务代码框架、GN文件等。在开发JS应用与NAPI间接口时,底层框架开发者无需关注Nodejs语法、C++与JS之间的数据类型转换等上层应用转换逻辑,只关注底层业务逻辑即可,专业的人做专业的事,从而可以大大提高开发效率。目前工具支持可执行文件、VS Code插件、IntelliJ插件三种入口。
### prebuilts
.
├── ark_tools
├── build-tools
├── clang
├── cmake
├── develop_tools
├── gcc
├── mingw-w64
├── previewer
├── python
└── rustc
### productdefine
[外链图片转存中...(img-ib3DzyXh-1715622377192)]
[外链图片转存中...(img-MBTq8Z2o-1715622377192)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618636735)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**