鸿蒙(HarmonyOS NEXT)开发小白入门学习计划表
鸿蒙(HarmonyOS NEXT)开发小白入门学习计划表
适用对象:零基础 / 有少量编程经验、但从未接触过鸿蒙开发的小白。
技术基线:HarmonyOS NEXT(5.0+,API 9~20)、应用模型 Stage、语言 ArkTS、UI 框架 ArkUI 声明式。
总览
0.1 前置假设(你先得有这些)
| 项目 | 要求 | 说明 |
|---|---|---|
| 编程基础 | 懂"变量、循环、函数、条件判断" | 不要求会某门语言,逻辑能看懂即可 |
| 英语/文档 | 能查字典读懂报错 | 官方文档有中文,报错多为英文关键词 |
| 设备 | Win10+/macOS 12+,16G 内存更稳 | 跑模拟器需要一定配置 |
| 时间 | 每周 8~10 小时业余时间 | 全程约 12 周可达"能做并上架一个小应用" |
0.2 学习目标(学完你能做什么)
- 独立用 DevEco Studio 从 0 创建一个 NEXT 项目并运行到模拟器/真机。
- 用 ArkTS + ArkUI 声明式 写出带布局、状态管理、交互的页面。
- 理解并落地 Stage 模型(UIAbility 生命周期、页面路由、组件通信)。
- 完成 数据持久化 + 网络请求,做一个有真实数据的应用。
- 走通 打包 → 签名 → 上架 全流程(对接本工作区发布文档)。
0.3 周次总览表(核心计划表)
| 周次 | 阶段 | 学习主题 | 具体内容(关键字) | 本周实操产出 | 验收标准 |
|---|---|---|---|---|---|
| W1 | 一、环境入门 | 工具链与环境 | DevEco Studio 安装、Node/ohpm、SDK、模拟器/真机、Hello World、工程目录 | 跑通第一个页面 | 模拟器能启动,页面显示文字 |
| W2 | 一、环境入门 | ArkTS 语言基础 | 变量/类型、函数、类、装饰器、Promise/async、与 TS 差异 | 10 个语法小练习 | 能看懂并改写示例代码 |
| W3 | 二、UI 基础 | ArkUI 组件与布局 | Text/Button/Image、Column/Row/Stack、List、Flex、常用属性 | 静态个人名片页 | 布局正确、无报错 |
| W4 | 二、UI 基础 | 状态管理与交互 | @State/@Prop/@Link、事件、@Builder、条件/循环渲染 | 计数器 + 待办列表雏形 | 点击能改数据并刷新 UI |
| W5 | 三、应用模型 | Stage 模型与路由 | UIAbility、AbilityStage、生命周期、Router 跳转、参数传递 | 双页面跳转并传参 | 页面能进能退、参数正确 |
| W6 | 三、应用模型 | 组件通信与资源 | 父子/跨组件通信、AppStorage/LocalStorage、资源与国际化 | 多页面共享状态 Demo | 状态在多页面同步 |
| W7 | 四、数据与网络 | 本地持久化 | Preferences、关系型数据库、文件读写 | 待办数据落盘 | 重启后数据不丢 |
| W8 | 四、数据与网络 | 网络与 JSON | http 模块、JSON 解析、图片加载、loading 态 | 网络新闻列表 | 能拉取并渲染远程数据 |
| W9 | 五、能力进阶 | 权限与系统能力 | 权限申请、弹窗/Toast、通知、多媒体(相册/相机) | 选图并展示 Demo | 能申请权限并调用系统能力 |
| W10 | 五、能力进阶 | 多线程与性能 | TaskPool/Worker、列表性能、懒加载 | 大数据列表流畅滚动 | 滚动不卡顿 |
| W11 | 六、综合实战 | 做完整项目 | 选定项目、搭框架、串联前 9 周能力 | 可运行的项目 v1 | 功能闭环、能演示 |
| W12 | 七、发布上架 | 调试打包上架 | 调试、签名、打包、对接发布文档上架 | 上架包/上架申请 | 走通发布检查清单 |
注:周次为"业余学习"节奏,若全职学习可压缩到 4~6 周。每阶段末尾有"验收标准",全部打勾再进下一阶段,避免夹生。
一、环境入门(W1–W2)
W1:工具链与环境(具体学什么)
- 安装 DevEco Studio:官网下载 NEXT 版(注意区分"鸿蒙"与"元服务"版本)。
- 配置基础环境:Node.js(官方指定版本)、ohpm 包管理器、HarmonyOS SDK(API 9 起步,建议装到最新稳定 API)。
- 模拟器 vs 真机:
- 模拟器:DevEco 内置,首次需下载系统镜像,跑得起来即可,无需实名。
- 真机:设置 → 关于手机 → 连续点击"版本号"开开发者模式 → 开启 USB 调试 → 连接电脑。
- 第一个项目:File → New → Create Project → 选 Empty Ability(Stage 模型) → 运行到模拟器。
- 认识工程目录(必须记住):
entry/ src/main/ets/ # ArkTS 源码(你主要写这里) entryability/EntryAbility.ts # 入口 UIAbility pages/Index.ets # 首页 resources/ # 图片、字符串、布局等资源 module.json5 # 模块配置(权限、ability 声明) AppScope/ # 全局配置 oh-package.json5 # 依赖声明
W1 实操任务:新建 Empty Ability 项目 → 把首页文字改成"我的第一个鸿蒙应用" → 跑通模拟器。
W1 验收:模拟器/真机显示该文字,且你能在文件树里指认 Index.ets 和 module.json5。
W2:ArkTS 语言基础(具体学什么)
- 基础类型:
string / number / boolean / array / object / enum / union类型。 - 函数与类:函数定义、可选参数、默认参数、类与继承、接口
interface。 - 装饰器(重点,ArkTS 灵魂):
@Entry(页面入口)、@Component(自定义组件)、@State(组件内状态)等,先混个眼熟,W4 才深用。 - 异步编程:
Promise、async/await、回调,网络/文件 IO 全靠它。 - ArkTS 与 TypeScript 的差异(必看,避免踩坑):
- 不支持
any滥用、不支持undefined/null随意赋值(有严格类型)。 - 不支持
structural typing的某些灵活写法,要求显式类型。 - 禁止
dynamic类型、运行时不支持instanceof对部分类型。
- 不支持
W2 实操任务:写 10 个语法小练习(变量、函数、类、接口、Promise 各 2 个),例如"用 async/await 模拟一个延时返回的函数"。
W2 验收:能在 .ets 文件里读懂并修改示例代码,编译器报错能根据红波浪线定位。
二、UI 基础(W3–W4)
W3:ArkUI 组件与布局(具体学什么)
- 基础组件:
Text(文本)、Button(按钮)、Image(图片)、TextInput(输入框)、Blank/Divider(分隔)。 - 布局容器(UI 成败关键):
容器 作用 关键属性 Column纵向排列 space、justifyContent、alignItemsRow横向排列 同上 Stack层叠(覆盖) alignContentFlex弹性布局 direction、wrapList/ListItem列表 for_each、lazyGrid网格 columnsTemplate - 常用属性:
width/height(100%、'100vp')、padding/margin、backgroundColor、fontSize/fontColor、borderRadius。 - 尺寸单位:
vp(虚拟像素,自适应)、fp(字体像素,随系统字号缩放)、px(物理像素,少用)。
W3 实操任务:用 Column/Row/Image/Text 做一个"个人名片页"(头像+姓名+简介+按钮)。
W3 验收:布局结构与设计稿一致,真机/模拟器显示正常,无 overflow 告警。
W4:状态管理与交互(具体学什么)
- 状态装饰器(ArkUI 核心机制,必须吃透):
装饰器 作用域 典型用途 @State组件内 组件私有、可变的 UI 状态 @Prop父→子单向 父传子,子改不影响父 @Link父子双向 父子共享同一份状态 @Provide/@Consume跨层级 祖先直接给后代,免逐层传参 @Observed/@ObjectLink嵌套对象 监听对象内部属性变化 - 事件与交互:
onClick、onChange(输入)、onTouch。 - 条件与循环渲染:
if/else控制显隐、ForEach渲染列表。 - @Builder:抽取重复的 UI 片段。
W4 实操任务:① 计数器(@State + onClick 自增);② 待办列表雏形(TextInput 输入 + Button 添加 + ForEach 渲染)。
W4 验收:点击按钮数字变化并即时重绘;输入内容能加入列表显示。
三、应用模型(W5–W6)
本部分与《HarmonyOS架构精读学习文档.md》第 4 章"Stage 模型"互为表里:文档讲原理,本计划讲实操。
W5:Stage 模型与路由(具体学什么)
- UIAbility:应用的"窗口载体",一个应用可含多个 UIAbility;重点学 生命周期:
onCreate → onWindowStageCreate → onForeground → onBackground → onWindowStageDestroy → onDestroy。 - AbilityStage:多个 UIAbility 的"管家",
onCreate里做全局初始化。 - WindowStage:窗口舞台,在此
loadContent('pages/Index')加载首页。 - 页面路由 Router:
router.pushUrl(跳下页)、router.back(返回)、router.replaceUrl(替换)、router.getParams()(取参)。 - module.json5:声明 ability、权限、启动页。
W5 实操任务:新建第二个页面 Detail.ets → 首页按钮 pushUrl 跳过去并传一个 id → 详情页 getParams 读出并展示 → 返回。
W5 验收:能进能退,详情页正确显示传入参数。
W6:组件通信与资源(具体学什么)
- 父子通信:
@Prop/@Link(W4 已学,此处做跨页面强化)。 - 全局状态:
AppStorage(应用级)、LocalStorage(页面级),适合"登录态""主题"等全局数据。 - 资源与国际化:
resources/base/element/string.json(字符串)、media/(图片)、profile/(配置);多语言用zh_CN/en_US目录。 - 卡片/元服务(了解即可):知道有"服务卡片"这种轻量入口,暂不深做。
W6 实操任务:用 AppStorage 存一个"用户名",在首页和详情页都读取并展示,改一处两处同步。
W6 验收:跨页面状态共享生效,且字符串资源抽到了 string.json。
四、数据与网络(W7–W8)
W7:本地持久化(具体学什么)
- Preferences(轻量 KV):适合配置项、登录态,API 简单(
get/put/flush)。 - 关系型数据库(RdbStore):适合结构化数据(如待办、账单),建表、增删改查。
- 文件读写:
fileio/fs操作沙箱目录,存文本或导出。 - 数据模型设计:先画"要存哪些字段",再决定用 Preferences 还是 Rdb。
W7 实操任务:把 W4 的待办列表接入 Preferences/Rdb,实现"添加/删除/勾选完成",杀进程重启后数据还在。
W7 验收:数据持久化成功,重启应用不丢。
W8:网络与 JSON(具体学什么)
- http 模块:
http.createHttp().request(url, options),处理responseCode/result。 - JSON 解析:
JSON.parse/ 接口返回直接映射成自定义接口类型。 - 异步串联:网络请求用
async/await包一层,UI 用@State接数据。 - 图片加载:
Image(url)直接加载网络图,注意加占位/错误图。 - 加载态与异常:loading、空数据、网络错误的三态处理(小白常漏)。
W8 实操任务:调用一个公开 API(如新闻/天气),用 List 渲染远程列表,带 loading 与错误提示。
W8 验收:能拉到数据并正确渲染;断网时显示错误提示而非白屏。
五、能力进阶(W9–W10)
W9:权限与系统能力(具体学什么)
- 权限模型:
module.json5声明requestPermissions+ 运行时abilityContext.requestPermissionsFromUser弹窗。 - 常见权限:
ohos.permission.INTERNET(联网)、READ_MEDIA(读相册)、CAMERA(相机)、LOCATION(定位)。 - 弹窗与提示:
AlertDialog、Toast(用@ohos.promptAction)、自定义弹窗@CustomDialog。 - 多媒体:调相册选图(
photoAccessHelper)、相机拍照,拿到pixelMap显示。 - 通知:
NotificationRequest基础推送(了解)。
W9 实操任务:做一个"选图并展示"的 Demo,申请相册权限后从系统相册选一张图显示在页面。
W9 验收:权限弹窗正常、能选图并展示、拒绝权限时有兜底提示。
W10:多线程与性能(具体学什么)
- 为什么要多线程:ArkTS 主线程(UI 线程)不能阻塞,耗时计算要丢到后台。
- TaskPool(推荐):
taskpool.execute()提交任务,自动调度,适合一次性计算。 - Worker(长任务):独立线程文件,适合长期运行的后台逻辑,需
new worker.ThreadWorker。 - 列表性能:
List的cachedCount懒加载、LazyForEach(万级数据必备)。 - 性能自查:DevEco 的 Profiler(CPU/内存)、布局边界检查。
W10 实操任务:生成 1 万条假数据,用 LazyForEach + cachedCount 渲染,滚动流畅;把一段重计算放进 TaskPool。
W10 验收:长列表滚动无明显卡顿;重计算不阻塞 UI。
六、综合实战(W11)
选一个"能闭环"的小项目(三选一,难度递增)
| 项目 | 用到能力 | 适合人群 |
|---|---|---|
| 记账本 | UI + 状态 + Rdb + 图表 | 想练数据建模 |
| 每日待办 | UI + 状态 + 持久化 + 通知 | 想做最稳的练手 |
| 简易新闻/天气 | 网络 + JSON + 列表 + 图片 | 想练联网 |
W11 实操任务(以"每日待办"为例)
- 画功能清单:增、删、改、完成、分类、本地持久化、提醒(可选)。
- 搭框架:EntryAbility 初始化 → 首页 List → 详情/编辑页。
- 串联:W3~W10 所有能力整合进一个工程。
- 自测:覆盖增删改查 + 重启持久化 + 边界(空列表/超长文本)。
W11 验收:应用可独立演示,功能闭环,无明显崩溃。
七、发布上架(W12)
直接对接本工作区已有文档,不重复造轮子:
- 《鸿蒙NEXT应用发布检查清单.md》→ 上架前逐条核对。
- 《应用发布流程.md》/《鸿蒙移动端应用发布流程(通用版).md》→ 走签名、打包、提审全流程。
W12 具体步骤
- 调试收尾:DevEco Profiler 查内存泄漏;真机跑一遍核心路径。
- 签名配置:AppGallery Connect 创建应用、生成签名证书(p12/cer/profile)。
- 打包:Build → Generate Signed App Bundle/APK(NEXT 为
.app包)。 - 提审:按《检查清单》逐条确认(权限合理性、隐私声明、截图、备案等)。
- 上架:提交审核,跟踪审核意见,修订重提。
W12 验收:应用包生成成功,并依据发布检查清单完成一次完整的提审(不论首审通过与否)。
八、小白避坑指南(必读)
- 别混读旧文档:只学 NEXT(Stage/ArkTS/ArkUI),旧版 FA 模型、Java UI、JS 范式一律跳过,否则概念打架。
- 装饰器是重点不是语法糖:
@State/@Link/@Provide决定 UI 能不能刷新,搞不清就回看 W4。 - 主线程不能卡:任何 >16ms 的计算/IO 都考虑 TaskPool/Worker,否则滚动卡死。
- 真机调试比模拟器更准:模拟器不吃权限、不耗电,容易漏测;上架前务必真机走查。
- 报错先看红波浪线和 Log:DevEco 的 Problems 面板 + 真机 hiLog,比瞎猜高效。
- 先跑通再求完美:每个阶段"验收标准"打勾就进下一阶段,别在 UI 细节上耗一周。
九、学习资源索引
| 类型 | 资源 | 用途 |
|---|---|---|
| 官方 | 华为开发者联盟 developer.huawei.com/consumer/cn/doc/harmonyos-guides |
一手文档(认准 NEXT/Stage) |
| 本地 | 《HarmonyOS架构精读学习文档.md》 | 系统架构/Stage 原理 |
| 本地 | 《鸿蒙NEXT应用发布检查清单.md》 | 上架前核对 |
| 本地 | 《应用发布流程.md》 | 签名打包提审流程 |
| 社区 | 华为开发者论坛、CSDN 鸿蒙专区 | 报错检索、案例 |
| 工具 | DevEco Studio 内置 Sample、Codelabs | 官方示例工程 |
十、里程碑检查单(学完自测)
- 能独立从 0 创建并运行一个 NEXT 项目
- 能用 ArkTS + ArkUI 写出带状态管理的页面
- 理解 UIAbility 生命周期并能做页面路由与传参
- 能做本地持久化与网络请求
- 能申请权限并调用系统能力(相册/相机)
- 完成一个可演示的小项目
- 走通打包→签名→上架全流程
全部打勾 = 入门完成,可进入"进阶方向"(分布式协同、元服务卡片、性能深度优化、跨端一多开发)。
十一、仓颉进阶轨道与混合开发入门(选修)
本章是 ArkTS 主线完成后的选修轨道,不是入门必学。先吃透前 12 周,再按需进入。
一句话定位:仓颉(Cangjie)是华为自研的静态强类型语言,官方支持用于鸿蒙 NEXT 开发,主打高性能、强安全、AI 原生;它与 ArkTS 不是替代关系,而是"同一工程、各司其职"的混合开发伙伴。
11.1 什么时候该从 ArkTS 切到仓颉(决策清单)
满足以下任意一条,再考虑引入仓颉;否则继续用 ArkTS 即可。
| 触发信号 | 说明 |
|---|---|
| 计算密集型模块 | AI 推理、实时图形/音视频处理、大量数据解析,ArkTS 性能吃紧 |
| 高并发 / 高吞吐 | 高频读写、10+ 并发后台任务(如京东小程序实测并发 +20%) |
| 对启动时延极敏感 | 冷启动慢、首屏渲染卡(仓颉 AOT 编译为机器码,无 VM 启动开销) |
| 资源受限 IoT / 底层模块 | 小内存设备、系统服务、分布式中间件 |
| 金融 / 安全关键场景 | 强类型 + 内存安全,减少防御性编程负担 |
| AI 原生应用 | 仓颉内嵌 Agent DSL,自然语言与代码融合(ArkTS 暂无对等能力) |
反例(继续用 ArkTS):普通业务 UI、快速验证原型、团队以 Web/前端为主、需要最丰富组件库和工具链——这些正是 ArkTS 的强项。
11.2 混合开发是什么、怎么互通
- 同一工程共存:DevEco Studio 工程可同时包含 ArkTS 模块与仓颉模块,各自编译、统一打包。
- 双向互调:ArkTS 调用仓颉的导出能力,仓颉也能回调 ArkTS 接口(官方称"双向跨语言互调用"),已在大厂生产案例验证(工行"收支日历"模块即混合开发上架)。
- 典型分工:
ArkTS 层 → UI 页面、路由、状态管理、系统能力调用(开发效率优先) 仓颉层 → 核心算法、数据解析、高并发任务(性能/安全优先) 互调边界 → 通过官方提供的跨语言接口约定参数与返回值 - 最佳实践:不要为了用而用。先用 ArkTS 把应用跑通,再把"性能瓶颈模块"单独用仓颉重写并接入,做前后性能对比。
11.3 仓颉入门路径(约 2 周选修)
| 周次 | 学习主题 | 具体学什么 | 实操产出 | 验收标准 |
|---|---|---|---|---|
| W13 | 语言基础 | 与 TS 的语法差异、静态强类型、泛型、模式匹配、空安全、异步;用户态轻量线程(原生协程);元编程与声明式 UI 基础 | 仓颉控制台程序 + 一个声明式 UI 页面 | 能独立写出并运行仓颉程序 |
| W14 | 混合开发实操 | 在已有 ArkTS 项目里新建仓颉模块;实现 ArkTS↔仓颉 双向互调;用仓颉重写一个性能敏感模块并做对比 | 混合工程 v1 + 性能对比报告 | 跨语言调用成功,性能有可量化提升 |
W13 重点提示:仓颉从零自研,与 JS/TS 无血缘,别套用 TS 思维。先适应"编译期就卡死类型错误"的强类型节奏,再学并发与声明式 UI。
W14 重点提示:仓颉工具链仍在快速迭代,社区实测增量构建/热重载比 ArkTS 慢(改一处等数秒)。实战中把高频修改的 UI 留在 ArkTS,只把稳定后的核心算法迁到仓颉,避免开发期反复等编译。
11.4 仓颉资源索引
| 类型 | 资源 | 用途 |
|---|---|---|
| 官方 | 仓颉编程语言官网 cangjie-lang.cn |
语言指南、下载、开源仓库、中心仓(三方库) |
| 官方 | 华为开发者联盟 → 仓颉开发文档 | 鸿蒙场景下的仓颉开发指引、互调规范 |
| 社区 | CSDN 鸿蒙专区 / 华为开发者论坛"仓颉"话题 | 案例、性能实测、踩坑 |
| 案例参考 | 工行、京东、小红书、爱奇艺、力扣(全量仓颉)等已上架应用 | 了解真实落地形态 |
11.5 进阶自测
- 能说清"我的项目该不该上仓颉"(用 11.1 清单判断)
- 能在 ArkTS 工程里新建并运行一个仓颉模块
- 实现过一次 ArkTS↔仓颉 双向互调
- 做过一次"ArkTS 瓶颈模块 → 仓颉 重写"的性能对比
进阶完成标志:你不再纠结"学哪个语言",而是按场景选型——UI 与效率用 ArkTS,性能与底层用仓颉,混合开发信手拈来。
更多推荐




所有评论(0)