专栏名称: 51CTO技术栈
有趣 | 有料 | 有内涵,为您提供最优质的内容,愿我们一起悦享技术,成就人生。
目录
相关文章推荐
51好读  ›  专栏  ›  51CTO技术栈

深入理解鸿蒙OS,看这篇就对了!

51CTO技术栈  · 公众号  · 程序员  · 2020-11-09 18:05

正文

和大家一样,拿到板子后,就急不可耐的按照老师们的教程开始各种操作了。但是一段时间后,我突然发现,我对项目的结构和启动流程还都一知半解。


为了能更深入的理解 HarmonyOS 的代码,我决定从基础开始,再从头学习。


01

整体情况


首先,咱们 HarmonyOS 是用 C 语言写的(废话),编译用 gcc。项目构建上,没有用传统的 make,而是用的 GN。


什么是 GN?

Generate Ninja,是 Google 为 Ninja 专门开发的上层编译框架,可以生成 Ninja 可以识别的输入文件。GN 由 c++ 编译,相比于基于 python 的 gyp,速度快接近 20 倍。


什么是 Ninja?

Ninja 是 Google 的一名程序员推出的注重速度的构建工具,一般在 Unix/Linux 上的程序通过 make/makefile 来构建编译,而 Ninja 通过将编译任务并行组织,大大提高了构建速度。


重点突出一个“快”字。总而言之,有了这俩先进工具的加持,咱这个鸿蒙编译速度那是飞快。相信大家都深有体会。


02

项目结构


①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。


03

启动流程


HelloWorld 的教程我就不再重复了,推荐参考连老师的文章:
https://harmonyos.51cto.com/posts/944






请到「今天看啥」查看全文