鸿蒙实战:全栈回顾——Kit API 全景、架构总结与未来演进

鸿蒙实战:全栈回顾------Kit API 全景、架构总结与未来演进

前言

图:鸿蒙实战第100篇:全栈回顾------Kit API 全景、架构总结与未来演进 运行效果截图(HarmonyOS NEXT)

从第 1 篇的环境搭建,到第 99 篇的设计模式总结,这 100 篇文章覆盖了 HarmonyOS NEXT 原生应用开发从零到一的完整链路:ArkTS 语法、ArkUI 组件体系、Canvas 高级绘图、RDB 数据持久化、Camera Kit 相机开发、端侧 AI 推理、NFC 近场通信、HMS 账号服务,直到 Widget 元服务卡片。

本篇作为全系列的"知识地图",从四个维度做最终总结:Kit API 全景表三层架构总览六大关键决策权衡未来演进路线图

系列起点:第00篇 开篇与项目总览 · 系列上篇:第99篇 页面汇总与设计模式回顾
官方文档:HarmonyOS NEXT 开发指南 · ArkTS 语言参考


一、Kit API 全景

1.1 实际使用的 Kit(正式激活)

Kit 导入路径 使用文件 核心 API
AbilityKit @kit.AbilityKit EntryAbility, LoginPage, PhoneLoginPage, BindRelationPage UIAbility, Want, common.UIAbilityContext
ArkUI Kit @kit.ArkUI EntryAbility window.Window.setSystemBarEnable
PerformanceAnalysisKit @kit.PerformanceAnalysisKit 全部 40+ 文件 hilog.info/error
CameraKit @kit.CameraKit CapturePage camera.CameraManager, CaptureSession
CoreFileKit @kit.CoreFileKit CapturePage fileIo.open/write/close
MediaLibraryKit @kit.MediaLibraryKit CapturePage photoAccessHelper.PhotoViewPicker
BasicServicesKit @kit.BasicServicesKit SharePage, MetaServiceCard pasteboard.createData, getSystemPasteboard
DataRelationalStore @ohos.data.relationalStore 5 个 DAO + DatabaseService getRdbStore, RdbPredicates, ResultSet

1.2 预留的生产 Kit(注释状态)

Kit 导入路径 计划用途 激活位置
HMS Account Kit @hmscore/account 华为一键登录 LoginPage.huaweiLogin()
HMS SMS @hmscore/sms 短信验证码 PhoneLoginPage.sendVerifyCode()
MindSpore Lite @mindspore/lite 端侧 AI 三件套 OcrService / HandwritingFeatureExtractor / EmotionClassifier
ResourceKit @kit.ResourceKit AI 模型文件读取 OcrService.loadModelFromRawfile()
ImageKit @kit.ImageKit 图片预处理 OcrService.preprocessImage()

二、三层架构总览

2.1 完整架构图

#mermaid-svg-bNfOxJBlLjtJdEtK{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bNfOxJBlLjtJdEtK .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bNfOxJBlLjtJdEtK .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bNfOxJBlLjtJdEtK .error-icon{fill:#552222;}#mermaid-svg-bNfOxJBlLjtJdEtK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bNfOxJBlLjtJdEtK .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bNfOxJBlLjtJdEtK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bNfOxJBlLjtJdEtK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bNfOxJBlLjtJdEtK .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bNfOxJBlLjtJdEtK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bNfOxJBlLjtJdEtK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bNfOxJBlLjtJdEtK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bNfOxJBlLjtJdEtK .marker.cross{stroke:#333333;}#mermaid-svg-bNfOxJBlLjtJdEtK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bNfOxJBlLjtJdEtK p{margin:0;}#mermaid-svg-bNfOxJBlLjtJdEtK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bNfOxJBlLjtJdEtK .cluster-label text{fill:#333;}#mermaid-svg-bNfOxJBlLjtJdEtK .cluster-label span{color:#333;}#mermaid-svg-bNfOxJBlLjtJdEtK .cluster-label span p{background-color:transparent;}#mermaid-svg-bNfOxJBlLjtJdEtK .label text,#mermaid-svg-bNfOxJBlLjtJdEtK span{fill:#333;color:#333;}#mermaid-svg-bNfOxJBlLjtJdEtK .node rect,#mermaid-svg-bNfOxJBlLjtJdEtK .node circle,#mermaid-svg-bNfOxJBlLjtJdEtK .node ellipse,#mermaid-svg-bNfOxJBlLjtJdEtK .node polygon,#mermaid-svg-bNfOxJBlLjtJdEtK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bNfOxJBlLjtJdEtK .rough-node .label text,#mermaid-svg-bNfOxJBlLjtJdEtK .node .label text,#mermaid-svg-bNfOxJBlLjtJdEtK .image-shape .label,#mermaid-svg-bNfOxJBlLjtJdEtK .icon-shape .label{text-anchor:middle;}#mermaid-svg-bNfOxJBlLjtJdEtK .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bNfOxJBlLjtJdEtK .rough-node .label,#mermaid-svg-bNfOxJBlLjtJdEtK .node .label,#mermaid-svg-bNfOxJBlLjtJdEtK .image-shape .label,#mermaid-svg-bNfOxJBlLjtJdEtK .icon-shape .label{text-align:center;}#mermaid-svg-bNfOxJBlLjtJdEtK .node.clickable{cursor:pointer;}#mermaid-svg-bNfOxJBlLjtJdEtK .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bNfOxJBlLjtJdEtK .arrowheadPath{fill:#333333;}#mermaid-svg-bNfOxJBlLjtJdEtK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bNfOxJBlLjtJdEtK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bNfOxJBlLjtJdEtK .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bNfOxJBlLjtJdEtK .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bNfOxJBlLjtJdEtK .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bNfOxJBlLjtJdEtK .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bNfOxJBlLjtJdEtK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bNfOxJBlLjtJdEtK .cluster text{fill:#333;}#mermaid-svg-bNfOxJBlLjtJdEtK .cluster span{color:#333;}#mermaid-svg-bNfOxJBlLjtJdEtK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bNfOxJBlLjtJdEtK .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bNfOxJBlLjtJdEtK rect.text{fill:none;stroke-width:0;}#mermaid-svg-bNfOxJBlLjtJdEtK .icon-shape,#mermaid-svg-bNfOxJBlLjtJdEtK .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bNfOxJBlLjtJdEtK .icon-shape p,#mermaid-svg-bNfOxJBlLjtJdEtK .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bNfOxJBlLjtJdEtK .icon-shape .label rect,#mermaid-svg-bNfOxJBlLjtJdEtK .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bNfOxJBlLjtJdEtK .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bNfOxJBlLjtJdEtK .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bNfOxJBlLjtJdEtK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 读写 AppStorage
触发 DAO 操作
调用分析流水线
三表级联写入
AI 引擎层(端侧推理 · ~1,200 行)
features/ai/

