HarmonyOS APP<<古今职鉴定>>开源教程第1篇:初识鸿蒙:为什么选择 HarmonyOS?
本篇从鸿蒙生态、HarmonyOS NEXT、ArkTS/ArkUI 技术栈和「古今职鉴」项目出发,帮助你建立学习鸿蒙开发的整体认知。
本篇为理论篇,帮助你全面了解鸿蒙生态、技术优势和开发机遇
学习目标

图:古今职鉴项目中的课程与案例模块,后续教程会围绕真实项目逐步展开。
完成本篇后,你将能够:
- ✅ 了解鸿蒙操作系统的发展历程和战略意义
- ✅ 理解鸿蒙与 Android/iOS 的核心差异
- ✅ 掌握鸿蒙原生应用的独特优势
- ✅ 了解「古今职鉴」项目的功能和技术架构
预计学习时间
约 30-45 分钟(纯理论,无需编码)
第一部分:鸿蒙生态现状与发展趋势
1.1 鸿蒙操作系统的诞生背景
2019年8月9日,华为在开发者大会上正式发布了 HarmonyOS(鸿蒙操作系统)。这个名字来源于中国古代神话中的"鸿蒙",意为天地未开辟之前的混沌状态,寓意着一个全新时代的开始。
鸿蒙诞生的三个关键背景:
- 技术自主可控的需求
- 2019年华为被列入实体清单,无法使用 Google 移动服务(GMS)
- 这促使华为加速自研操作系统的开发
- 鸿蒙从"备胎"转正,成为华为设备的核心操作系统
- 万物互联时代的到来
- 智能手机、平板、手表、电视、汽车等设备越来越多
- 传统操作系统(Android、iOS)主要为单一设备设计
- 需要一个能够统一管理多种设备的操作系统
- 用户体验的升级需求
- 用户希望在不同设备间无缝切换
- 传统方式需要在每个设备上单独安装和配置应用
- 需要一种更智能的跨设备协同方案
1.2 鸿蒙的发展历程
| 时间 | 版本 | 里程碑事件 |
|---|---|---|
| 2019年8月 | HarmonyOS 1.0 | 首次发布,搭载于智慧屏产品 |
| 2020年9月 | HarmonyOS 2.0 | 开源,支持手机、平板等设备 |
| 2021年6月 | HarmonyOS 2.0 正式版 | 首次搭载于华为手机 |
| 2022年7月 | HarmonyOS 3.0 | 超级终端、万能卡片升级 |
| 2023年8月 | HarmonyOS 4.0 | 小艺智能体、全场景智能 |
| 2024年10月 | HarmonyOS NEXT | 纯血鸿蒙,不再兼容 Android |
HarmonyOS NEXT 的重大意义:
HarmonyOS NEXT(也称为"纯血鸿蒙")是鸿蒙发展史上最重要的里程碑:
- 完全自主研发:不再基于 Android 开源项目(AOSP),从内核到框架全部自研
- 全新技术栈:ArkTS + ArkUI 成为唯一的开发方式
- 性能大幅提升:没有虚拟机开销,原生应用运行更流畅
- 安全性增强:全新的安全架构,更好地保护用户隐私
1.3 鸿蒙生态的市场数据
截至 2025 年初,鸿蒙生态已经取得了令人瞩目的成绩:
设备数量:
- 鸿蒙设备总量突破 10 亿台
- 覆盖手机、平板、手表、电视、汽车等 200+ 品类
- 合作伙伴超过 2300 家
应用生态:
- 原生应用数量超过 15000 款
- 头部应用覆盖率超过 99%
- 日活跃用户超过 4 亿
开发者生态:
- 注册开发者超过 700 万
- 开发者培训认证超过 100 万人次
- 高校合作超过 300 所
1.4 为什么现在是学习鸿蒙的最佳时机?
1. 蓝海市场,机遇巨大
与 Android 和 iOS 相比,鸿蒙原生应用市场仍处于早期阶段:
| 平台 | 应用数量 | 开发者数量 | 竞争程度 |
|---|---|---|---|
| Android | 350万+ | 数千万 | 极高 |
| iOS | 200万+ | 数百万 | 很高 |
| HarmonyOS | 1.5万+ | 700万 | 较低 |
早期入局者有更多机会获得用户和市场份额。
2. 华为的大力支持
华为为鸿蒙开发者提供了丰富的支持:
- 开发工具:DevEco Studio 免费使用,功能强大
- 技术文档:官方文档详尽,中文支持完善
- 培训资源:免费的在线课程和认证考试
- 推广支持:优质应用可获得应用市场推荐
- 商业变现:华为应用市场分成比例优惠
3. 技术栈友好
如果你有以下背景,学习鸿蒙会更加轻松:
- 前端开发者:ArkTS 基于 TypeScript,语法相似
- React/Vue 开发者:声明式 UI 思想相通
- Android/iOS 开发者:组件化开发模式类似
第二部分:鸿蒙 vs Android/iOS 开发者视角对比
2.1 开发语言对比
| 特性 | HarmonyOS (ArkTS) | Android (Kotlin) | iOS (Swift) |
|---|---|---|---|
| 语言基础 | TypeScript 超集 | JVM 语言 | 苹果自研 |
| 类型系统 | 强制静态类型 | 可选静态类型 | 强制静态类型 |
| 空安全 | 内置支持 | 内置支持 | 内置支持 |
| 学习曲线 | 较平缓(前端友好) | 中等 | 中等 |
| 生态成熟度 | 发展中 | 非常成熟 | 非常成熟 |
ArkTS 的特点:
// ArkTS 代码示例
@Entry
@Component
struct HelloWorld {
@State message: string = 'Hello, HarmonyOS!';
build() {
Column() {
Text(this.message)
.fontSize(24)
.fontWeight(FontWeight.Bold)
Button('点击我')
.onClick(() => {
this.message = '你好,鸿蒙!';
})
}
}
}
ArkTS 相比 TypeScript 的主要限制:
| 限制 | 原因 |
|---|---|
禁止使用 any 类型 |
确保类型安全,提升性能 |
| 对象字面量必须有类型声明 | 明确数据结构,便于优化 |
| 禁止动态属性访问 | 编译期优化,减少运行时开销 |
| 禁止索引签名 | 使用 Map 替代,更安全 |
2.2 UI 框架对比
| 特性 | HarmonyOS (ArkUI) | Android (Compose) | iOS (SwiftUI) |
|---|---|---|---|
| 编程范式 | 声明式 | 声明式 | 声明式 |
| 状态管理 | @State/@Link/@Provide | remember/State | @State/@Binding |
| 布局系统 | Column/Row/Flex | Column/Row/Box | VStack/HStack/ZStack |
| 组件复用 | @Component/@Builder | @Composable | View/ViewModifier |
| 预览功能 | 支持 | 支持 | 支持 |
三大平台的 UI 代码对比:
// HarmonyOS (ArkUI)
@Component
struct Counter {
@State count: number = 0;
build() {
Column() {
Text(`计数: ${this.count}`)
Button('增加').onClick(() => this.count++)
}
}
}
// Android (Jetpack Compose)
@Composable
fun Counter() {
var count by remember { mutableStateOf(0) }
Column {
Text("计数: $count")
Button(onClick = { count++ }) { Text("增加") }
}
}
// iOS (SwiftUI)
struct Counter: View {
@State private var count = 0
var body: some View {
VStack {
Text("计数: \(count)")
Button("增加") { count += 1 }
}
}
}
可以看到,三大平台的声明式 UI 思想非常相似,学会一个,其他两个也能快速上手。
2.3 原生能力对比
鸿蒙提供了许多独有的原生能力:
| 能力 | HarmonyOS | Android | iOS |
|---|---|---|---|
| 分布式软总线 | ✅ 原生支持 | ❌ 需第三方 | ❌ 需第三方 |
| 原子化服务 | ✅ 原生支持 | ❌ 不支持 | ❌ 不支持 |
| 服务卡片 | ✅ 原生支持 | ✅ Widget | ✅ Widget |
| 握姿感应 | ✅ 原生支持 | ❌ 不支持 | ❌ 不支持 |
| 隔空投送 | ✅ 原生支持 | ❌ 不支持 | ✅ AirDrop |
| 多设备协同 | ✅ 原生支持 | ❌ 需第三方 | ✅ Handoff |
第三部分:鸿蒙原生应用的独特优势
3.1 分布式软总线
分布式软总线是鸿蒙最核心的技术创新,它让多设备协同变得简单自然。
什么是分布式软总线?
想象一下,你家里有多个智能设备:手机、平板、电视、音箱、手表。传统方式下,每个设备都是独立的"孤岛",要让它们协同工作非常麻烦。
分布式软总线就像一条"高速公路",把所有设备连接起来:
┌─────────────────────────────────────────────────────────┐
│ 分布式软总线 │
├─────────────────────────────────────────────────────────┤
│ │
│ 📱 手机 ←→ 📱 平板 ←→ 💻 电脑 ←→ ⌚ 手表 │
│ ↑ ↑ │
│ └──────────────→ 📺 电视 ←───────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
分布式软总线的应用场景:
- 跨设备任务流转
- 手机上看到一半的视频,可以无缝"流转"到电视上继续看
- 平板上编辑的文档,可以"流转"到电脑上继续编辑
- 多设备协同
- 手机拍照,照片自动同步到平板和电脑
- 手表检测到运动数据,自动同步到手机健康应用
- 分布式数据管理
- 应用数据在多设备间自动同步
- 用户无需手动传输文件
3.2 原子化服务
原子化服务是鸿蒙的另一个创新概念,它改变了用户使用应用的方式。
什么是原子化服务?
传统应用需要用户:下载 → 安装 → 打开 → 使用
原子化服务只需要:发现 → 使用
原子化服务的特点:
| 特点 | 说明 |
|---|---|
| 免安装 | 用户无需下载完整应用,即点即用 |
| 轻量化 | 服务包体积小,加载速度快 |
| 即用即走 | 用完即走,不占用存储空间 |
| 卡片入口 | 可以通过桌面卡片直接触达 |
原子化服务的应用场景:
- 扫码点餐:扫描餐厅二维码,直接打开点餐服务,无需下载 App
- 共享单车:扫描单车二维码,直接开锁骑行
- 快递查询:收到快递短信,点击链接直接查看物流信息
- 景区导览:到达景区,自动推送导览服务
3.3 服务卡片
服务卡片是鸿蒙桌面的重要组成部分,让用户无需打开应用就能获取信息。
服务卡片的优势:
┌─────────────────────────────────────────────────────────┐
│ 桌面 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 天气卡片 │ │ 日历卡片 │ │ 音乐卡片 │ │
│ │ ☀️ 25°C │ │ 📅 今日 │ │ 🎵 正在播放 │ │
│ │ 晴转多云 │ │ 3个会议 │ │ 周杰伦-稻香 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌───────────────────────────────┐ │
│ │ 新闻卡片 (2x4) │ │
│ │ 📰 今日头条新闻... │ │
│ └───────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
服务卡片的规格:
| 规格 | 尺寸 | 适用场景 |
|---|---|---|
| 1×2 | 小卡片 | 简单信息展示(天气、步数) |
| 2×2 | 中卡片 | 常规信息展示(日历、音乐) |
| 2×4 | 大卡片 | 丰富信息展示(新闻、待办) |
| 4×4 | 超大卡片 | 复杂交互(地图、相册) |
3.4 一次开发,多端部署
鸿蒙的"一次开发,多端部署"能力,让开发者可以用一套代码适配多种设备。
支持的设备类型:
| 设备类型 | 屏幕特点 | 交互方式 |
|---|---|---|
| 手机 | 竖屏为主,5-7英寸 | 触摸 |
| 平板 | 横屏为主,10-12英寸 | 触摸 + 键盘 |
| 折叠屏 | 可折叠,展开8英寸+ | 触摸 |
| 2in1 | 可拆卸键盘,12英寸+ | 触摸 + 键盘 + 鼠标 |
| 智慧屏 | 大屏,55英寸+ | 遥控器 + 语音 |
| 手表 | 圆形/方形,1-2英寸 | 触摸 + 旋转表冠 |
| 车机 | 横屏,10-15英寸 | 触摸 + 语音 |
响应式布局示例:
// 根据屏幕宽度自动调整布局
@Entry
@Component
struct ResponsivePage {
@StorageProp('currentBreakpoint') currentBreakpoint: string = 'md';
build() {
// 小屏:单列布局
// 中屏:双列布局
// 大屏:三列布局
GridRow({
columns: { sm: 1, md: 2, lg: 3 }
}) {
ForEach(this.items, (item) => {
GridCol() {
ItemCard({ item: item })
}
})
}
}
}
第四部分:「古今职鉴」项目介绍
本教程以「古今职鉴」项目为案例,这是一款探索古代官职与现代职业对应关系的趣味应用。
4.1 项目背景与创意来源
创意来源:
你是否好奇过:
- 古代的"丞相"相当于现代的什么职位?
- 如果穿越到古代,你会担任什么官职?
- 古代的科举考试有多难?
「古今职鉴」就是为了回答这些有趣的问题而诞生的。
目标用户:
- 对历史文化感兴趣的年轻人
- 想了解古代官职制度的学生
- 喜欢趣味测试的用户
核心价值:
- 寓教于乐,传播传统文化
- 通过古今对比,让历史更有趣
- 提供互动体验,增强用户参与感
4.2 功能模块概览
「古今职鉴」包含以下核心功能模块:
| 模块 | 功能描述 | 技术亮点 |
|---|---|---|
| 职官词典 | 八朝官职百科全书 | List 列表、搜索筛选、收藏功能 |
| 古今匹配 | 输入现代职业,匹配古代官职 | 匹配算法、动画效果 |
| 科举考试 | 六级考试闯关游戏 | 状态管理、计时器、成绩计算 |
| 性格测试 | 古今职业性格测试 | 问卷设计、结果计算、分享 |
| 新年习俗 | 八朝年俗展示 | 农历计算、弹窗、轮播 |
| 握姿祝福 | 左手来财右手来福 | 握姿感应、隔空投送 |
| 桌面卡片 | 年俗日历小组件 | Form 服务卡片、定时更新 |
4.3 技术架构预览
┌─────────────────────────────────────────────────────────┐
│ 应用层 (Application) │
├─────────────────────────────────────────────────────────┤
│ entry/ │
│ ├── pages/ # 页面组件(30+ 页面) │
│ │ ├── MainPage.ets # Navigation 容器 │
│ │ ├── HomePage.ets # 首页 │
│ │ ├── DictionaryPage.ets # 职官词典 │
│ │ ├── MatcherPage.ets # 古今匹配 │
│ │ ├── ExamGamePage.ets # 科举考试 │
│ │ └── ... │
│ ├── common/ # 公共工具 │
│ │ ├── Types.ets # 类型定义 │
│ │ ├── ThemeManager.ets # 主题管理 │
│ │ ├── StorageManager.ets # 存储管理 │
│ │ └── LunarDateUtil.ets # 农历工具 │
│ ├── data/ # 数据文件 │
│ │ ├── QinDynastyPositions.ets # 秦朝官职 │
│ │ ├── HanDynastyPositions.ets # 汉朝官职 │
│ │ └── ... │
│ └── widget/ # 桌面卡片 │
│ └── pages/ │
│ ├── WidgetCard.ets # 1x2 卡片 │
│ └── WidgetCard2x2.ets # 2x2 卡片 │
├─────────────────────────────────────────────────────────┤
│ 框架层 (Framework) │
├─────────────────────────────────────────────────────────┤
│ ArkUI # 声明式 UI 框架 │
│ ArkTS # 开发语言 │
│ Navigation # 路由系统 │
│ AppStorage # 全局状态管理 │
│ Preferences # 本地持久化存储 │
├─────────────────────────────────────────────────────────┤
│ 能力层 (Capabilities) │
├─────────────────────────────────────────────────────────┤
│ MultimodalAwareness # 握姿感应 │
│ ShareKit # 隔空投送 │
│ Form # 服务卡片 │
│ Web # WebView(ECharts 地图) │
└─────────────────────────────────────────────────────────┘
4.4 项目截图预览
首页:
┌─────────────────────────────────────────┐
│ 古今职鉴 ⚙️ │
│ 探索古代官职与现代职业的奇妙联系 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 📚 职官词典 │ │ 🔄 古今匹配 │ │
│ │ 八朝官职百科│ │ 找到你的古代│ │
│ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 🎓 科举考试 │ │ 🧠 性格测试 │ │
│ │ 六级考试闯关│ │ 测测官场性格│ │
│ └─────────────┘ └─────────────┘ │
│ │
├─────────────────────────────────────────┤
│ 🏠 首页 🔍 发现 👤 我的 │
└─────────────────────────────────────────┘
职官词典:
┌─────────────────────────────────────────┐
│ ← 🔍 搜索官职名称 │
├─────────────────────────────────────────┤
│ ┌─────────────────────────────────────┐│
│ │ 秦朝官制 ││
│ │ 三公九卿制度的起源 ││
│ └─────────────────────────────────────┘│
│ ● ○ ○ │
├─────────────────────────────────────────┤
│ [全部] [秦] [汉] [唐] [宋] [明] [清] │
├─────────────────────────────────────────┤
│ ┌─────────────────────────────────────┐│
│ │ [1品] 丞相 [秦] ││
│ │ [文官] 百官之长,辅佐皇帝处理政务 ││
│ └─────────────────────────────────────┘│
│ ┌─────────────────────────────────────┐│
│ │ [1品] 太尉 [秦] ││
│ │ [武官] 掌管全国军事 ││
│ └─────────────────────────────────────┘│
└─────────────────────────────────────────┘
本篇小结
通过本篇学习,你应该了解:
知识要点回顾
| 主题 | 要点 |
|---|---|
| 鸿蒙发展 | 2019年发布,2024年推出纯血鸿蒙 NEXT |
| 市场机遇 | 10亿设备,700万开发者,蓝海市场 |
| 技术对比 | ArkTS 基于 TypeScript,声明式 UI |
| 独特优势 | 分布式软总线、原子化服务、服务卡片 |
| 项目介绍 | 「古今职鉴」7大功能模块 |
为什么选择鸿蒙?
- 市场机遇:早期入局,竞争较小
- 技术友好:前端开发者容易上手
- 华为支持:丰富的开发资源和推广支持
- 创新能力:分布式、原子化等独特优势
下一篇预告
第2篇 开发环境搭建:DevEco Studio 全攻略
下一篇我们将学习:
- DevEco Studio 的下载与安装
- SDK 配置与版本管理
- 模拟器与真机调试配置
- 创建第一个 HarmonyOS 项目
- 项目结构深度解析
参考资料
*本教程基于「古今职鉴」真实项目编写,所有代码均经过实际验证。*
项目开源地址
更多推荐




所有评论(0)