鸿蒙说到底是分布式软总线加上 ArkTS/ArkUI 这套应用框架。ArkTS 的类型限制我适应了一阵,习惯后就好理解了。
Q1: 鸿蒙的历史?为什么要有它?
1
2012-2018 年: 华为的技术积累
华为从 2012 年开始研发自有操作系统,内部代号”鸿蒙”。最初的目标是为 IoT 设备(智能家居、穿戴设备)打造一个轻量级、分布式的操作系统。2018 年美国制裁事件加速了鸿蒙的落地进程——华为需要一个不依赖 Google GMS(Google Mobile Services)的替代方案。
2
2019 年: 鸿蒙 1.0 发布
2019 年华为开发者大会上,鸿蒙 1.0 正式发布。首搭荣耀智慧屏。核心理念是分布式架构——多个设备可以组成一个”超级终端”,共享硬件能力(如手机的摄像头、手表的传感器、平板的屏幕)。不过鸿蒙 1.0 主要面向智慧屏等 IoT 设备,还没有覆盖手机;手机端的规模化落地要等到 2.0。
3
2020-2022 年: 鸿蒙 2.0/3.0 手机端落地
鸿蒙 2.0 开始在手机上大规模推送。华为引入了 HarmonyOS Connect(鸿蒙智联)生态,第三方 IoT 设备可以接入鸿蒙分布式能力。应用开发框架从 Java/JS 逐步转向 ArkTS。但底层仍然兼容 Android APK,引发”鸿蒙是否是 Android 套壳”的争议。
4
2023-2024 年: 鸿蒙 NEXT(纯血鸿蒙)
鸿蒙 NEXT(HarmonyOS NEXT)是鸿蒙的里程碑版本——彻底去除 AOSP 代码,不再兼容 Android APK。应用必须使用 ArkTS + ArkUI 开发,运行在自研的方舟运行时上。这意味着鸿蒙从”兼容 Android”转变为”独立生态”。2024 年第四季度,鸿蒙 NEXT 正式商用。
5
2025 年: 鸿蒙生态加速
鸿蒙 NEXT 商用后,国内主流 App(微信、支付宝、抖音、美团等)陆续推出鸿蒙原生版本。鸿蒙开发者数量快速增长,ArkTS/ArkUI 成为前端开发者需要关注的新技术栈。
鸿蒙的核心创新是分布式架构——通过分布式软总线将多个设备组成”超级终端”,共享硬件能力和数据,同时用 ArkTS + ArkUI 提供统一的应用开发体验。
没有鸿蒙的时代
手机、平板、手表、车机、智能家居各自为战。手机上看到一半的视频,想在平板上继续看,需要手动投屏或重新打开。就像一个公司有 5 个部门,每个部门都有自己的邮箱系统、文件服务器和通讯录,互相不通气。
有了鸿蒙之后
鸿蒙的分布式能力让多个设备组成”超级终端”。手机上正在看的视频,靠近平板自动续播;手表检测到你在跑步,自动让手机切换到运动播放列表。就像所有部门用同一套系统,文件共享、通讯录统一、消息互通。
Q2: 鸿蒙核心架构(ArkTS、ArkUI、方舟编译器)
鸿蒙的应用开发架构由三个核心组件组成:ArkTS(开发语言)、ArkUI(声明式 UI 框架)、方舟编译器(运行时和编译工具链)。ArkTS:鸿蒙的应用开发语言
ArkTS 是基于 TypeScript 的扩展语言,专门为鸿蒙应用开发设计。它在 TypeScript 的基础上增加了声明式 UI 描述能力和状态管理装饰器。ArkUI:声明式 UI 框架
ArkUI 是鸿蒙的声明式 UI 开发框架,设计理念类似 Flutter 的 Widget 系统和 SwiftUI。方舟编译器与运行时
- 先编译成字节码:ArkTS 源码先被编译为方舟字节码(ABC),由方舟运行时加载执行,并不是直接产出机器码
- AOT 与 JIT 混合:可以在安装或设备空闲时把启动路径、热点代码提前 AOT 编译为机器码,运行期也能按需编译
- 静态类型带来的优化空间:ArkTS 去掉了动态特性,编译器能在编译期确定类型,生成更高效的代码
- 并发 GC:垃圾回收不阻塞主线程,减少卡顿
Q3: 鸿蒙 vs Android vs iOS
基础梳理
专家视角深度剖析
很多人只知道”鸿蒙是华为做的操作系统”,但实际更在意的是:你是否理解鸿蒙在分布式能力和开发范式上的独特性,以及它与 Android/iOS 的本质差异? 鸿蒙的三个核心技术差异: 1. 分布式软总线鸿蒙与前端开发的关系
对于前端开发者来说,鸿蒙是一个新的就业方向。ArkTS 基于 TypeScript,ArkUI 的声明式语法类似 React/Vue,前端开发者的学习成本相对较低。Q4: 鸿蒙开发实战
页面开发:ArkUI 声明式语法
状态管理:装饰器体系
网络请求封装
分布式能力调用
鸿蒙开发的核心是 ArkTS + ArkUI 的声明式开发范式,加上分布式软总线的跨设备协同能力。前端开发者可以快速上手,但需要理解分布式架构和方舟编译器的特殊性。
常见追问
ArkTS 和 TypeScript 有什么区别?为什么要单独做一个语言?
ArkTS 和 TypeScript 有什么区别?为什么要单独做一个语言?
答题要点:
ArkTS 基于 TypeScript 但做了严格化限制,目的是让代码在编译期就能确定类型、支持方舟的编译优化。高分回答:
“ArkTS 是基于 TypeScript 的扩展语言,但做了关键的严格化限制:移除的动态特性:对前端开发者的建议:如果你习惯了 TypeScript 的灵活性,ArkTS 的限制会让你不适应。但这些限制是静态编译优化的前提——和 Dart/Flutter 在 AOT 上的取舍类似。”
- 不支持
any类型(所有类型必须明确) - 不支持
eval()和with语句 - 不支持运行时给对象添加新属性
- 不支持动态属性访问(如
obj[dynamicKey])
- 声明式 UI 描述(
build()函数) - 状态管理装饰器(
@State、@Prop、@Link) - 组件生命周期(
aboutToAppear、aboutToDisappear)
any、动态属性访问等特性会让静态分析失效,所以 ArkTS 移除了这些动态特性。鸿蒙的 Stage 模型和 FA 模型有什么区别?
鸿蒙的 Stage 模型和 FA 模型有什么区别?
答题要点:
Stage 模型是鸿蒙当前主推的应用模型,取代了早期的 FA 模型;鸿蒙 NEXT 只支持 Stage 模型。高分回答:
“FA 模型(Feature Ability)和 Stage 模型是鸿蒙的两代应用模型:FA 模型(API 8 及以前,已废弃):Stage 模型的核心改进:
- 借鉴了 Android 的 Activity/Service 思路
- 使用 PageAbility、ServiceAbility、DataAbility
- 早期与兼容 Android 的生态绑定较深
- 鸿蒙自研的应用模型
- 使用 UIAbility + ExtensionAbility + AbilityStage
- 鸿蒙 NEXT 唯一支持的模型
- 更好的分布式能力和生命周期管理
- WindowStage:UIAbility 和窗口分离,支持多窗口
- ExtensionAbility:可扩展的能力类型(如卡片、输入法、壁纸)
- Context:更清晰的上下文管理,支持分布式场景
- AbilityStage:模块级别的生命周期管理”
鸿蒙的分布式软总线是怎么工作的?
鸿蒙的分布式软总线是怎么工作的?
答题要点:
分布式软总线是鸿蒙实现多设备协同的核心基础设施。高分回答:
“分布式软总线是鸿蒙的设备间通信基础设施,让多个设备像一个设备一样协同工作。工作流程:实际应用场景:
- 设备发现:通过 Wi-Fi、蓝牙、NFC 等方式发现周围的鸿蒙设备
- 组网认证:设备之间通过华为账号进行身份认证和安全握手
- 建立连接:在设备之间建立加密的通信通道
- 能力调用:一个设备可以调用另一个设备的硬件能力
- 跨设备剪贴板:手机复制文字,平板直接粘贴
- 分布式文件:平板直接访问手机的文件系统
- 接续能力:手机上编辑的文档,靠近平板自动接续
- 多屏协同:手机屏幕投射到平板,用平板的键盘操作手机
distributedDataObject(分布式数据对象)和 distributedSchedule(分布式调度),可以轻松实现跨设备的数据同步和任务迁移。”方舟编译器的 AOT 编译和 V8 的 JIT 编译有什么区别?
方舟编译器的 AOT 编译和 V8 的 JIT 编译有什么区别?
答题要点:
AOT 提前编译、JIT 运行时编译,方舟采用的是两者混合的策略。高分回答:
“AOT(Ahead-of-Time)和 JIT(Just-in-Time)是两种不同的编译策略:V8 的 JIT 编译:
- 优点:启动快(解释执行),可根据运行时信息优化(如类型推测)
- 缺点:首次执行性能差,编译有延迟,需要存储编译缓存
- 优点:启动路径提前编译,首屏和常用功能没有 JIT 预热;内存占用更可控
- 代价:AOT 需要额外的编译时间与产物体积,无法完全利用运行时类型信息
- App 首次启动:启动路径已 AOT,省掉预热
- App 安装时间:会变长(需要编译)
- 运行时内存:AOT 为主,减少 JIT 编译缓存的占用”
鸿蒙的 @State 和 React 的 useState 有什么异同?
鸿蒙的 @State 和 React 的 useState 有什么异同?
答题要点:
两者都是声明式 UI 的状态管理机制,但底层实现和触发机制不同。高分回答:
“鸿蒙的 鸿蒙 @State 的深度观察:React 的
@State 和 React 的 useState 都是声明式 UI 的状态管理装饰器,但有几个关键区别:相同点:- 都是组件级别的状态管理
- 状态变化时触发 UI 重新渲染
- 都是声明式 UI 范式的核心
useState 不支持这种深度观察——修改对象属性不会触发更新,需要创建新对象。”鸿蒙的跨设备 UI 适配怎么做?
鸿蒙的跨设备 UI 适配怎么做?
答题要点:
鸿蒙提供了自适应布局和断点系统,支持一套代码适配多种设备。高分回答:
“鸿蒙的跨设备 UI 适配核心是自适应布局 + 断点系统:1. 断点系统(Breakpoint System)
鸿蒙定义了 5 个断点,对应不同设备类型:2. 自适应布局组件3. 媒体查询最佳实践:
- 使用
GridRow+GridCol做响应式网格 - 使用
SideBarContainer做大屏/小屏切换 - 使用
Tabs的自适应模式(小屏底部导航,大屏侧边导航) - 图片使用
Image组件的objectFit属性自适应缩放”
🔥 鸿蒙生态的现状和挑战是什么?
🔥 鸿蒙生态的现状和挑战是什么?
答题要点:
鸿蒙生态正在快速增长,但仍面临应用数量、开发者工具和国际化的挑战。高分回答:
“鸿蒙 NEXT 的生态现状可以用’快速增长但仍在早期’来概括:积极面:
- 国内主流 App 已陆续推出鸿蒙原生版本(微信、支付宝、抖音、美团等)
- 华为投入大量资源补贴开发者(鸿蒙开发者激励计划)
- ArkTS/ArkUI 的学习曲线对前端开发者友好
- 分布式能力是 iOS/Android 没有的差异化优势
对前端开发者的机会:
鸿蒙 NEXT 去除 Android 兼容层后,需要大量原生应用。ArkTS 基于 TypeScript,前端开发者是最容易转型的群体。国内大厂(字节、阿里、腾讯、美团)都在组建鸿蒙团队,鸿蒙开发者的需求正在快速增长。面试中的回答策略:
不要回避鸿蒙的挑战(对方会觉得你不客观),但重点强调机会——分布式能力的差异化、前端开发者的转型优势、国产替代的大趋势。”
🔥 鸿蒙和 Flutter 相比,各自的优势是什么?
🔥 鸿蒙和 Flutter 相比,各自的优势是什么?
答题要点:
鸿蒙和 Flutter 是两个不同层面的技术,需要从多个维度对比。高分回答:
“鸿蒙和 Flutter 经常被拿来比较,但它们本质上是不同层面的技术:定位差异:
- Flutter:跨端 UI 框架(跑在 Android/iOS/Web/桌面之上)
- 鸿蒙:操作系统 + 应用开发框架(从内核到应用层的全栈)
各自的优势场景:选鸿蒙的信号:
├── 需要覆盖华为设备(手机/手表/车机/IoT)
├── 需要分布式多设备协同能力
├── 面向国内市场
├── 国产替代需求
└── 前端开发者转型移动开发选 Flutter 的信号:
├── 需要 iOS + Android 双端一致的 UI
├── 需要覆盖 Web 和桌面端
├── 面向全球市场
├── UI 高度定制化
└── 已有 Dart/Flutter 经验实际项目中的选择:
在国内大厂的实践中,很多团队采用’鸿蒙 + Flutter’的混合方案——鸿蒙原生开发用于需要分布式能力的核心场景,Flutter 用于需要像素级一致 UI 的跨端页面。两者不是竞争关系,而是互补关系。“
及格回答 vs 满分回答
问题:“鸿蒙和 Android 的本质区别是什么?”
及格回答(60-70分):“鸿蒙是华为自己做的操作系统,不依赖 Google。开发语言是 ArkTS,UI 框架是 ArkUI。”问题出在:知道表面区别,但不理解技术架构和设计取舍。 满分回答(90-100分):
鸿蒙和 Android 的本质区别在三个层面:内核架构、应用框架、分布式能力。
内核层面,Android 基于 Linux 宏内核,鸿蒙使用自研的微内核。微内核将系统服务(如文件系统、驱动)从内核空间移到用户空间,提高了安全性和可维护性——单个服务崩溃不会导致整个系统崩溃。鸿蒙的微内核还通过了形式化验证(数学证明),安全性高于 Linux 内核。
应用框架层面,Android 使用 Kotlin/Java + Jetpack Compose,鸿蒙使用 ArkTS + ArkUI。ArkTS 基于 TypeScript 但移除了any、eval等动态特性,源码先编译为方舟字节码(ABC),再由方舟运行时以 AOT/JIT 混合方式执行——启动路径和热点代码可以在安装或空闲时提前 AOT 编译[2]。这和 Flutter 的 Dart AOT 思路类似,区别在于方舟保留了字节码这一层,冷门代码路径仍可在运行期编译。
分布式能力是鸿蒙最大的差异化。通过分布式软总线,多个鸿蒙设备可以组成”超级终端”,共享硬件能力和数据[1]。这是 Android 和 iOS 都没有的原生能力——Android 的 Nearby Share 只能传文件,iOS 的 Continuity 只能在 Apple 设备间接力,而鸿蒙的分布式能力可以让手机直接调用平板的摄像头、让手表的传感器数据实时同步到车机。
📚 延伸阅读与引用参考
- 🔗 鸿蒙开发者文档:华为官方的鸿蒙开发文档,覆盖 ArkTS、ArkUI、Stage 模型和分布式能力。[1]
- 📖 方舟编译器技术白皮书:方舟编译器的 AOT 编译原理和 ArkTS 类型系统限制的技术说明。[2]
- 🟢 ArkTS 语言规范:ArkTS 相比 TypeScript 的严格化限制和新增能力的官方规范。[3]
- 📖 HarmonyOS NEXT 技术架构:鸿蒙 NEXT 的整体架构设计,包括 Stage 模型和方舟运行时。[4]
- 🟢 OpenHarmony 开源项目:鸿蒙的开源版本,可以了解底层实现和社区贡献。[5]
- 📖 鸿蒙分布式软总线:分布式软总线的设备发现、组网认证和能力调用的技术细节。[6]
- 🟢 华为开发者大会技术演讲:每年 HDC 大会的技术分享,了解鸿蒙的最新技术演进和生态进展。[7]