AiPipelineService

OcrService(PaddleOCR-mobile)

HandwritingFeatureExtractor(MobileNetV3)

EmotionClassifier(轻量 BERT)
业务数据层(RDB · ~900 行)
features/data/

DatabaseService · UserDao

ArchiveDao · HandwritingDao

ReportDao · RelationDao

Models · DemoSeeder
跨层通信(AppStorage 11 个键)
user_id · user_token · user_name

capture_image_path · capture_source

analysis_result · current_report_id

current_archive_id

couple_bound · couple_partner_name

current_handwriting_id
UI 层(ArkUI · ~8,500 行)
pages/ 19个页面

HomePage · CapturePage · AnalyzingPage

ArchivePage · TrendPage · LoginPage

CoupleHomePage · BindRelationPage

...等 19 个 @Entry 组件
common/components/ 6 个可复用组件

HandwritingRadar · EmotionTrendChart

MatchRing · HmTitleBar

PosterTemplate · EmptyState
common/theme/ 设计令牌

AppColors · AppFonts · AppAnimations

2.2 数据流核心路径

ReportDetailPage 三个 DAO AiPipelineService AnalyzingPage CapturePage 用户 ReportDetailPage 三个 DAO AiPipelineService AnalyzingPage CapturePage 用户 #mermaid-svg-r79QDc5WnDfyjl8m{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-r79QDc5WnDfyjl8m .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-r79QDc5WnDfyjl8m .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-r79QDc5WnDfyjl8m .error-icon{fill:#552222;}#mermaid-svg-r79QDc5WnDfyjl8m .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-r79QDc5WnDfyjl8m .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-r79QDc5WnDfyjl8m .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-r79QDc5WnDfyjl8m .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-r79QDc5WnDfyjl8m .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-r79QDc5WnDfyjl8m .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-r79QDc5WnDfyjl8m .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-r79QDc5WnDfyjl8m .marker{fill:#333333;stroke:#333333;}#mermaid-svg-r79QDc5WnDfyjl8m .marker.cross{stroke:#333333;}#mermaid-svg-r79QDc5WnDfyjl8m svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-r79QDc5WnDfyjl8m p{margin:0;}#mermaid-svg-r79QDc5WnDfyjl8m .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-r79QDc5WnDfyjl8m text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-r79QDc5WnDfyjl8m .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-r79QDc5WnDfyjl8m .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-r79QDc5WnDfyjl8m .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-r79QDc5WnDfyjl8m .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-r79QDc5WnDfyjl8m #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-r79QDc5WnDfyjl8m .sequenceNumber{fill:white;}#mermaid-svg-r79QDc5WnDfyjl8m #sequencenumber{fill:#333;}#mermaid-svg-r79QDc5WnDfyjl8m #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-r79QDc5WnDfyjl8m .messageText{fill:#333;stroke:none;}#mermaid-svg-r79QDc5WnDfyjl8m .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-r79QDc5WnDfyjl8m .labelText,#mermaid-svg-r79QDc5WnDfyjl8m .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-r79QDc5WnDfyjl8m .loopText,#mermaid-svg-r79QDc5WnDfyjl8m .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-r79QDc5WnDfyjl8m .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-r79QDc5WnDfyjl8m .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-r79QDc5WnDfyjl8m .noteText,#mermaid-svg-r79QDc5WnDfyjl8m .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-r79QDc5WnDfyjl8m .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-r79QDc5WnDfyjl8m .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-r79QDc5WnDfyjl8m .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-r79QDc5WnDfyjl8m .actorPopupMenu{position:absolute;}#mermaid-svg-r79QDc5WnDfyjl8m .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-r79QDc5WnDfyjl8m .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-r79QDc5WnDfyjl8m .actor-man circle,#mermaid-svg-r79QDc5WnDfyjl8m line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-r79QDc5WnDfyjl8m :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 拍照 / 选图 fileIo 写入本地文件 AppStorage: capture_image_path 跳转分析页 analyze(imagePath) AnalysisResult HandwritingDao.create() handwritingId ReportDao.create(handwritingId) reportId ArchiveDao.incrementRecord() AppStorage: analysis_result + current_report_id replaceUrl → ReportDetailPage 展示雷达图 + 报告内容


