和大家一样,拿到板子后,就急不可耐的按照老师们的教程开始各种操作了。但是一段时间后,我突然发现,我对项目的结构和启动流程还都一知半解。
为了能更深入的理解 HarmonyOS 的代码,我决定从基础开始,再从头学习。
首先,咱们 HarmonyOS 是用 C 语言写的(废话),编译用 gcc。项目构建上,没有用传统的 make,而是用的 GN。
什么是 GN?
Generate Ninja,是 Google 为 Ninja 专门开发的上层编译框架,可以生成 Ninja 可以识别的输入文件。GN 由 c++ 编译,相比于基于 python 的 gyp,速度快接近 20 倍。
什么是 Ninja?
Ninja 是 Google 的一名程序员推出的注重速度的构建工具,一般在 Unix/Linux 上的程序通过 make/makefile 来构建编译,而 Ninja 通过将编译任务并行组织,大大提高了构建速度。
重点突出一个“快”字。总而言之,有了这俩先进工具的加持,咱这个鸿蒙编译速度那是飞快。相信大家都深有体会。
①applications,
自然就是用户的各种应用代码了,这里是咱们的主战场。
具体来说,applications/sample/wifi-iot/app/,这个 app 目录里是咱们的业务代码。
②base,
OS 的基础代码。
主要包含全球化(global),DFX(hiviewdfx),公共基础(iot_hardware),安全(security),启动恢复(startup)等若干模块。
③build,
构建目录。编译过程中的文件存放目录。
④docs,
文档。很多新手往往忽略了自带的文档。
⑤domains,
领域。看样子是几个 demo。
⑥drivers,
驱动。OpenHarmony 驱动子系统采用 C 面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
⑦foundation,
基础模块。内容很复杂,包含 Ability、ACE、Graphics 等等很多模块。
⑧kernel,
内核代码。
⑨out,
输出目录。生成的固件文件就在这里。
⑩prebuilts,
LiteOS 预先编译好的文件。一些 LiteOS 的 .o 和 .a 文件放在这里,可用来加快编译速度。
⑪test,
测试目录。具体都是干嘛的暂时没有搞清楚。
⑫third_party,
第三方代码。
⑬utils,
工具模块。像文件访问、timer、task 什么的。
⑭vendor,
制造商提供的代码。这里有程序启动的入口代码,应给予一定的关注。有时间可以研究一下。
⑮build.py,
编译脚本。基本用法:python build.py wifiiot。
HelloWorld 的教程我就不再重复了,推荐参考连老师的文章:
https://harmonyos.51cto.com/posts/944