《纯血鸿蒙HarmonyOS NEXT原生开发之旅》全面系统地介绍了基于HarmonyOS NEXT系统进行原生应用开发的实用技巧。全书共12章,内容涵盖从基础工具使用到高级功能实现的各个方面。第1章详细介绍了开发环境的搭建、ArkTS语言基础及UI描述。第2章深入探讨了Ability组件和信息传递机制。第3章和第4章分别讲解了UI开发的基础知识和进阶技巧,包括ArkUI框架和自定义组件。第5章探讨了一次开发多端部署的策略。第6章介绍了多媒体应用的开发方法。第7章讨论了进程间通信和任务管理。第8章涉及窗口管理和通知功能。第9章讲解了网络编程的基本方法。第10章关注于应用安全管理。第11章详细介绍了服务卡片的开发流程。第12章通过一个购物应用案例,将前面章节的知识综合运用,展示了一个完整的项目实战过程。
《纯血鸿蒙HarmonyOS NEXT原生开发之旅》适合初学者和转型到鸿蒙系统开发的有经验的程序员阅读,也可以作为相关培训机构和高校相关专业的教学用书。
华为在2023年的开发者大会上宣布,将不再兼容安卓系统,并投入超过百亿元的资金来全力支持和发展鸿蒙生态系统。这一重大决策引发众多大型企业争相招募鸿蒙开发人才。
华为轮值董事长孟晚舟在2024年的年报致辞中指出,华为云、鲲鹏、昇腾和鸿蒙生态正在快速成长。截至2024年年底,鲲鹏、昇腾已累计发展665万开发者、8500多家合作伙伴。鸿蒙开发者超过720万,生态设备超10亿台,鸿蒙生态处于量变到质变的关键历史节点。
鸿蒙作为一个新兴的技术平台,其重要性可与从PC(个人计算机)互联网时代向移动互联网时代的转变相提并论。当时最早掌握安卓和iOS开发技术的人,无论是在薪资还是职业发展上,都获得了巨大的成功。如今,鸿蒙开发成为新的风口,现在投资时间和精力学习鸿蒙开发的人,将在鸿蒙系统广泛流行之前获得先机,从而大大提升自己的职业发展前景。
本书旨在深入解析HarmonyOS NEXT(5.x)版本的核心技术与开发技巧,并结合丰富的开发案例进行全面讲解,确保读者能够通过本书,掌握开发HarmonyOS NEXT所需的所有技能。
本书内容介绍
本书共分12章,各章内容安排如下:
第1章介绍HarmonyOS NEXT的基本概念和开发工具DevEco Studio,以及ArkTS语言的基础UI描述、状态管理及其进阶内容。本章还将涵盖动态构建UI元素和自定义导航的实战操作。
第2章深入探讨Ability开发,包括Stage模型概述、UIAbility组件、信息传递载体want的使用,以及如何显示want启动Ability和隐式want打开浏览器的实战案例。
第3章和第4章分别聚焦于UI开发的基础知识和进阶技巧,包括ArkUI概述、声明式开发范式、常用组件和基础组件详解,以及容器组件、绘制组件、画布组件和弹窗的详细解析。这两章还将提供城市列表选择和待办列表等实战案例。
第5章讨论一次开发多端部署的策略,包括工程目录管理、自适应布局和响应式布局,以及页签栏布局的实战案例。
第6章专注于多媒体应用开发,涵盖音频和视频开发,以及语音录制和声音动效实现的实战操作。
第7章探讨进程通信,包括ExtensionAbility组件、进程间通信、线程间通信、任务管理和Stage模型应用配置文件,以及Worker子线程中解压文件的实战案例。
第8章介绍窗口管理,包括窗口开发概述、管理应用窗口和通知,以及窗口管理应用的实战案例。
第9章讲解网络编程,包括HTTP数据请求、Web组件的页面加载和通过HTTP请求数据的实战操作。
第10章关注安全管理,包括访问控制概述和开发流程,以及获取位置授权的实战案例。
第11章详细介绍服务卡片开发,包括服务卡片概述、ArkTS卡片运行机制、相关模块和开发过程,以及电子相册案例的实战操作。
第12章作为项目实战章节,展示一个多端部署的购物应用的开发过程,包括项目概述、代码结构和页面结构。
本书的主要特色
本书的特色在于其全面性、实用性和实战性。全书系统地介绍了鸿蒙操作系统下的应用开发,从开发工具的使用、UI设计、状态管理,到多端部署等,涵盖了鸿蒙应用开发的各个方面。
书中不仅有详细的理论知识讲解,还提供了丰富的实战案例,如电子相册的开发、购物应用的开发等,帮助读者将理论知识应用于实际项目中。
通过学习本书内容,读者可以全面掌握鸿蒙应用开发的核心知识,并提升开发技能。
本书的配套资源
本书配套提供程序源码和PPT课件,读者可以用微信扫描下方的二维码获取。
如果读者在学习本书的过程中遇到问题,可以发送邮件至booksaga@126.com,邮件主题为纯血鸿蒙HarmonyOS NEXT原生开发之旅。
本书适合的读者
本书主要适合以下读者:
?希望入手鸿蒙应用开发的初学者、爱好者
?转型到鸿蒙系统开发的有一定经验的程序员
?培训机构和高校相关专业的师生
本书在编写过程中,参考了HarmonyOS应用开发社区中的案例,在此向该社区的维护者及代码贡献者表达诚挚的谢意。同时,对于清华大学出版社的编辑团队为本书出版所付出的辛勤工作,表示衷心的感谢。此外,笔者因著书而减少了与妻子和女儿的共度时光,感谢她们的包容与支持。
笔 者
2025.2
杨春鹏,资深软件工程师,有超过十年的行业经验,曾就职于快手,容猫,四维等大厂,涉猎大前端、Python、鸿蒙等领域技术,持有鸿蒙高级开发者证书,多次参与企业和高校鸿蒙技术培训。业余时间热爱分享,阿里云、 CSDN技术社区专家博主,发表技术文章数百杨春鹏,资深软件工程师,有超过十年的行业经验,曾就职于快手,容猫,四维等大厂,涉猎大前端、Python、鸿蒙等领域技术,持有鸿蒙高级开发者证书,多次参与企业和高校鸿蒙技术培训。业余时间热爱分享,阿里云、 CSDN技术社区专家博主,发表技术文章数百篇。篇。
第 1 章 初识鸿蒙HarmonyOS NEXT 1
1.1 DevEco Studio开发工具 1
1.1.1 下载和安装DevEco Studio 1
1.1.2 DevEco Studio的基本使用 4
1.1.3 手机运行Hello World应用 6
1.1.4 了解基本工程目录 7
1.2 ArkTS语言之基本UI描述 8
1.2.1 基本概念 9
1.2.2 创建组件 9
1.2.3 属性配置 11
1.2.4 事件配置 14
1.2.5 子组件配置 15
1.3 ArkTS语言之状态管理 16
1.3.1 @State 16
1.3.2 @Prop 22
1.3.3 @Link 26
1.3.4 @Observed和@ObjectLink 28
1.3.5 @Consume和@Provide 30
1.3.6 @Watch 32
1.4 ArkTS语言之状态管理进阶 33
1.4.1 LocalStorage:页面级UI状态存储 34
1.4.2 AppStorage:应用全局的UI状态存储 36
1.4.3 PersistentStorage:持久化存储UI状态 38
1.5 ArkTS语言之动态构建UI元素 39
1.5.1 @Builder 39
1.5.2 @BuilderParam 41
1.5.3 @Styles 42
1.5.4 @Extend 44
1.6 实战:自定义导航 45
1.7 本章小结 47
第 2 章 Ability开发 48
2.1 Stage模型的概述 48
2.1.1 重要概念 48
2.1.2 应用/组件级配置 49
2.2 UIAbility组件 53
2.2.1 UlAbility组件的概述 54
2.2.2 UIAbility组件的生命周期 54
2.2.3 UIAbility组件的启动模式 57
2.2.4 UIAbility组件的基本用法 63
2.2.5 UlAbility组件与UI的数据同步 65
2.3 信息传递的载体want 67
2.3.1 want的概述 67
2.3.2 显式want与隐式want的匹配规则 68
2.4 实战:显示want启动Ability 71
2.5 实战:隐式want打开浏览器 73
2.6 本章小结 75
第 3 章 UI开发基础 76
3.1 ArkUI概述 76
3.2 ArkTS的声明式开发范式 77
3.3 常用组件 78
3.4 基础组件详解 80
3.4.1 AlphabetIndexer 82
3.4.2 Blank 84
3.4.3 Button 85
3.4.4 CalendarPicker 89
3.4.5 Checkbox 90
3.4.6 CheckboxGroup 91
3.4.7 ContainerSpan 92
3.4.8 DataPanel 92
3.4.9 DatePicker 93
3.4.10 Divider 94
3.4.11 Gauge 95
3.4.12 Image 97
3.4.13 ImageAnimator 99
3.4.14 ImageSpan 101
3.4.15 LoadingProgress 101
3.4.16 Marquee 102
3.4.17 Menu 103
3.4.18 MenuItem 103
3.4.19 MenuItemGroup 105
3.4.20 Radio 106
3.4.21 Rating 107
3.4.22 RichText 108
3.4.23 Select 109
3.4.24 Slider 110
3.4.25 Text 112
3.4.26 TextArea 114
3.4.27 TextClock 114
3.4.28 TextInput 115
3.4.29 TextPicker 116
3.4.30 TextTimer 117
3.4.31 TimePicker 118
3.4.32 Toggle 119
3.5 实战:城市列表选择案例 121
3.5.1 数据模块的定义 122
3.5.2 主页布局 123
3.5.3 实现城市列表组件 125
3.5.4 实现搜索组件 127
3.5.5 项目小结 128
3.6 本章小结 128
第 4 章 UI开发进阶 129
4.1 容器组件详解 129
4.1.1 Badge 130
4.1.2 Column和Row 132
4.1.3 ColumnSplit和RowSplit 135
4.1.4 Counter 136
4.1.5 Flex 137
4.1.6 WaterFlow和FlowItem 148
4.1.7 Stack 153
4.1.8 GridRow和GridCol 153
4.1.9 Grid和GridItem 156
4.1.10 Hyperlink 161
4.1.11 List、ListItem和
ListItemGroup 162
4.1.12 Navigator 166
4.1.13 Panel 169
4.1.14 Refresh 170
4.1.15 RelativeContainer 173
4.1.16 Scroll 175
4.1.17 SideBarContainer 178
4.1.18 Swiper 180
4.1.19 Tabs和TabContent 184
4.2 绘制组件详解 188
4.2.1 Circle 188
4.2.2 Ellipse 189
4.2.3 Line 189
4.2.4 Polyline 191
4.2.5 Polygon 192
4.2.6 Path 192
4.2.7 Rect 194
4.2.8 Shape 195
4.3 画布组件Canvas 199
4.3.1 画布组件及对象 199
4.3.2 Canvas组件示例 202
4.4 弹窗详解 207
4.4.1 警告弹窗(AlertDialog) 208
4.4.2 列表选择弹窗(ActionSheet) 209
4.4.3 自定义弹窗(CustomDialog) 211
4.4.4 日历选择器弹窗(CalendarPickerDialog) 214
4.4.5 日期滑动选择器弹窗(DatePickerDialog) 215
4.4.6 时间滑动选择器弹窗(TimePickerDialog) 217
4.4.7 文本滑动选择器弹窗(TextPickerDialog) 219
4.5 自定义组件生命周期 220
4.5.1 自定义组件生命周期概述 220
4.5.2 自定义组件生命周期示例 221
4.6 实战:待办列表案例 223
4.6.1 TODO类定义 223
4.6.2 常量数据 224
4.6.3 列表项页面 224
4.6.4 列表项增删功能页面 228
4.7 本章小结 232
第 5 章 一次开发多端部署 233
5.1 一多开发工程目录管理 233
5.1.1 创建工程 233
5.1.2 新建Module 233
5.1.3 修改Module配置 235
5.1.4 调整目录结构,修改依赖关系 240
5.1.5 引用ohpm包中的代码 241
5.2 自适应布局 244
5.2.1 拉伸能力 245
5.2.2 均分能力 247
5.2.3 占比能力 249
5.2.4 缩放能力 252
5.2.5 延伸能力 254
5.2.6 隐藏能力 258
5.2.7 折行能力 261
5.3 响应式布局 262
5.3.1 断点 263
5.3.2 媒体查询 265
5.3.3 栅格布局 268
5.4 实战:页签栏布局 270
5.4.1 案例准备 271
5.4.2 案例实现 271
5.5 本章小结 274
第 6 章 多媒体应用开发 275
6.1 音频开发 275
6.1.1 音频开发概述 275
6.1.2 音频播放示例 278
6.1.3 音频录制示例 282
6.2 视频开发 284
6.3 实战:语音录制和声音动效的实现 288
6.3.1 案例要求与工程结构 288
6.3.2 案例实现 288
6.4 本章小结 292
第 7 章 进程通信 293
7.1 ExtensionAbility组件 293
7.1.1 ExtensionAbility组件概述 293
7.1.2 FormExtensionAbility组件 294
7.2 进程间通信 295
7.2.1 进程模型 295
7.2.2 公共事件简介 296
7.2.3 订阅公共事件 297
7.2.4 发布公共事件 299
7.3 线程间通信 300
7.3.1 线程模型 300
7.3.2 使用Emitter进行线程间通信 300
7.4 任务管理 301
7.4.1 Background Tasks Kit简介 301
7.4.2 短时任务的开发 302
7.4.3 长时任务的开发 303
7.4.4 延迟任务的开发 305
7.5 Stage模型的应用配置文件 307
7.6 实战:在Worker子线程中解压文件 309
7.6.1 工程结构和模块类型 309
7.6.2 实现思路 310
7.6.3 效果演示 311
7.7 本章小结 311
第 8 章 窗口管理 312
8.1 窗口开发概述 312
8.2 管理应用窗口 313
8.2.1 设置应用主窗口 313
8.2.2 设置应用子窗口 314
8.2.3 窗口的沉浸式能力 316
8.2.4 设置悬浮窗口 317
8.2.5 监听窗口不可交互与可交互事件 319
8.3 通知 320
8.3.1 通知概述 320
8.3.2 通知消息样式 326
8.3.3 撤回通知消息 327
8.4 实战:窗口管理应用 328
8.4.1 窗口管理应用功能说明 328
8.4.2 窗口管理应用的实现 328
8.5 本章小结 330
第 9 章 网络编程 331
9.1 HTTP数据请求 331
9.1.1 request接口开发 332
9.1.2 requestInStream接口开发 336
9.1.3 引入第三方库ohos_axios 337
9.2 Web组件的页面加载 339
9.2.1 加载网络页面 340
9.2.2 加载本地页面 341
9.2.3 加载HTML格式的文本数据 343
9.3 实战:通过HTTP请求数据 344
9.3.1 准备一个HTTP服务接口 344
9.3.2 使用List组件进行卡片布局 344
9.3.3 通过生命周期发起HTTP请求 345
9.3.4 通过生命周期使用第三方库发起HTTP请求 345
9.3.5 Web组件加载详情页面 346
9.4 本章小结 346
第 10 章 安全管理 347
10.1 访问控制概述 347
10.1.1 应用沙箱 347
10.1.2 应用权限等级和授权方法 347
10.1.3 系统控件 349
10.2 访问控制开发流程 349
10.2.1 权限列表 349
10.2.2 申请权限 351
10.2.3 授予权限 352
10.3 实战:获取位置授权 356
10.3.1 场景描述 356
10.3.2 声明访问的权限 356
10.3.3 申请授权 356
10.3.4 获取地理位置 357
10.4 本章小结 357
第 11 章 服务卡片开发 358
11.1 服务卡片概述 358
11.1.1 服务卡片架构 358
11.1.2 服务卡片的开发模式 360
11.1.3 服务卡片的制约 360
11.2 ArkTS卡片运行机制 361
11.3 ArkTS卡片相关模块 362
11.4 ArkTS卡片的开发 364
11.4.1 创建一个ArkTS卡片 364
11.4.2 配置卡片参数 368
11.4.3 卡片生命周期管理 370
11.5 实战:电子相册案例 372
11.5.1 项目概述 372
11.5.2 项目页面代码解读 372
11.5.3 添加卡片事件 379
11.6 本章小结 381
第 12 章 项目实战:多端部署之购物应用 382
12.1 项目概述 382
12.1.1 购物应用的功能 382
12.1.2 应用效果演示 383
12.2 代码结构 383
12.3 页面结构 385
12.3.1 启动页 385
12.3.2 主页 386
12.3.3 首页标签页 387
12.3.4 新品标签页 388
12.3.5 购物车标签页 388
12.3.6 我的标签页 389
12.3.7 商品详情页 390
12.3.8 订单确认页 391
12.3.9 订单支付页 393
12.3.10 订单列表页 395
12.4 本章小结 396
附录A ArkTS语言基础 397
A.1 编程语言 397
A.2 TypeScript语法 398
A.3 语法进阶 402
A.4 类 406