当机器开始彼此交谈:重新理解鸿蒙


一个被问烂了的问题

“鸿蒙到底是不是安卓换皮?”
这个问题被争论了七年,但它其实问错了方向。
评价一项技术工程,不该追问它像谁,而应追问它试图解决什么。

要理解鸿蒙的真正意图,必须回到一个被忽视的事实:
在过去二十年里,操作系统领域几乎没有发生过真正的范式之争。

桌面时代,Windows、macOS、Linux 的格局早已固化。
移动时代,iOS 与安卓双寡头确立后,后来者前赴后继——Windows Phone、Tizen、Firefox OS、Ubuntu Touch——无一幸存。
业界一度形成共识:操作系统的战争结束了,生态壁垒不可逾越。

鸿蒙的登场,最初也被置于这个“注定失败者名单”中审视。
但若将时间轴拉长至今日,我们会发现一件更值得深思的事:
鸿蒙并非在旧战场冲锋,而是在一个旧双寡头尚未布局的新战场上,提前修筑工事。

这个新战场,可以用一句话概括:
计算的单位,正在从“设备”变为“场景”。


旧范式的隐含假设,正在失效

任何操作系统都建立在一组隐含假设之上。
安卓与 iOS 的核心假设可归纳为三点:

  1. 一台设备是一个完整的世界。
    应用装在设备里,数据存在设备里,体验终结于设备边界。

  2. 人是唯一的交互主体。
    所有输入——触摸、语音、手势——最终由人发起。

  3. 手机是所有设备的中心。
    其他设备是手机的“外设”,通过蓝牙、Wi-Fi 和各自 App 松散耦合。

这三条假设在人均智能设备一到两台的时代无懈可击。
但今天,一个普通用户的设备清单可能是:
手机、平板、笔记本、两只手表之一、两副耳机之一、车机、电视、音箱、门锁、灯泡、扫地机器人——十台起步。

此时,旧假设开始崩塌。
崩塌的方式极为具体:
当设备数量超过某个阈值,组合管理的复杂度会超出人的认知带宽。

为每台设备单独安装应用、单独配网、单独登录、单独学习交互逻辑——
五台设备时是麻烦,十五台设备时已是灾难。

产业界为此发明了各种补丁:
Matter 协议、家庭中枢、云平台账号打通……
但这些只是应用层与协议层的缝合,底层操作系统依然各自为政。

协同体验被下放给了每一个应用开发者。
想在手机和手表之间同步数据?每个 App 自己写一套。
想在车机上继续播放手机里的播客?指望两个团队的程序员分别适配。

跨设备体验的复杂度,本应是操作系统消化掉的东西,却被原样转嫁给了整个开发者社群,再以碎片化形式返还给用户。

这就是鸿蒙真正的出发点。
它赌的是一个判断:
设备间的协作不应该是应用层的能力,而应是内核层的能力。

操作系统的基本服务对象,应当从“一台机器上运行的程序”,扩展为“一组设备上流动的任务”。


把“跨设备”焊进内核:软总线的真正含义

鸿蒙最核心、也最容易被低估的技术决策,是分布式软总线。

它的字面意义常被误解为“又一种设备互联协议”,与蓝牙、Wi-Fi Direct 并列。
但这恰恰误解了其层级。

软总线所做的,是在异构物理链路之上,虚构出一层统一的地址空间与通信语义:

  • 物理连接方式(蓝牙、Wi-Fi、星闪)由系统在运行时根据时延、带宽、功耗动态协商,应用无需感知;
  • 每台设备不再是孤立节点,而是逻辑上“同一台计算机”的不同组件;
  • 权限、身份、加密在总线层面统一完成,而非每个应用各自实现。

一个直观但不严谨的类比:
软总线之于多设备,相当于内存总线之于 CPU 与内存。

电脑用户从不关心内存与 CPU 之间用什么协议通信——那是主板的事。
鸿蒙希望达成的效果是:
手机调用平板的摄像头,在开发者的编程模型中,与调用本机摄像头完全一致。

这一决策的深远之处在于,它改变的不是功能清单,而是编程模型的抽象层级。

抽象层级的跃迁,才是软件史上一切平台更替的真正引擎:
汇编到高级语言,命令行到图形界面,单体到云原生——每一次,都是把原本需开发者手工处理的问题,下沉为平台的默认承诺。

软总线将“跨设备协作”从开发者手册的进阶章节,下沉为操作系统的出厂设定。
这是范式层面的变革,而非功能层面的堆叠。


微内核:一个被安全需求重新激活的老想法