三、项目代码量统计

3.1 全项目代码分布

目录 文件数 代码行数 占比 说明
pages/(19 页面) 19 ~8,500 63% 业务页面,含大量 Canvas 和动画
features/ai/(AI 层) 4 ~1,200 9% 三件套 + 流水线调度
common/components/(6 组件) 6 ~1,000 8% 雷达图等可复用 Canvas 组件
features/data/(数据层) 8 ~900 7% 5 DAO + DatabaseService + Models + Seeder
common/theme/(主题系统) 3 ~600 5% 颜色/字体/动画常量
EntryAbility + 配置 + NFC ~10 ~800 6% 入口、配置文件、NFC 扩展
总计 ~50 ~13,000 100% 50 个 .ets 文件

3.2 功能点完成度(P0-P4)

  • P0 核心闭环 (5 页面):拍照 → 分析 → 报告 → 归档 → 趋势,100% 完成
  • P1 用户系统(2 页 + 1 DAO):登录/HMS/手机号,调试模式 100% / 生产代码预留 ✓
  • P2 双人空间 (3 页 + 2 DAO):绑定 + 双人首页 + 合盘,100% 完成
  • P3 增强体验 (5 页):分享/未归类/桌面卡片/空状态/NFC,100% 完成
  • P4 AI 引擎(4 文件):流水线架构完整,当前 Mock / 真实 MindSpore Lite 预留

四、六大关键决策权衡

4.1 端侧 AI vs 云端 API

决策:所有 AI 推理全部端侧执行,不上传云端。

维度 端侧 AI 云端 API
隐私 数据不出设备 ✅ 上传服务器 ❌
成本 无 API 调用费 ✅ 按调用量计费 ❌
离线 支持 ✅ 需要网络 ❌
精度 受设备限制 可无限扩展
延迟 高端机 <1s 网络依赖

结论:对于笔迹(生物特征数据),隐私优先级最高,端侧是唯一可接受方案。

4.2 Canvas 绘图 vs 图片资源

决策:雷达图/折线图/插画全部 Canvas 动态绘制。

优势

  1. 数据驱动------雷达图比例随数据实时变化
  2. 动画支持------入场绘制进度、呼吸缩放
  3. 包体积小------约 10 个 Canvas 组件 ≈ 10KB vs 同等质量图片 ≈ 1MB+

4.3 Mock + 注释化生产代码架构

决策 :调试期用 setTimeout + Mock 模拟所有外部依赖,生产代码注释保留。

调试-生产双模式代码示例:

typescript 复制代码
// AnalyzingViewModel.ets ------ 双模式架构
async startAnalysis(imagePath: string): Promise<void> {
  // ✅ Mock 模式(当前启用)
  await new Promise<void>(resolve => setTimeout(resolve, 2000))
  const mockResult = { emotion: 'positive', score: 85, keywords: ['平静', '希望'] }
  AppStorage.setOrCreate('analysis_result', JSON.stringify(mockResult))

  /* 🟡 生产模式(解注释即可切换)
  const ocrResult = await OcrService.recognize(imagePath)
  const features = HandwritingFeatureExtractor.extract(ocrResult.text)
  const emotion = await EmotionClassifier.classify(features)
  AppStorage.setOrCreate('analysis_result', JSON.stringify(emotion))
  */
}

理由

  1. 无需后端/HMS 账号即可完整开发全部 UI
  2. 生产迁移零成本:解注释 + 删 Mock 即可
  3. 团队可并行开发(UI 无需等待 API 申请寡批)

五、未来演进路线

5.1 近端(可立即执行)

