适用对象:零基础 / 有少量编程经验、但从未接触过鸿蒙开发的小白。
技术基线:HarmonyOS NEXT(5.0+,API 9~20)、应用模型 Stage、语言 ArkTS、UI 框架 ArkUI 声明式

总览

0.1 前置假设(你先得有这些)

项目 要求 说明
编程基础 懂"变量、循环、函数、条件判断" 不要求会某门语言,逻辑能看懂即可
英语/文档 能查字典读懂报错 官方文档有中文,报错多为英文关键词
设备 Win10+/macOS 12+,16G 内存更稳 跑模拟器需要一定配置
时间 每周 8~10 小时业余时间 全程约 12 周可达"能做并上架一个小应用"

0.2 学习目标(学完你能做什么)

  1. 独立用 DevEco Studio 从 0 创建一个 NEXT 项目并运行到模拟器/真机。
  2. ArkTS + ArkUI 声明式 写出带布局、状态管理、交互的页面。
  3. 理解并落地 Stage 模型(UIAbility 生命周期、页面路由、组件通信)。
  4. 完成 数据持久化 + 网络请求,做一个有真实数据的应用。
  5. 走通 打包 → 签名 → 上架 全流程(对接本工作区发布文档)。

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.etsmodule.json5

W2:ArkTS 语言基础(具体学什么)

  • 基础类型string / number / boolean / array / object / enum / union类型
  • 函数与类:函数定义、可选参数、默认参数、类与继承、接口 interface
  • 装饰器(重点,ArkTS 灵魂)@Entry(页面入口)、@Component(自定义组件)、@State(组件内状态)等,先混个眼熟,W4 才深用。
  • 异步编程Promiseasync/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 纵向排列 spacejustifyContentalignItems
    Row 横向排列 同上
    Stack 层叠(覆盖) alignContent
    Flex 弹性布局 directionwrap
    List / ListItem 列表 for_eachlazy
    Grid 网格 columnsTemplate
  • 常用属性width/height100%'100vp')、padding/marginbackgroundColorfontSize/fontColorborderRadius
  • 尺寸单位vp(虚拟像素,自适应)、fp(字体像素,随系统字号缩放)、px(物理像素,少用)。

W3 实操任务:用 Column/Row/Image/Text 做一个"个人名片页"(头像+姓名+简介+按钮)。
W3 验收:布局结构与设计稿一致,真机/模拟器显示正常,无 overflow 告警。

W4:状态管理与交互(具体学什么)

  • 状态装饰器(ArkUI 核心机制,必须吃透):
    装饰器 作用域 典型用途
    @State 组件内 组件私有、可变的 UI 状态
    @Prop 父→子单向 父传子,子改不影响父
    @Link 父子双向 父子共享同一份状态
    @Provide/@Consume 跨层级 祖先直接给后代,免逐层传参
    @Observed/@ObjectLink 嵌套对象 监听对象内部属性变化
  • 事件与交互onClickonChange(输入)、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') 加载首页。
  • 页面路由 Routerrouter.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(定位)。
  • 弹窗与提示AlertDialogToast(用 @ohos.promptAction)、自定义弹窗 @CustomDialog
  • 多媒体:调相册选图(photoAccessHelper)、相机拍照,拿到 pixelMap 显示。
  • 通知NotificationRequest 基础推送(了解)。

W9 实操任务:做一个"选图并展示"的 Demo,申请相册权限后从系统相册选一张图显示在页面。
W9 验收:权限弹窗正常、能选图并展示、拒绝权限时有兜底提示。

W10:多线程与性能(具体学什么)

  • 为什么要多线程:ArkTS 主线程(UI 线程)不能阻塞,耗时计算要丢到后台。
  • TaskPool(推荐)taskpool.execute() 提交任务,自动调度,适合一次性计算。
  • Worker(长任务):独立线程文件,适合长期运行的后台逻辑,需 new worker.ThreadWorker
  • 列表性能ListcachedCount 懒加载、LazyForEach(万级数据必备)。
  • 性能自查:DevEco 的 Profiler(CPU/内存)、布局边界检查。

W10 实操任务:生成 1 万条假数据,用 LazyForEach + cachedCount 渲染,滚动流畅;把一段重计算放进 TaskPool。
W10 验收:长列表滚动无明显卡顿;重计算不阻塞 UI。


六、综合实战(W11)

选一个"能闭环"的小项目(三选一,难度递增)

项目 用到能力 适合人群
记账本 UI + 状态 + Rdb + 图表 想练数据建模
每日待办 UI + 状态 + 持久化 + 通知 想做最稳的练手
简易新闻/天气 网络 + JSON + 列表 + 图片 想练联网

W11 实操任务(以"每日待办"为例)

  1. 画功能清单:增、删、改、完成、分类、本地持久化、提醒(可选)。
  2. 搭框架:EntryAbility 初始化 → 首页 List → 详情/编辑页。
  3. 串联:W3~W10 所有能力整合进一个工程。
  4. 自测:覆盖增删改查 + 重启持久化 + 边界(空列表/超长文本)。

W11 验收:应用可独立演示,功能闭环,无明显崩溃。


七、发布上架(W12)

直接对接本工作区已有文档,不重复造轮子:

  • 《鸿蒙NEXT应用发布检查清单.md》→ 上架前逐条核对。
  • 《应用发布流程.md》/《鸿蒙移动端应用发布流程(通用版).md》→ 走签名、打包、提审全流程。

W12 具体步骤

  1. 调试收尾:DevEco Profiler 查内存泄漏;真机跑一遍核心路径。
  2. 签名配置:AppGallery Connect 创建应用、生成签名证书(p12/cer/profile)。
  3. 打包:Build → Generate Signed App Bundle/APK(NEXT 为 .app 包)。
  4. 提审:按《检查清单》逐条确认(权限合理性、隐私声明、截图、备案等)。
  5. 上架:提交审核,跟踪审核意见,修订重提。

W12 验收:应用包生成成功,并依据发布检查清单完成一次完整的提审(不论首审通过与否)。


八、小白避坑指南(必读)

  1. 别混读旧文档:只学 NEXT(Stage/ArkTS/ArkUI),旧版 FA 模型、Java UI、JS 范式一律跳过,否则概念打架。
  2. 装饰器是重点不是语法糖@State/@Link/@Provide 决定 UI 能不能刷新,搞不清就回看 W4。
  3. 主线程不能卡:任何 >16ms 的计算/IO 都考虑 TaskPool/Worker,否则滚动卡死。
  4. 真机调试比模拟器更准:模拟器不吃权限、不耗电,容易漏测;上架前务必真机走查。
  5. 报错先看红波浪线和 Log:DevEco 的 Problems 面板 + 真机 hiLog,比瞎猜高效。
  6. 先跑通再求完美:每个阶段"验收标准"打勾就进下一阶段,别在 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,性能与底层用仓颉,混合开发信手拈来。

Logo

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

更多推荐