鸿蒙实战:全栈回顾——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 的分布式能力、多设备协同等更前沿的课题。

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

相关推荐
XR1234567884 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
智慧物业老杨4 小时前
物业如何做好预算管理?落地架构逻辑
人工智能·架构
微学AI4 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
FF2501_940228586 小时前
HarmonyOS应用开发实战:猫猫大作战-在排行榜和历史记录查询中,排序是必不可少的操作【apple_product_name】
华为·harmonyos·鸿蒙
张忠琳6 小时前
【NPU】Ascend Docker Runtime v26.0.1 之二 runtime/process/process.go — 超深度逐行分析
云原生·容器·架构·kubernetes·npu·docker-runtime
联众合科技6 小时前
超融合如何助力数据中心现代化转型?从架构重构到落地避坑的完整指南
重构·架构
香菜TTT10 小时前
Kafka_深度解析_从架构原理到生产实践
分布式·架构·kafka·linq
陳陈陳10 小时前
🚀 前端流式输出革命:SSE + BFF 架构从零到一实战指南
vue.js·架构·node.js
程序员黑豆11 小时前
鸿蒙应用开发:@Provider 与 @Consumer 跨组件双向同步详解
前端·harmonyos
张永伟营销11 小时前
从SEO到GEO:技术人视角下的生成式引擎优化架构与实践
搜索引擎·ai·架构