微内核并非新概念。
从 Mach 到 L4,学术界论证三十余年,工业界却始终兴趣寥寥。
原因简单:微内核将驱动、文件系统等服务移出内核态,带来跨上下文切换的性能损耗。
在消费电子领域,这笔代价太昂贵。

鸿蒙(以及更早的工业探索)重新激活这一思想,依赖两个时代条件:

第一,攻防形势的变化让“攻击面”成为比“峰值性能”更硬的指标。

宏内核的阿喀琉斯之踵在于:内核态代码构成一个不可分割的信任域。
数千万行代码中的任意一行漏洞,都可能成为系统沦陷的入口。
而漏洞平均修复周期长达数十天。

微内核将信任域压缩至十万行级的核心,其余服务隔离为独立故障域——
单个服务失陷不再传染系统。

更重要的是:小到一定程度的内核,才可能被数学方法完整验证。
这是“安全”从工程指标升维为数学指标的门槛。
跨过这道门槛的系统,才能进入金融终端、工业控制、关键基础设施等高要求场景。

第二,AIoT 时代的设备形态天然碎片化。

从 KB 级内存的传感器节点,到旗舰手机,同一套宏内核无法弹性覆盖。
微内核“核心极小、按需组合服务”的架构,恰好匹配“一套系统,弹性伸缩至任意规模”的全场景野心。

鸿蒙设备上的“元服务”——以卡片形态存在、免安装调起的应用——正是这种弹性的体现:
当目标设备小到无法承载完整 App 时,应用的“最小可用单元”必须被重新定义。


被低估的部分:生态工程的“笨功夫”

技术社区习惯高估架构的优雅,低估生态的笨重。
而鸿蒙故事中最稀缺的,其实是后半段——那些毫无技术美感可言的苦役:

亲手拆除自己的兼容层。
借助安卓兼容完成冷启动,再在生态未稳时主动拔掉兼容层,相当于在飞行中更换发动机。
这一步,Windows Phone 当年不敢做,Tizen 无资格做。
成败尚待时间检验,但敢于设定这一时点本身,已说明决策者洞悉一条规律:
兼容层是止痛药,也是病原体——它缓解迁移阵痛,同时也永久免除开发者为新系统原生开发的动力。
止痛药不停,病不会好。

发明一门“一半是旧的”语言。
ArkTS 没追求语言层面的创新,而是站在 TypeScript 基础上做最小扩展。
这是对迁移成本最诚实的计算:让数百万前端开发者“几乎不用学”就能进场。
历史上所有失败的操作系统,几乎都死于要求开发者“从头再来”。

把系统治理的收口写进 API。
较新版本的鸿蒙收紧后台任务配额,系统会校验应用是否真正在使用其所申请的长时资源。
这种“不讨开发者喜欢”的强约束,恰是生态从草莽期迈向成熟期的标志。
安卓当年也是靠类似的整治才走出卡顿泥潭。
愿意在增长压力下主动收紧自由度,是一种长期主义的能力。


仍未回答的问题

诚实的技术判断,必须列出尚未被证实的部分:

临界质量是否已经达到?
操作系统的生态自循环存在一个经验阈值:低于它,开发者在做公益;高于它,开发者在做生意。
鸿蒙在中国市场的设备规模正逼近这一阈值,但“逼近”与“跨过”之间,隔着的不是数字,而是长尾开发者能否赚到钱——这不是华为能单方面决定的,而是几十万小微开发者的集体投票。

出海的杠杆在哪里?
国内增长依托存量用户升级与新品预装,这一杠杆在海外不存在。
且鸿蒙最锋利的差异化能力——分布式协同——在海外难以发挥:软总线依赖生态内设备密度,而海外市场缺乏这种密度。
鸿蒙在海外可能被迫用自己最不差异化的手段,去打最残酷的阵地战。

下一个范式奇点会不会再次洗牌?
鸿蒙凭借“多设备”这一新假设起家,但 AI 正在制造更新的假设:
当智能体成为操作系统的主要调度对象,当交互从“人操作应用”转向“意图驱动任务编排”,
今天所有操作系统——包括鸿蒙——的架构是否依然成立?

鸿蒙在系统级智能体上的尝试,是在回应这个问题,但答案远未揭晓。
范式红利是有保质期的:上一个吃到红利的人,最容易成为下一个红利的旁观者。


结语

评价鸿蒙,最忌两种姿态:
一种是民族主义式的提前凯旋,将其视为已胜利的象征;
一种是犬儒式的永久存疑,将其一切成绩归因于补贴与情怀。

