鸿蒙造物者之路 00 · 写在前面
这一章不教你技术,教你怎么用这本书。
如果你急着动手,至少读完「二、开工前自检」和「三、需要准备什么」再往下翻。
========================================
一、这本书适合谁
1.1 如果你符合下面任意两条,这本书就是给你写的
- ☐ 学过一点 C 语言,能让单片机跑起来(哪怕只是点过流水灯)
- ☐ 想知道"鸿蒙"到底是什么,但搜到的资料要么是新闻稿、要么是厂商宣传
- ☐ 想做软硬结合的东西——不是纯写 App,也不是纯画电路板
- ☐ 看着官方文档觉得"每个字都认识,连起来不知道在说啥"
- ☐ 想找一个能从头跟到尾的项目,而不是一堆零散的 Demo
- ☐ 是电子信息 / 物联网 / 嵌入式相关专业,想给自己找条路
1.2 如果你是这样,这本书可能不适合你
- 想三天速成找工作。 这本书从点灯讲到分布式,正常速度要三到五个月。
- 只想抄代码跑通就行。 这本书有大量"为什么",如果你只想"怎么做",会觉得很啰嗦。
- 已经有多年 Linux 驱动经验。 直接看官方文档更快,本书第 01–05 章对你太浅。
- 想学的是纯 App 开发、完全不碰硬件。 那第 03–05 章(环境搭建、驱动、总线)可以跳过,但说实话有点可惜。
1.3 这本书不假定你有以下任何一项
| 你不需要会 | 说明 |
|---|---|
| ❌ Linux 命令 | 第 03 章会从 sudo 开始教 |
| ❌ 任何鸿蒙经验 | 这就是从零开始的 |
| ❌ 焊接 / 画板 | 本书用面包板和杜邦线,不要求焊 |
| ❌ 英语 | 所有文档都会告诉你去哪查、查哪一页 |
| ❌ 买很贵的设备 | 核心开发板几十块钱 |
但有一件事这本书假定你会:愿意动手,并且接受前几个小时会很挫败。
二、开工前自检:你现在缺什么
对照下面这张表,**缺什么补什么,别硬闯。**硬闯的结果就是第 03 章卡三天然后放弃。
2.1 知识自检
| 能力 | 要掌握到什么程度 | 如果不会 | 要补多久 |
|---|---|---|---|
| C 语言 | 会写函数、会用指针、懂结构体 | 看教材前 8 章 | 1–2 周 |
| 看懂电路图 | 知道 GND / VCC / 电阻 / 三极管 | 找个数电入门视频 | 3 天 |
| 二进制与十六进制 | 知道 0x44 是 68,知道 1<<3 是 8 |
任何 C 教材都有 | 半天 |
| 用万用表 | 会量电压、会量通断 | 找个实物练十分钟 | 10 分钟 |
| 基本电脑操作 | 会装软件、会解压、会找文件路径 | — | — |
最重要的一条:C 语言。
南向开发 80% 的代码是 C。你不需要精通,但指针和结构体必须懂——否则第 04 章的device->priv、第 10 章的void *data会让你彻底懵掉。
2.2 心态自检
这本书的路线是这样的:
第 01–02 章 看懂,不动手 ← 轻松,像读小说
第 03 章 【劝退率最高】 ← 一整章都在装环境、排报错
第 04–05 章 开始有正反馈 ← 灯亮了、数据读出来了
第 06–08 章 上手快,成就感强 ← 界面能点了
第 09–10 章 难度回升 ← 分布式和 NAPI 是全书的坎
第 11–12 章 收尾,做出成品 ← 最爽
第 03 章是一道墙。 我见过太多人倒在这里。
如果你在第 03 章卡住了,请记住:
环境搭建的坑,跟你的能力没关系,跟运气有关系。
每个人机器不一样、网络不一样、系统版本不一样,踩的坑都不一样。
老手也会卡,只是他们知道卡住该去哪儿找答案。
翻到本章第七节「卡住了怎么办」,照着做。
三、需要准备什么
3.1 硬件清单(按推荐顺序买)
| 物品 | 推荐型号 | 大约价格 | 必需吗 | 用在哪一章 |
|---|---|---|---|---|
| 主控开发板 | Hi3861(润和 / 小熊派) | ¥30–60 | ✅ 必需 | 03–05、12 |
| USB 数据线 | MicroUSB,能传数据的那种 | ¥10 | ✅ 必需 | 全程 |
| 杜邦线 | 公对公 / 公对母 / 母对母 各一排 | ¥10 | ✅ 必需 | 04–05 |
| 面包板 | 400 孔 | ¥8 | ✅ 必需 | 04–05 |
| 温湿度传感器 | SHT30 模块(买模块别买裸片) | ¥10 | ✅ 强烈建议 | 05、10、12 |
| 万用表 | 最便宜的数字万用表 | ¥25 | ✅ 强烈建议 | 全程(救命用) |
| 上拉电阻 | 4.7kΩ,买一包 | ¥3 | ✅ 必需 | 05 |
| 继电器模块 | 5V 一路继电器模块 | ¥6 | 可选 | 12 |
| 舵机 | SG90 9g 舵机 | ¥8 | 可选 | 12 |
| 逻辑分析仪 | 最便宜的 8 通道 USB 款 | ¥30–60 | 可选但极推荐 | 05、12 |
| LED + 电阻 | 随便买 | ¥3 | 可选 | 04 |
最低配置预算:约 ¥100(板子 + 线 + 面包板 + 传感器 + 万用表 + 电阻)
三个新手最容易买错的坑:
- 买了不能传数据的 USB 线(只能充电)——认准"数据线"三个字
- 买了裸片传感器而不是模块——SHT30 裸片是那种芝麻大的贴片,你焊不上。买"模块",就是带引脚插面包板的那种
- 不买万用表——这是全表性价比最高的东西。灯不亮的时候,万用表能在 30 秒内告诉你是不是硬件问题
3.2 软件清单
| 软件 | 用途 | 在哪一章装 | 平台 |
|---|---|---|---|
| VMware / VirtualBox | 跑 Ubuntu | 03 | Windows |
| Ubuntu 20.04 或 22.04 LTS | 南向编译环境 | 03 | 虚拟机 |
| DevEco Studio | 写 ArkTS 应用 | 06 | Windows / Mac |
| VS Code + DevEco Device Tool | 南向开发(可选) | 03 | Windows / Ubuntu |
| HiBurn | 烧录固件 | 03 | Windows |
| 串口工具 | 看日志 | 03 | 两端都要 |
硬盘:至少留 100 GB,建议 150 GB。
内存:8 GB 起步。CPU:4 核起步。
四、全书路线图
这张图是全书骨架。迷路的时候就回来看它。
┌─────────────────────────────────────────────────────────┐
│ 第 00 章 写在前面 ← 你在这儿 │
│ 认清目标、备齐装备、知道往哪走 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 第一阶段 · 看懂(01–02 章) 不动手,纯理解 │
│ │
│ 01 鸿蒙初开 三个"鸿蒙"有什么区别、架构长什么样 │
│ 02 三种身法 内核是谁、为什么能大能小 │
│ ── 产出:你能跟别人讲清楚鸿蒙是什么 ── │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 第二阶段 · 南向(03–05 章) C 语言,靠近硬件 │
│ │
│ 03 铸剑 装环境、编固件、烧板子 【劝退墙】 │
│ 04 点灯 GPIO 与第一个驱动 │
│ 05 五脏六腑 I2C/SPI/UART/PWM/ADC 与中断 │
│ ── 产出:一块能读温湿度的开发板 ── │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 第三阶段 · 北向(06–08 章) ArkTS,靠近用户 │
│ │
│ 06 北向初见 ArkTS 语言 + 声明式 UI + 状态管理 │
│ 07 舞台 Stage 模型、生命周期、路由 │
│ 08 内外兼修 数据、网络、权限、通知、后台任务 │
│ ── 产出:一个能装、能用、不丢数据的 App ── │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 第四阶段 · 打通(09–10 章) 全书最难,也最值钱 │
│ │
│ 09 分身术 分布式软总线、跨端迁移、设备虚拟化 │
│ 10 南北打通 NAPI:让 ArkTS 和 C 直接对话 │
│ ── 产出:一个手机能直接读开发板传感器的软硬结合产品 ── │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 第五阶段 · 出师(11–12 章) │
│ │
│ 11 出师 包结构、签名、上架、元服务、就业方向 │
│ 12 造物者 完整项目收尾 + 全书复盘 │
│ ── 产出:一个能放进简历的东西 ── │
└─────────────────────────────────────────────────────────┘
每个阶段都有明确的产出。 没有产出就别往下走——那说明前面没消化。
五、三种读法:按你的目标选
读法 A:全栈型(推荐,也最累)
全读,按顺序,每章做完练习。
- 耗时:3–5 个月(业余时间)
- 适合:想把这条路走通、想靠这个找工作的
- 结果:能独立完成软硬结合项目
读法 B:只做硬件 / 南向
读 00–05,然后跳到 10、11。
- 耗时:1.5–2 个月
- 适合:电子/嵌入式背景,以后想做驱动、做固件
- 注意:第 10 章(NAPI)一定要读,哪怕你不写 App——因为你要知道怎么把接口交给别人用
- 结果:能给鸿蒙设备写驱动、适配外设
读法 C:只做应用 / 北向
读 00–02(挑着看),然后 06–09、11。跳过 03–05。
- 耗时:1.5–2 个月
- 适合:有编程基础,不想碰烙铁
- 但请至少读一遍 04 和 05 —— 不要求你做,但要知道你的 App 底下那块板子是怎么干活的。这会让你在技术讨论里跟别人不一样
- 结果:能写鸿蒙原生应用
三种读法的重叠区:
A 全栈 ████████████████████████ (00→12 全读)
B 南向 ███████████ ██ (00-05, 10-11)
C 北向 ██ ███████ ██ (00-02, 06-09, 11)
↑ ↑ ↑
01-02 06-09 10-11
六、怎么读这本书
6.1 三条建议
第一,先跑通,再追问为什么。
每一章的代码,先原样抄一遍、跑起来、看到结果,然后再回头研究每一行的意思。
很多概念你第一遍看不懂很正常——**等你看到东西动起来了,再回头看,往往一下就懂了。**反过来(先弄懂每一行再动手)是新手最容易陷入的死循环。
第二,每一章都要做出一个能演示的东西。
❌ 错误:读完第 05 章,"嗯,我知道 I2C 是怎么回事了"
✅ 正确:读完第 05 章,"我的板子每两秒打印一次温湿度,串口能看到"
**看十遍不如做一遍。**你以为懂了和真的能做出来,中间隔着一道巨大的鸿沟。
第三,遇到不懂的名词,先跳过。
这本书里有些地方会提前用到后面才讲的概念。**第一次遇到不认识的词,记下来,继续往下读。**很多时候读到后面,前面的疑问自己就解开了。
如果读完整章还是不懂——翻到本章第七节,或者搜。
6.2 关于代码
本书所有代码都遵循这些约定:
| 约定 | 说明 |
|---|---|
// 注释 |
关键行都有中文注释解释"为什么" |
| 路径 | 用 // 开头表示源码根目录,这是 GN 的写法 |
| 省略 | 用 // ... 表示这里省略了不重要的代码,不是真的让你抄三个点 |
| 版本 | API 会随版本变化,以你手上 SDK 的头文件为准。书里写的是逻辑,不是精确的 API 名 |
⚠️ 最重要的一条:不要指望复制粘贴就能跑通。
不同 SDK 版本的函数名、参数、头文件路径可能不一样。
学会看报错、学会查头文件、学会搜——这三件事比记住 API 重要一百倍。
七、卡住了怎么办
这是全书最实用的一节。 建议你在第 03 章卡住的时候回来重读。
7.1 排错心法:从简单到复杂
新手遇到问题的第一反应通常是"代码错了",然后开始逐行检查代码。
这是效率最低的做法。 正确的顺序是从最简单、最物理的那一层开始:
第 1 层:物理层 —— 线插了吗?电有吗?
├─ 电源灯亮吗?
├─ USB 线是数据线还是充电线?
├─ 杜邦线有没有松动 / 插错孔?
└─ 用万用表量一下 VCC 和 GND 之间是不是该有的电压
↑ 30% 的问题在这里
第 2 层:连接层 —— 电脑认得板子吗?
├─ 设备管理器里有没有出现串口(COMx)?
├─ 虚拟机有没有把 USB 透传进去?
├─ 驱动装了吗(CH340 / CP210x)?
└─ 串口号选对了吗?
↑ 再 30% 的问题在这里
第 3 层:工具层 —— 工具用对了吗?
├─ 波特率对吗?(一般 115200)
├─ 烧录模式进去了吗?(按 RST 了吗?)
├─ 选的固件路径是最新的吗?
└─ 编译的产品选对了吗?(hb set)
↑ 再 20% 在这里
第 4 层:代码层 —— 逻辑对吗?
├─ 代码真的编进去了吗?(BUILD.gn 加了吗?上层 features 加了吗?)
├─ 引脚号对吗?
├─ 初始化函数调用了吗?
└─ 延时单位对吗?(osDelay 是 tick 不是毫秒!)
↑ 只有剩下的 20% 在这里
记住这个比例:80% 的问题不在代码里。
7.2 五步自救法
遇到报错,按顺序做这五件事:
第一步:完整读一遍报错信息。
我知道它又长又红又吓人,但——90% 的报错里面已经写了原因。
比如这行:
fatal error: iot_gpio.h: No such file or directory
翻译:找不到 iot_gpio.h 这个头文件
原因已经写在脸上了:要么是路径没配对,要么是这个头文件根本不存在
第二步:复制报错原文去搜。
不要自己组织语言描述问题。就复制原文,整行复制。
❌ 搜索:"鸿蒙编译找不到头文件怎么办啊"
✅ 搜索:"fatal error: iot_gpio.h: No such file or directory"
你踩的坑,全网踩过的人成千上万。你不是一个人在战斗。
第三步:确认"最简单的部分"是对的。
灯不亮 → 先用杜邦线把那个脚直接接 VCC,看灯亮不亮。
读不到传感器 → 先写个 I2C 扫描程序,看能不能找到设备地址。
网络不通 → 先 ping 一下。
先证明最简单的那部分是对的,再怀疑复杂的部分。
第四步:二分法定位。
如果不知道问题出在哪一段,就砍掉一半。
代码跑不起来?
→ 只留初始化,其他全注释掉 → 能跑吗?
├─ 能 → 问题在被注释掉的那部分,再砍一半
└─ 不能 → 问题在初始化,继续砍
第五步:睡一觉。
这不是玩笑。很多折腾三小时没解决的问题,第二天早上十分钟就找到了。
疲劳会让你反复检查同一个地方,却看不见明显的错误。
7.3 求助的正确姿势
如果你要问别人,这样问能让你得到答案的概率提高十倍:
❌ 差的提问:
"我的板子跑不起来,求大佬看看"
(没人知道你遇到的是什么问题)
✅ 好的提问:
【目标】想让 Hi3861 读 SHT30 的温湿度
【现象】串口一直打印 "read failed, ret=-1"
【已确认】
· 上拉电阻 4.7k 已接
· I2C 扫描能找到 0x44
· 单独调用 IoTI2cWrite 也返回 -1
【代码】(贴关键 10 行,不要贴 500 行)
【报错】(贴完整原文)
四要素:目标 / 现象 / 已确认 / 代码+报错原文。
更重要的是——"已确认"那一栏经常能让你自己找到答案。 因为写下来的过程中你会重新检查一遍。
7.4 去哪儿找答案
| 优先级 | 渠道 | 说明 |
|---|---|---|
| 1 | 报错原文 + 搜索引擎 | 最快,覆盖 80% 的问题 |
| 2 | OpenHarmony 官方文档 | gitee.com/openharmony/docs |
| 3 | 源码里的头文件 | 想确认某个 API 到底叫什么,去头文件里找,比搜文档快 |
| 4 | 芯片厂商的样例仓库 | 润和 / 小熊派等厂商有配套 Demo |
| 5 | 技术社区 / 群 | 用 7.3 的格式提问 |
| 6 | 书里的"翻车急救手册" | 第 03、04、05、07、08、10 章末尾都有 |
7.5 四种常见死局
死局一:环境死活装不上
- 症状:编译一直报错,换了好几种方法都不行
- 解法:虚拟机快照回滚,重来一次。或者——先跳过南向,去第 06 章学北向(DevEco Studio 装起来比南向简单得多)。不要在一堵墙上撞死。
死局二:代码一模一样,别人能跑我不能跑
- 症状:照着教程抄的,就是不行
- 解法:99% 是版本不一致。查你的 SDK 版本,查你的开发板型号,查你的引脚定义。书里写的是逻辑,你的环境是具体的。
死局三:前几天还好好的,突然不行了
- 症状:什么都没改,突然就坏了
- 解法:想想你最后改了什么。 如果确定没改代码,那就是硬件——线松了、板子供电不足、传感器坏了。换根线试试。
死局四:完全不知道该从哪下手
- 症状:太难了,看不懂,想放弃
- 解法:回到上一章的产出,确认它是好的。 然后往前走一小步——只做最小的一步,跑通了再走下一步。你不是不行,你只是步子迈太大了。
八、本书的约定
8.1 术语约定
| 本书说法 | 也可能被称为 |
|---|---|
| 南向 / 设备开发 | 底层开发、驱动开发、嵌入式开发 |
| 北向 / 应用开发 | App 开发、上层开发 |
| 轻量系统 | mini system、L0 |
| 小型系统 | small system、L1 |
| 标准系统 | standard system、L2 |
| 开发板 / 板子 | 模组、单板、Demo 板 |
8.2 关于版本
这本书里的 API 名字、文件路径、命令参数,可能会随着版本变化。
这不是书写错了,是这个领域本身就在快速迭代。遇到对不上的地方:
- 查你手上 SDK 的头文件(最快)
- 查对应版本的官方文档
- 搜索报错原文
书里讲的是"为什么"和"怎么做",这些不会变。 变的只是具体函数名。
8.3 关于合规
这本书教的是如何构建,不是如何破坏。
所有涉及"修改别人的东西"的技术,请只用在:
- ✅ 你自己写的代码
- ✅ 你自己拥有的设备
- ✅ 明确授权你测试的环境
- ✅ 开源项目
不要用在:别人的应用、商业软件、付费内容、任何你不拥有或者没有授权的东西。
老陈在第 12 章留下的三条铁律里,最后一条就是这条。技术越高,这条线越重要。
九、出发前最后一句话
这本书的路线,是从点亮一盏灯开始,到做出一个能放进简历的东西结束。
中间你会经历:
- 第 03 章的挫败(几乎每个人都会)
- 第 04 章灯亮时那一下子的开心
- 第 05 章第一次读到传感器数据时的"卧槽真的可以"
- 第 06 章写界面时的顺畅
- 第 09/10 章的重新卡住
- 第 12 章做完时的那种"我真的做出来了"
这些都是正常的。 卡住不代表你不行,只代表这一段需要多花点时间。
翻到下一页,我们开始。
=================剧情片段=================
助理:导演,第 00 章就这么结束了吗?一章都没讲技术。
导演:这一章讲的东西比技术重要。
助理:为什么?
导演:因为新手弃坑,90% 不是因为技术太难,是因为不知道自己在哪、要往哪走、卡住了该怎么办。
助理:所以这一章是……
导演:地图、装备清单、和一份"我卡住时的自救手册"。
助理:可是急着动手的人会跳过这一章吧?
导演:会。然后在第 03 章卡死,回来重读这一章。
助理:(笑)那为什么要放在最前面?
导演:因为我希望有人的第 03 章,能过得稍微顺一点。
========================================
本章自检
- ☐ 我知道这本书适不适合我,以及我该选哪种读法
- ☐ 我对照第二节做了自检,知道自己缺什么、要补多久
- ☐ 我知道要买哪些东西,预算大概是多少
- ☐ 我看过第四节的全书路线图,知道五个阶段各自产出什么
- ☐ 我知道遇到问题时,按"物理层→连接层→工具层→代码层"的顺序排查
- ☐ 我知道求助时要给出"目标 / 现象 / 已确认 / 代码+报错原文"
下一章:第 01 章 · 鸿蒙初开 —— 先搞清楚你到底要学的是哪个"鸿蒙"。