#mermaid-svg-a8y7ZrNJPKjMidW9{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-a8y7ZrNJPKjMidW9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-a8y7ZrNJPKjMidW9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-a8y7ZrNJPKjMidW9 .error-icon{fill:#552222;}#mermaid-svg-a8y7ZrNJPKjMidW9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-a8y7ZrNJPKjMidW9 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-a8y7ZrNJPKjMidW9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-a8y7ZrNJPKjMidW9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-a8y7ZrNJPKjMidW9 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-a8y7ZrNJPKjMidW9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-a8y7ZrNJPKjMidW9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-a8y7ZrNJPKjMidW9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-a8y7ZrNJPKjMidW9 .marker.cross{stroke:#333333;}#mermaid-svg-a8y7ZrNJPKjMidW9 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-a8y7ZrNJPKjMidW9 p{margin:0;}#mermaid-svg-a8y7ZrNJPKjMidW9 .mermaid-main-font{font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-a8y7ZrNJPKjMidW9 .exclude-range{fill:#eeeeee;}#mermaid-svg-a8y7ZrNJPKjMidW9 .section{stroke:none;opacity:0.2;}#mermaid-svg-a8y7ZrNJPKjMidW9 .section0{fill:rgba(102, 102, 255, 0.49);}#mermaid-svg-a8y7ZrNJPKjMidW9 .section2{fill:#fff400;}#mermaid-svg-a8y7ZrNJPKjMidW9 .section1,#mermaid-svg-a8y7ZrNJPKjMidW9 .section3{fill:white;opacity:0.2;}#mermaid-svg-a8y7ZrNJPKjMidW9 .sectionTitle0{fill:#333;}#mermaid-svg-a8y7ZrNJPKjMidW9 .sectionTitle1{fill:#333;}#mermaid-svg-a8y7ZrNJPKjMidW9 .sectionTitle2{fill:#333;}#mermaid-svg-a8y7ZrNJPKjMidW9 .sectionTitle3{fill:#333;}#mermaid-svg-a8y7ZrNJPKjMidW9 .sectionTitle{text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-a8y7ZrNJPKjMidW9 .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#mermaid-svg-a8y7ZrNJPKjMidW9 .grid .tick text{font-family:"trebuchet ms",verdana,arial,sans-serif;fill:#333;}#mermaid-svg-a8y7ZrNJPKjMidW9 .grid path{stroke-width:0;}#mermaid-svg-a8y7ZrNJPKjMidW9 .today{fill:none;stroke:red;stroke-width:2px;}#mermaid-svg-a8y7ZrNJPKjMidW9 .task{stroke-width:2;}#mermaid-svg-a8y7ZrNJPKjMidW9 .taskText{text-anchor:middle;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-a8y7ZrNJPKjMidW9 .taskTextOutsideRight{fill:black;text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-a8y7ZrNJPKjMidW9 .taskTextOutsideLeft{fill:black;text-anchor:end;}#mermaid-svg-a8y7ZrNJPKjMidW9 .task.clickable{cursor:pointer;}#mermaid-svg-a8y7ZrNJPKjMidW9 .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-a8y7ZrNJPKjMidW9 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-a8y7ZrNJPKjMidW9 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-a8y7ZrNJPKjMidW9 .taskText0,#mermaid-svg-a8y7ZrNJPKjMidW9 .taskText1,#mermaid-svg-a8y7ZrNJPKjMidW9 .taskText2,#mermaid-svg-a8y7ZrNJPKjMidW9 .taskText3{fill:white;}#mermaid-svg-a8y7ZrNJPKjMidW9 .task0,#mermaid-svg-a8y7ZrNJPKjMidW9 .task1,#mermaid-svg-a8y7ZrNJPKjMidW9 .task2,#mermaid-svg-a8y7ZrNJPKjMidW9 .task3{fill:#8a90dd;stroke:#534fbc;}#mermaid-svg-a8y7ZrNJPKjMidW9 .taskTextOutside0,#mermaid-svg-a8y7ZrNJPKjMidW9 .taskTextOutside2{fill:black;}#mermaid-svg-a8y7ZrNJPKjMidW9 .taskTextOutside1,#mermaid-svg-a8y7ZrNJPKjMidW9 .taskTextOutside3{fill:black;}#mermaid-svg-a8y7ZrNJPKjMidW9 .active0,#mermaid-svg-a8y7ZrNJPKjMidW9 .active1,#mermaid-svg-a8y7ZrNJPKjMidW9 .active2,#mermaid-svg-a8y7ZrNJPKjMidW9 .active3{fill:#bfc7ff;stroke:#534fbc;}#mermaid-svg-a8y7ZrNJPKjMidW9 .activeText0,#mermaid-svg-a8y7ZrNJPKjMidW9 .activeText1,#mermaid-svg-a8y7ZrNJPKjMidW9 .activeText2,#mermaid-svg-a8y7ZrNJPKjMidW9 .activeText3{fill:black!important;}#mermaid-svg-a8y7ZrNJPKjMidW9 .done0,#mermaid-svg-a8y7ZrNJPKjMidW9 .done1,#mermaid-svg-a8y7ZrNJPKjMidW9 .done2,#mermaid-svg-a8y7ZrNJPKjMidW9 .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText0,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText1,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText2,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText3{fill:black!important;}#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText0.taskTextOutsideLeft,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText0.taskTextOutsideRight,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText1.taskTextOutsideLeft,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText1.taskTextOutsideRight,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText2.taskTextOutsideLeft,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText2.taskTextOutsideRight,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText3.taskTextOutsideLeft,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-a8y7ZrNJPKjMidW9 .crit0,#mermaid-svg-a8y7ZrNJPKjMidW9 .crit1,#mermaid-svg-a8y7ZrNJPKjMidW9 .crit2,#mermaid-svg-a8y7ZrNJPKjMidW9 .crit3{stroke:#ff8888;fill:red;stroke-width:2;}#mermaid-svg-a8y7ZrNJPKjMidW9 .activeCrit0,#mermaid-svg-a8y7ZrNJPKjMidW9 .activeCrit1,#mermaid-svg-a8y7ZrNJPKjMidW9 .activeCrit2,#mermaid-svg-a8y7ZrNJPKjMidW9 .activeCrit3{stroke:#ff8888;fill:#bfc7ff;stroke-width:2;}#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCrit0,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCrit1,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCrit2,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCrit3{stroke:#ff8888;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#mermaid-svg-a8y7ZrNJPKjMidW9 .milestone{transform:rotate(45deg) scale(0.8,0.8);}#mermaid-svg-a8y7ZrNJPKjMidW9 .milestoneText{font-style:italic;}#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText0,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText1,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText2,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText3{fill:black!important;}#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText0.taskTextOutsideLeft,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText0.taskTextOutsideRight,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText1.taskTextOutsideLeft,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText1.taskTextOutsideRight,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText2.taskTextOutsideLeft,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText2.taskTextOutsideRight,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText3.taskTextOutsideLeft,#mermaid-svg-a8y7ZrNJPKjMidW9 .doneCritText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-a8y7ZrNJPKjMidW9 .vert{stroke:navy;}#mermaid-svg-a8y7ZrNJPKjMidW9 .vertText{font-size:15px;text-anchor:middle;fill:navy!important;}#mermaid-svg-a8y7ZrNJPKjMidW9 .activeCritText0,#mermaid-svg-a8y7ZrNJPKjMidW9 .activeCritText1,#mermaid-svg-a8y7ZrNJPKjMidW9 .activeCritText2,#mermaid-svg-a8y7ZrNJPKjMidW9 .activeCritText3{fill:black!important;}#mermaid-svg-a8y7ZrNJPKjMidW9 .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-a8y7ZrNJPKjMidW9 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2026-07-01 2026-07-03 2026-07-05 2026-07-07 2026-07-09 2026-07-11 2026-07-13 2026-07-15 2026-07-17 2026-07-19 2026-07-21 2026-07-23 2026-07-25 2026-07-27 2026-07-29 2026-07-31 2026-08-01 2026-08-03 2026-08-05 解开 HMS Account Kit 注释 集成 SMS 验证码服务 集成 MindSpore Lite 真实模型 OCR 精度调优 ArchivePage 分页加载 AppStorage 键清理 用户系统 AI 引擎 性能 近端演进路线(3 个月)