更冷静的坐标是:
操作系统的历史反复证明,这个领域的霸权看似永恒,实则每隔十几二十年就会因“计算形态迁移”而重新洗牌一次——
大型机到 PC,PC 到手机。

每一次洗牌,旧赢家几乎总是输在“太成功于旧范式”。

鸿蒙的全部意义,不在于它是否击败了谁,而在于它在双寡头宣布终局之后,重新证明了这场游戏还有下一局;
并且用分布式内核、软总线、微内核这一整套自洽的技术叙事,为“下一局会长什么样”提供了一个迄今最完整的工业级答案。

至于这个答案最终是被写进教科书,还是被写进失败案例集——
那要由未来十年的开发者、用户,以及它自身的迭代纪律共同书写。

技术史只保证一件事:
提出正确问题的系统,永远比给出完美答案的系统,活得久。

1. 从“手机系统”到全场景操作系统

很多人第一次接触鸿蒙时,会把它当成另一个 Android 的替代品。实际上,HarmonyOS 的设计起点是“多设备协同”,而不是单纯做一部手机的系统。它把手机、平板、智慧屏、车机、手表甚至传感器设备纳入同一个技术底座,通过统一的应用框架和分布式能力,解决传统系统在多设备场景下割裂的问题。

对开发者而言,鸿蒙值得深入的点也不只是 UI 开发,而是三个核心技术层:分布式软总线、声明式 UI 框架 ArkUI,以及基于 ArkTS 的工程化开发体系。理解这三层,才能真正理解鸿蒙与 Android、iOS 的本质差异。

2. HarmonyOS 与 OpenHarmony:先厘清两个概念

讨论鸿蒙时,经常出现 HarmonyOS 和 OpenHarmony 两个词,它们并不完全等同。OpenHarmony 是由开放原子开源基金会孵化的开源操作系统,提供最底层的分布式能力、内核抽象和应用框架;HarmonyOS 则是华为基于 OpenHarmony 构建的商用发行版,在其上增强了自研组件、生态服务和安全能力。

项目内核定位典型场景
OpenHarmonyLiteOS 和 Linux 双内核开源底座,能力完整且可裁剪智能家居、教育终端、行业设备
HarmonyOS以 OpenHarmony 为基础增强面向消费者的商用系统手机、平板、智慧屏、车机
HarmonyOS NEXT纯鸿蒙内核和运行环境不再兼容 Android APK鸿蒙原生应用生态

理解这层关系有助于判断技术边界:你调试的每一行应用代码最终运行在哪个内核、由哪套运行时接管,比只知道“这是华为系统”更有意义。

3. 分布式架构:软总线如何把多台设备变成一台

鸿蒙最具差异化的能力是分布式架构,其技术核心可以概括为三个词:设备虚拟化、分布式数据和分布式任务调度。下面是分层视角的架构关系。

flowchart TD
    A[应用层 HAP 元服务] --> B[框架层 ArkUI 应用框架]
    B --> C[系统服务层 分布式数据 分布式任务 安全认证]
    C --> D[分布式软总线 设备发现 组网 传输]
    D --> E[内核层 LiteOS 或 Linux]

分布式软总线解决的是“设备怎么连”的问题。它把蓝牙、Wi-Fi、有线等异构链路封装成统一的通信通道,对外提供设备发现、连接、组网和传输能力,应用层不需要关心底层走的是哪条链路。这样,一部手机调用平板上的能力,才能像调用本地能力一样自然。

分布式数据管理解决的是“数据怎么同步”的问题。它提供分布式数据库、分布式数据对象和 KVStore 等能力,并以内置的同步机制维护多端数据一致性。开发者可以通过配置让数据在设备间自动同步,而不是自己写一套网络同步逻辑。

分布式任务调度解决的是“能力怎么迁移”的问题。例如视频从手机流转到智慧屏,本质上不只是投屏,而是把任务以及任务所需的上下文迁移到目标设备继续执行,涉及组件启动、状态恢复和资源切换。

4. ArkTS 与 ArkUI:状态驱动的声明式 UI

ArkTS 是鸿蒙推荐的主开发语言,它在 TypeScript 的基础上增加了面向 UI 开发的约束,例如更严格的静态类型检查。ArkUI 则提供声明式组件化开发范式,界面由状态驱动:状态变化后,框架自动触发受影响组件的重新渲染。

下面是一个包含状态修改的计数器页面:

@Entry
@Component
struct CounterPage {
  @State count: number = 0

