01 它是干嘛的
鸿蒙是面向「多设备」设计的操作系统。它不把每台设备当成独立电脑,而是通过一套分布式软总线把它们连成一个整体:应用可以调用别的设备的摄像头、屏幕、麦克风,用户感觉不到设备之间的边界。它同时是华为摆脱对安卓依赖的关键一步。
02 为什么会有它
设备各自为政的年代:把手机照片放到电视上要倒腾半天
过去,每一台设备都是一座孤岛。手机、平板、电视、手表各跑各的系统,彼此之间并不认识。你想把手机里的照片投到电视上,要用数据线、U 盘、云盘,或者装一个专门的投屏 App;想用电视的摄像头又得另配一个。设备越多,麻烦越多。
对开发者来说更累。同一款应用,要给手机写一遍、给手表写一遍、给电视再写一遍,代码不通用、界面要重做、适配成本成倍增长。结果就是很多小厂商根本无力覆盖多种设备,用户买了很多设备,却享受不到它们协作的好处。
鸿蒙换了一个根本思路:不把设备当独立的电脑,而是当成一台「超级设备」的不同部件。手机是它的通信模块和相机,电视是它的大屏,手表是它的传感器。要做到这一点,底层必须有一套让设备互相发现、互相调用能力的机制——这就是分布式软总线。
03 它怎么工作
核心机制是「发现—组网—抽象—调用」四步:先把附近的设备找出来并连成一张网,再把每个设备的能力抽象成可调用的接口,应用只需调用接口,不必关心这个能力实际来自哪台设备。
分布式软总线:多个设备是怎么被当成一台机器的
- 1① 设备发现
同一账号或附近的设备通过蓝牙、Wi-Fi 等近场方式互相打招呼,确认彼此身份与可信关系。
- 2② 建立软总线
系统在设备之间建立统一的数据通道,屏蔽底层究竟是 Wi-Fi 还是蓝牙,上层只看到「一条通道」。
- 3③ 能力抽象
每台设备把自己的相机、麦克风、屏幕、算力注册成「能力」,供其他设备申请使用。
- 4④ 任务迁移与协同
应用可以把视频播放从手机迁到电视,把手机摄像头画面取到平板,用户看到的是同一个应用在无缝接力。
- 5⑤ 应用无感知收尾
应用只需声明「我要用摄像头」,系统负责挑一台最合适的设备并把数据送回来,开发者不必写一堆设备适配代码。
04 谁在用它
手机上复制的文字、拍的照片,直接在平板和电脑上粘贴使用,会议也能从手机一键转到智慧屏。
手机与车机打通,导航、音乐、通讯录自动流转,上车即用,不用重新设置一遍。
用手机或手表统一控制家里的灯、空调、门锁,设备之间就近联动,不必每个品牌装一个 App。
手表负责采集心率与睡眠数据,手机负责展示与长期存储,二者共享同一套健康数据。
用同一套代码适配手机、平板、车机、手表等多种屏幕形态,降低多设备适配成本。
05 怎么用
开发者需要安装官方的 DevEco Studio 开发工具,用 ArkTS 语言写界面。华为同时提供模拟器,不必先买真机就能开始开发。
- 01到华为开发者官网下载并安装 DevEco Studio(自带 SDK 管理器)。
- 02新建工程,选择 ArkTS 语言的空白模板,并指定目标设备类型。
- 03在页面里用 ArkUI 声明式语法写界面,用组件树描述「长什么样」。
- 04需要跨设备能力时,调用分布式相关的系统接口,声明要用到的设备能力。
- 05用本地模拟器或真机预览运行,调试界面与逻辑。
- 06打包签名后上架华为应用市场,或安装到自己的设备上。
@Entry
@Component
struct Index {
@State message: string = '你好,鸿蒙'
build() {
Column() {
Text(this.message)
.fontSize(24)
.fontWeight(FontWeight.Bold)
Button('点我')
.onClick(() => {
this.message = '已连接附近的设备'
})
}
.width('100%')
.padding(20)
}
}避坑提示
- !鸿蒙为不同设备准备了不同形态,开发前先确认目标设备的屏幕尺寸与交互方式,别把手机界面直接搬到大屏。
- !分布式调用依赖账号与信任关系,调试跨设备能力时先把两台设备的账号与网络配好。
- !生态仍处于建设期,部分海外常用应用的适配情况需要提前评估。
06 关键概念
- 分布式软总线
- 一套把附近设备连起来、让它们互相调用能力的底层通道,像是设备之间的「内部专线」。
- 方舟编译器
- 华为自研的编译器,把开发者写的代码提前编译成机器能直接执行的形式,减少运行时的翻译开销。
- 元服务
- 不用安装完整 App,用户点开即用的一小块服务,类似「用完即走的小程序」。
- 沙箱
- 每个应用被关在独立的小房间里,只能通过系统允许的通道访问外部,防止一个应用乱动别人的数据。