项目 涉及文件 预估工作量
解开 HMS Account Kit LoginPage.ets 2 小时
接入 SMS 验证码 PhoneLoginPage.ets 4 小时
集成 MindSpore Lite ai/ 下 4 个文件 1-2 周
ArchivePage 分页 ArchiveDao + ArchivePage 1 天

5.2 中端(架构演进)

  • 端侧模型优化:MindSpore Lite 模型量化 + NNPU 加速,推理时间 3s → 500ms
  • 超级桌面 Widget :完整接入 FormExtensionAbility,实现真实桌面卡片刷新
  • 跨端数据同步:RDB 数据加密后通过 Cloud DB 同步,多设备无缝切换
  • 关系图谱:将 ArchivePage 的档案关系可视化为力导向图

5.3 远端(产品演进)

方向 核心思路 技术方案
多模态输入 语音情绪 + 微表情 + 笔迹三路交叉验证 Audio Kit + Camera 人脸检测
社群化 匿名笔迹漂流瓶、情绪日记广场 Cloud DB + Push Kit
AI 陪伴 LLM 接入生成个性化笔迹解析 华为盘古大模型 API
场景化 SDK 笔迹情绪 SDK 开放给学校/企业 HSP 动态共享包

六、核心收获总结

经过 100 篇文章的完整覆盖,本系列的核心收获可概括为 "一个理念、两大范式、三层架构"

6.1 一个理念:端侧 AI 是隐私应用的未来

复制代码
用户手写笔迹 = 生物特征数据
生物特征数据 = 不可上传
不可上传 → 端侧处理 → MindSpore Lite

6.2 两大范式

四段式页面范式(15/19 页面遵循):