  build() {
    Column({ space: 16 }) {
      Text(`当前计数:${this.count}`)
        .fontSize(24)
        .fontWeight(FontWeight.Bold)

      Button('加一')
        .onClick(() => {
          this.count++
        })
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }
}

模板字符串里的 `${this.count}` 会被框架自动追踪:当 count 发生变化时,只有依赖该状态的 Text 组件重新渲染,而不是整页重建。这是 ArkUI 与手动操作 DOM 或原生控件的关键区别。

组件间传值主要依赖状态装饰器,常见的有:

  • @State:组件内部状态,可由自身修改并触发刷新。
  • @Prop:父组件向子组件单向传值,子组件修改不会回传父组件。
  • @Link:父子组件之间的双向同步,任一端修改都会反映到另一端。
  • @Provide 和 @Consume:跨组件层级传递数据,避免逐层透传。
  • @Watch:监听状态变化,在属性变更时执行回调。

下面的代码演示父组件通过 @State 与子组件 @Prop 协作:

@Component
struct ChildCard {
  @Prop title: string

  build() {
    Text(this.title)
      .fontSize(18)
      .fontWeight(FontWeight.Medium)
  }
}

@Entry
@Component
struct ParentPage {
  @State currentTitle: string = '默认标题'

  build() {
    Column({ space: 12 }) {
      ChildCard({ title: this.currentTitle })

      Button('修改标题')
        .onClick(() => {
          this.currentTitle = '标题已更新'
        })
    }
    .width('100%')
    .padding(24)
  }
}

当父组件的 currentTitle 改变时,ChildCard 会收到新的 title 并刷新显示。熟悉这类数据流规则,是写好鸿蒙应用的第一步。

5. 应用工程结构与构建产物

鸿蒙应用不是简单的单一源码文件,而是由 App 级别配置和模块组成。一个典型工程的目录结构如下:

MyApplication/
├── AppScope/
│   └── app.json5
├── entry/
│   ├── src/
│   │   └── main/
│   │       ├── ets/
│   │       │   ├── entryability/
│   │       │   └── pages/
│   │       ├── resources/
│   │       └── module.json5
│   ├── oh-package.json5
│   └── build-profile.json5
├── build-profile.json5
└── oh-package.json5

其中 module.json5 声明模块的能力、Ability 和权限,app.json5 负责应用级配置,oh-package.json5 管理依赖。构建之后产生的包也分几种:HAP 是可安装的应用包,HAR 是静态共享包,HSP 是动态共享包,分别对应不同的代码复用和按需加载策略。

6. 实战:跨设备数据协同的最小示例

多设备协同最能体现鸿蒙的技术特点。以分布式 KVStore 为例,应用写入的数据可以同步到同账号下的其他设备。下面是一个基于 @ohos.data.distributedKVStore 的写入和读取流程:

import distributedKVStore from '@ohos.data.distributedKVStore'

let kvManager: distributedKVStore.KVManager
let kvStore: distributedKVStore.SingleKVStore

const options: distributedKVStore.Options = {
  createIfMissing: true,
  encrypt: false,
  backup: false,
  autoSync: true,
  kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
  securityLevel: distributedKVStore.SecurityLevel.S1
}

kvManager = distributedKVStore.createKVManager({
  bundleName: 'com.example.cooperation'
})

kvStore = kvManager.getKVStore('demoStoreId', options)
await kvStore.put('lastMessage', '来自当前设备的消息')
const value = await kvStore.get('lastMessage')

这个示例的核心不是“存一个键值”,而是数据通过设备虚拟化和同步机制,可以自动出现在同一用户的其他设备上。实际项目中还需要处理权限声明、安全等级和网络状态,但入口正是这种统一的数据抽象。

7. 总结与进阶学习路径

鸿蒙在技术层面真正值得研究的,是“分布式”和“声明式”两个关键词:分布式软总线把多设备连接抽象为一条总线,分布式数据与任务调度让能力跨端流动;ArkTS 和 ArkUI 则用状态驱动的方式重新组织了 UI 开发。两者叠加,才形成与 Android 不同的开发体验。

建议按以下路径继续深入:先完成 DevEco Studio 环境搭建并编译运行一个工程,理解 module.json5 和 Ability;再系统学习 ArkUI 状态装饰器和组件通信,把父子、跨层级数据流搞清楚;然后做一个真实的协同项目,例如多端同步笔记或任务流转,把 KVStore、分布式数据同步和权限体系串起来。走到这一步,才算真正进入鸿蒙原生开发,而不是停留在概念介绍层面。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