1、鸿蒙系统概述:鸿蒙的诞生背景、技术架构全景、开源许可协议解析
1.1 鸿蒙的诞生背景
说实话,鸿蒙的诞生不是一拍脑袋的决定。
2019年,华为被列入实体清单。谷歌停止GMS服务授权。安卓系统虽然开源,但核心的谷歌移动服务(GMS)说断就断。我那时候正在做一款海外市场的IoT设备,突然被告知不能预装Google Play了。嗯,那感觉就像你盖好了房子,结果开发商把门锁换了。
但鸿蒙的野心不止于此。它要解决一个更根本的问题:万物互联时代,设备之间的割裂。
你想想看,手机、平板、手表、电视、车机、智能家居……每个设备都有自己的操作系统。它们之间通信靠蓝牙、Wi-Fi、甚至二维码扫码。这效率太低了。鸿蒙想做的,是让这些设备像一台设备一样协同工作。
我个人习惯把鸿蒙的诞生归结为三个驱动力:
- 外部压力:安卓/GMS断供,必须有自己的备胎
- 技术趋势:IoT时代需要分布式架构,安卓是单设备架构
- 战略布局:华为从硬件公司转型为软硬件生态公司
核心观点:鸿蒙不是安卓的替代品,而是面向下一代计算场景(全场景智慧生活)的操作系统。
1.2 技术架构全景
鸿蒙的架构,我拆成四层来讲。这样好理解。
1.2.1 内核层
鸿蒙采用了多内核设计。什么意思?就是它不绑定一个内核。
在内存大于128MB的设备上,它跑Linux内核。在内存小于128MB的设备上,它跑LiteOS内核。我刚开始移植时也觉得奇怪,为什么不用统一内核?后来在项目中遇到一个智能插座,只有64KB内存,Linux根本跑不起来。这时候LiteOS就派上用场了。
鸿蒙通过一个叫KAL(内核抽象层)的接口层,把底层内核差异屏蔽掉。上层应用不用管底层是Linux还是LiteOS,API是一样的。
避坑指南:我曾经在移植时忽略了KAL层的配置,结果上层服务调用pthread_create直接崩溃。后来发现是LiteOS的线程模型和Linux不一样,需要在KAL层做适配。
1.2.2 系统服务层
这一层是鸿蒙的核心能力。包括:
- 分布式软总线:让设备之间像局域网一样通信,延迟低至1ms
- 分布式数据管理:数据跨设备同步,比如手机上的文件可以直接在平板上编辑
- 分布式任务调度:一个设备上的任务可以迁移到另一个设备上执行
- UI框架:ArkUI,声明式UI,类似Flutter
我印象最深的是分布式软总线。它用了COAP+自定义协议,在局域网内实现设备发现和通信。我在项目中测试过,两台设备之间传输1KB数据,平均耗时不到3ms。这比蓝牙快了一个数量级。
1.2.3 框架层
这一层给开发者提供API。包括:
- Ability框架(类似Android的Activity)
- 多模输入(触摸、语音、手势)
- 安全框架(基于微内核的TEE)
说白了,开发者写应用时,调用的就是这一层的接口。你不需要关心底层是Linux还是LiteOS,也不需要关心设备之间怎么通信。框架层帮你封装好了。
1.2.4 应用层
这一层就是用户看到的APP。鸿蒙的应用有两种:
- 原子化服务:轻量级,即用即走,不需要安装
- 传统应用:类似安卓的APK,需要安装
我个人觉得原子化服务是鸿蒙的一个亮点。比如你扫一个共享单车的二维码,直接弹出原子化服务,扫码开锁,用完即走。不需要下载APP,不需要注册。这在IoT场景下非常实用。
1.3 开源许可协议解析
鸿蒙的开源协议,很多人搞不清楚。我直接说重点。
鸿蒙开源项目叫OpenHarmony,采用Apache 2.0协议。这个协议很宽松,你可以:
- 自由使用、修改、分发
- 用于商业项目
- 闭源发布(不需要开源你的修改)
但有一个条件:保留原作者的版权声明。你不能说这是你自己写的。
注意:华为的HarmonyOS(商用版)和OpenHarmony(开源版)不完全一样。HarmonyOS包含了华为的闭源组件(比如HMS Core、部分驱动)。如果你做商业产品,建议基于OpenHarmony开发,避免法律风险。
我遇到过一些开发者,直接拿HarmonyOS的镜像改一改就卖产品。结果被华为法务找上门。嗯,开源不等于免费商用。Apache 2.0协议虽然宽松,但你不能用华为的商标和闭源组件。
另外,鸿蒙的三方库和工具链也遵循不同的协议:
| 组件 | 协议 | 说明 |
|---|---|---|
| OpenHarmony内核 | Apache 2.0 | 可商用,需保留版权 |
| LiteOS内核 | BSD 3-Clause | 可商用,需保留版权 |
| ArkUI框架 | Apache 2.0 | 可商用 |
| HMS Core | 闭源 | 需华为授权 |
我的建议:如果你做开源项目,用OpenHarmony。如果你做商业产品,也建议用OpenHarmony,然后自己封装闭源组件。这样既合规,又灵活。
1.4 小结
这一章我们聊了鸿蒙的诞生背景、技术架构和开源协议。说白了,鸿蒙是一个面向全场景的分布式操作系统。它的架构设计很灵活,内核可大可小,服务可拆可合。开源协议也很友好,Apache 2.0让你可以放心商用。
下一章,我会带你搭建鸿蒙的移植开发环境。包括交叉编译工具链、模拟器、真机调试等。嗯,这部分我踩过不少坑,到时候我会把避坑指南都写出来。
记住一句话:鸿蒙移植,内核适配是基础,分布式能力是灵魂。