typescript 复制代码
build() {
  Column() {
    StatusBar()    // ① 状态栏
    Scroll() { MainContent() }  // ② 内容区
    ActionBar()    // ③ 操作区(可选)
    TabBar()       // ④ 底部导航(登录/分析页除外)
  }
}

DAO 四步统一范式(5 DAO · 32 方法全遵循):

typescript 复制代码
// try → getStore → 操作 → close → catch

6.3 三层架构

复制代码
UI 层(ArkUI · 19 页面 + 6 组件)
    ↕ AppStorage 11 键
业务数据层(RDB · 5 DAO)
    ↕ 三表级联写入
AI 引擎层(MindSpore Lite 三件套)

总结

100 篇、约 80,000 字技术内容,覆盖了从 ArkTS 零基础到鸿蒙原生 App 全栈上线的完整路径。这份系列的最大价值不是"告诉你每个 API 怎么用",而是:

  • 为什么这样设计(决策记录)
  • 哪里是坑rs.close()/setInterval 清理/@State Set 替换等)
  • 如何复用(7 大共享模式)
  • 如何演进(生产代码预留 + 注释化架构)

感谢一路陪伴!项目源码和全部文章同步发布,欢迎 Star 和 Issue。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:


八、技术栈全景总结

8.1 100 篇文章技术覆盖地图

#mermaid-svg-84ptT9OweqbgmOEo{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-84ptT9OweqbgmOEo .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-84ptT9OweqbgmOEo .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-84ptT9OweqbgmOEo .error-icon{fill:#552222;}#mermaid-svg-84ptT9OweqbgmOEo .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-84ptT9OweqbgmOEo .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-84ptT9OweqbgmOEo .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-84ptT9OweqbgmOEo .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-84ptT9OweqbgmOEo .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-84ptT9OweqbgmOEo .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-84ptT9OweqbgmOEo .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-84ptT9OweqbgmOEo .marker{fill:#333333;stroke:#333333;}#mermaid-svg-84ptT9OweqbgmOEo .marker.cross{stroke:#333333;}#mermaid-svg-84ptT9OweqbgmOEo svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-84ptT9OweqbgmOEo p{margin:0;}#mermaid-svg-84ptT9OweqbgmOEo .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-84ptT9OweqbgmOEo .cluster-label text{fill:#333;}#mermaid-svg-84ptT9OweqbgmOEo .cluster-label span{color:#333;}#mermaid-svg-84ptT9OweqbgmOEo .cluster-label span p{background-color:transparent;}#mermaid-svg-84ptT9OweqbgmOEo .label text,#mermaid-svg-84ptT9OweqbgmOEo span{fill:#333;color:#333;}#mermaid-svg-84ptT9OweqbgmOEo .node rect,#mermaid-svg-84ptT9OweqbgmOEo .node circle,#mermaid-svg-84ptT9OweqbgmOEo .node ellipse,#mermaid-svg-84ptT9OweqbgmOEo .node polygon,#mermaid-svg-84ptT9OweqbgmOEo .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-84ptT9OweqbgmOEo .rough-node .label text,#mermaid-svg-84ptT9OweqbgmOEo .node .label text,#mermaid-svg-84ptT9OweqbgmOEo .image-shape .label,#mermaid-svg-84ptT9OweqbgmOEo .icon-shape .label{text-anchor:middle;}#mermaid-svg-84ptT9OweqbgmOEo .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-84ptT9OweqbgmOEo .rough-node .label,#mermaid-svg-84ptT9OweqbgmOEo .node .label,#mermaid-svg-84ptT9OweqbgmOEo .image-shape .label,#mermaid-svg-84ptT9OweqbgmOEo .icon-shape .label{text-align:center;}#mermaid-svg-84ptT9OweqbgmOEo .node.clickable{cursor:pointer;}#mermaid-svg-84ptT9OweqbgmOEo .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-84ptT9OweqbgmOEo .arrowheadPath{fill:#333333;}#mermaid-svg-84ptT9OweqbgmOEo .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-84ptT9OweqbgmOEo .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-84ptT9OweqbgmOEo .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-84ptT9OweqbgmOEo .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-84ptT9OweqbgmOEo .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-84ptT9OweqbgmOEo .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-84ptT9OweqbgmOEo .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-84ptT9OweqbgmOEo .cluster text{fill:#333;}#mermaid-svg-84ptT9OweqbgmOEo .cluster span{color:#333;}#mermaid-svg-84ptT9OweqbgmOEo div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-84ptT9OweqbgmOEo .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-84ptT9OweqbgmOEo rect.text{fill:none;stroke-width:0;}#mermaid-svg-84ptT9OweqbgmOEo .icon-shape,#mermaid-svg-84ptT9OweqbgmOEo .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-84ptT9OweqbgmOEo .icon-shape p,#mermaid-svg-84ptT9OweqbgmOEo .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-84ptT9OweqbgmOEo .icon-shape .label rect,#mermaid-svg-84ptT9OweqbgmOEo .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-84ptT9OweqbgmOEo .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-84ptT9OweqbgmOEo .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-84ptT9OweqbgmOEo :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 鹿鹿全栈技术树
ArkTS 语言基础

第1-12篇
ArkUI 组件与布局

第13-23篇
RDB 数据持久化

第24-33篇
相机与图片处理

第34-38篇
NFC 近场通信

第39-43篇
Canvas 数据可视化

第44-51篇
端侧 AI 推理

第52-57篇
动画与交互

第58-63篇
分享与通信

第64-66篇
设计令牌系统

第67-71篇
状态与路由

第72-76篇
19个完整页面

第77-99篇

8.2 五大工程化经验总结

经验 1:设计令牌先行

在写第一行业务代码之前,先定义 AppColors / AppFonts / AppShadow / AppAnimations。这 4 个常量类决定了整个项目的视觉一致性,返工成本极低。

经验 2:单例 + DAO 分层

DatabaseService 单例管理连接,每个表对应一个 DAO 类,DAO 只操作自己的表。这个约定让 500+ 行的数据层代码保持清晰可维护。

经验 3:AppStorage 作为跨页面状态总线

不要在每个页面都从数据库重新加载用户信息。把用户态、当前档案 ID 等高频数据存 AppStorage,一次写入,处处可读。

经验 4:动画与数据解耦

AnalyzingPage 的进度动画与 AI 推理完全解耦------动画自己跑循环,推理结果来了再驱动页面跳转。这种模式可以推广到所有「有等待感」的页面。

经验 5:DemoSeeder 作为「活文档」

DemoSeeder 不只是填充演示数据,它也是数据模型的可执行文档------看 DemoSeeder 的代码,就能理解所有实体关系。

8.3 HarmonyOS 生态未来展望

技术方向 现状 预期演进
ArkTS API 11 稳定版 持续对齐 TypeScript 标准
Navigation 逐步替代 router 成为主流导航方案
元服务 Widget + 快应用 更多分发场景
端侧 AI MindSpore Lite 大模型本地部署能力增强
双人协同 NFC + 同账号 跨设备流转更顺畅

8.4 给读者的寄语

鸿蒙开发是一个充满机遇的领域。从 ArkTS 的声明式 UI 哲学,到端侧 AI 推理的独特能力,再到 NFC 碰一碰的创新交互,鸿蒙生态在 2024-2025 年进入了高速成长期。

掌握这 100 篇的技术栈,你已经具备了开发一款完整 HarmonyOS NEXT 应用的全部能力。接下来的问题不是「会不会」,而是「做什么」。

去做吧。把你的想法,用鸿蒙写出来。


九、技术栈能力矩阵

完成这 100 篇学习后,你掌握的技术能力可以用以下矩阵描述:

9.1 前端 UI 层

能力 覆盖篇章 掌握程度
ArkUI 布局系统 第13-22篇 深入
自定义动画 第58-63篇 深入
Canvas 自绘图表 第44-51篇 深入
设计 Token 体系 第67-71篇 熟练
页面路由与传参 第74、09篇 熟练

9.2 数据与持久化层

能力 覆盖篇章 掌握程度
RDB 关系数据库 第24-33篇 深入
DAO 设计模式 第32、84-88篇 深入
数据版本升级 第26篇 熟练
AppStorage 全局状态 第72篇 熟练

9.3 系统能力层

能力 覆盖篇章 掌握程度
相机与媒体 第34-38篇 熟练
NFC 近场通信 第39-40、64篇 了解
剪贴板分享 第65、96篇 熟练
桌面卡片 Widget 第98篇 了解
端侧 AI 推理 第52-57篇 熟练

9.4 未来进阶路线图

#mermaid-svg-K3am6jAISFBdhmzA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-K3am6jAISFBdhmzA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-K3am6jAISFBdhmzA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-K3am6jAISFBdhmzA .error-icon{fill:#552222;}#mermaid-svg-K3am6jAISFBdhmzA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-K3am6jAISFBdhmzA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-K3am6jAISFBdhmzA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-K3am6jAISFBdhmzA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-K3am6jAISFBdhmzA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-K3am6jAISFBdhmzA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-K3am6jAISFBdhmzA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-K3am6jAISFBdhmzA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-K3am6jAISFBdhmzA .marker.cross{stroke:#333333;}#mermaid-svg-K3am6jAISFBdhmzA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-K3am6jAISFBdhmzA p{margin:0;}#mermaid-svg-K3am6jAISFBdhmzA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-K3am6jAISFBdhmzA .cluster-label text{fill:#333;}#mermaid-svg-K3am6jAISFBdhmzA .cluster-label span{color:#333;}#mermaid-svg-K3am6jAISFBdhmzA .cluster-label span p{background-color:transparent;}#mermaid-svg-K3am6jAISFBdhmzA .label text,#mermaid-svg-K3am6jAISFBdhmzA span{fill:#333;color:#333;}#mermaid-svg-K3am6jAISFBdhmzA .node rect,#mermaid-svg-K3am6jAISFBdhmzA .node circle,#mermaid-svg-K3am6jAISFBdhmzA .node ellipse,#mermaid-svg-K3am6jAISFBdhmzA .node polygon,#mermaid-svg-K3am6jAISFBdhmzA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-K3am6jAISFBdhmzA .rough-node .label text,#mermaid-svg-K3am6jAISFBdhmzA .node .label text,#mermaid-svg-K3am6jAISFBdhmzA .image-shape .label,#mermaid-svg-K3am6jAISFBdhmzA .icon-shape .label{text-anchor:middle;}#mermaid-svg-K3am6jAISFBdhmzA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-K3am6jAISFBdhmzA .rough-node .label,#mermaid-svg-K3am6jAISFBdhmzA .node .label,#mermaid-svg-K3am6jAISFBdhmzA .image-shape .label,#mermaid-svg-K3am6jAISFBdhmzA .icon-shape .label{text-align:center;}#mermaid-svg-K3am6jAISFBdhmzA .node.clickable{cursor:pointer;}#mermaid-svg-K3am6jAISFBdhmzA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-K3am6jAISFBdhmzA .arrowheadPath{fill:#333333;}#mermaid-svg-K3am6jAISFBdhmzA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-K3am6jAISFBdhmzA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-K3am6jAISFBdhmzA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-K3am6jAISFBdhmzA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-K3am6jAISFBdhmzA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-K3am6jAISFBdhmzA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-K3am6jAISFBdhmzA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-K3am6jAISFBdhmzA .cluster text{fill:#333;}#mermaid-svg-K3am6jAISFBdhmzA .cluster span{color:#333;}#mermaid-svg-K3am6jAISFBdhmzA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-K3am6jAISFBdhmzA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-K3am6jAISFBdhmzA rect.text{fill:none;stroke-width:0;}#mermaid-svg-K3am6jAISFBdhmzA .icon-shape,#mermaid-svg-K3am6jAISFBdhmzA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-K3am6jAISFBdhmzA .icon-shape p,#mermaid-svg-K3am6jAISFBdhmzA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-K3am6jAISFBdhmzA .icon-shape .label rect,#mermaid-svg-K3am6jAISFBdhmzA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-K3am6jAISFBdhmzA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-K3am6jAISFBdhmzA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-K3am6jAISFBdhmzA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 当前水平
鸿蒙分布式能力
跨设备流转
企业级架构
多端协同应用
手机/平板/车机/大屏
HAR 组件库抽取
HSP 动态共享包

掌握这 100 篇的技术栈,你已经具备了开发一款完整 HarmonyOS NEXT 应用的全部能力。接下来的问题不是「会不会」,而是「做什么」。


感谢每一位读完这 100 篇文章的开发者朋友! 🦌


9.5 学习路径建议

如果你是第一次接触鸿蒙开发,建议按以下顺序重点回顾:

  1. 基础阶段(第01-12篇):环境搭建 → ArkTS 语法 → 模块配置
  2. UI 阶段(第13-23篇):布局组件 → 自定义组件 → 生命周期
  3. 数据阶段(第24-33篇):RDB 数据库 → DAO 模式 → 版本管理
  4. 系统能力(第34-43篇):相机 → NFC → 二维码
  5. 进阶特性(第44-72篇):Canvas → AI 推理 → 动画 → 设计系统
  6. 完整页面(第77-98篇):按照页面流程完整实现每个功能页

持续关注本系列,我们将继续探索 HarmonyOS NEXT 的分布式能力、多设备协同等更前沿的课题。

如果这个系列对你有帮助,欢迎点赞👍、收藏⭐、关注🔔。这是你给作者最好的礼物!

相关推荐
在书中成长1 小时前
HarmonyOS 小游戏《对战五子棋》开发第33篇 - AI异步落子与setTimeout
人工智能·harmonyos
listening7771 小时前
HarmonyOS 6.1 分布式文件服务实战:跨设备商品图片/视频秒开方案
wpf·harmonyos
xianjixiance_1 小时前
鸿蒙实战:BindRelationPage 四步状态机与邀请卡倒计时
华为·harmonyos·鸿蒙系统
解局易否结局1 小时前
鸿蒙三方库生态与实战:从安装到发布全链路指南
深度学习·华为·harmonyos
绝世番茄1 小时前
鸿蒙HarmonyOS ArkTS原生学习:缩放手势实现 PinchToZoom 深度解析
学习·华为·harmonyos·鸿蒙
进击的前栈2 小时前
鸿蒙实战:19 页面全景汇总与 7 大共享设计模式回顾
华为·设计模式·harmonyos
刀法如飞2 小时前
Spring Boot 4.1 + JDK 25 DDD开源脚手架,面向 AI 编程
设计模式·架构·ai编程
黒亱中旳2 小时前
面向桌面端的跌倒检测系统多线程并发架构优化实践
架构
ujainu小2 小时前
原生性能优化:6变量实现高效桥接
开发语言·华为·性能优化·harmonyos