本书较为全面地介绍了HarmonyOS应用的组成,开发流程和开发工具,以及应用前端UI,后台服务设计和数据库访问等内容。全书共12章,内容包括初识HarmonyOS,开启你的第一行HarmonyOS代码,HarmonyOS应用结构剖析,HarmonyOS核心组件Ability,JS UI开发语法基础,HarmonyOS轻代码开发JS UI设计,HarmonyOS数据持久化,HarmonyOS流转架构解析,HarmonyOS传感器应用和媒体管理,HarmonyOS原子化服务,HarmonyOS网络访问与多线程,中信银行本地生活App的设计与实现等。
书中非常强调理论和实践结合,凡是涉及动手操作的章节,都安排了丰富的代码示例来巩固移动应用开发知识点,此外,在本书最后一章,特意以一个实际上架并广泛使用的商用App中信银行本地生活App为例,介绍了真实软件企业如何从需求分析入手,进行概设和详设,到最后的代码,全过程贯彻软件工程思想,通过工程化理念来指导移动应用开发的全过程。希望本书不仅能覆盖常用移动操作系统中应用的开发的共性,而且更能体现HarmonyOS中应用开发的特性。本书每章后面都设计了习题,希望通过练习和操作实践,帮助读者巩固所学的内容。
本书既可以作为本科院校和高职高专计算机相关专业移动应用开发课程的教材,也可以作为对HarmonyOS应用开发有兴趣的IT从业人员自学使用的资料。
1. 华为 ICT 学院HarmonyOS认证指定教材,内容权威。
2. 覆盖华为ICT学院HarmonyOS认证考试大纲的同时,结合作者多年的一线教学经验,深入浅出地讲解了HarmonyOS的相关知识。
3. 配套教学资源丰富且高质。
4.本教材注重理论与实践的结合,使学生能通过实践深化对理论的理解,学会并掌握理论知识的实际应用。能更好的培养学生的专业技能和实践能力,学生在学完本书后能学以致用。
5. 参与本书编写工作的人员都是长期从事相关课程教学的一线教师和长期从事软件开发的工程师,具有丰富的教学经验和实践经验。
华为创立于1987年,是全球领先的ICT(信息与通信)基础设施和智能终端提供商。目前华为约有19.7万员工,业务遍及170多个国家和地区,服务全球30多亿人口。
华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界:让无处不在的联接,成为人人平等的权利,成为智能世界的前提和基础;为世界提供最强算力,让云无处不在,让智能无所不及;所有的行业和组织,因强大的数字平台而变得敏捷、高效、生机勃勃;通过AI重新定义体验,让消费者在家居、出行、办公、影音娱乐、运动健康等全场景获得极致的个性化智慧体验。
目录
第 1章 初识HarmonyOS 1
学习目标
1.1 HarmonyOS的起因和发展 1
1.2 HarmonyOS技术架构 2
1.3 HarmonyOS技术特性 3
1.3.1 硬件互助,资源共享 4
1.3.2 一次开发,多端部署 7
1.3.3 统一OS,弹性部署 7
1.4 HarmonyOS安全特性 7
本章小结 8
课后习题 8
第 2章 开启你的第 一行 HarmonyOS代码 9
学习目标
2.1 DEVECO STUDIO特性简介 9
2.1.1 核心特色 9
2.1.2 开发流程 10
2.2 开发环境搭建 13
2.2.1 配置开发环境 13
2.2.2 创建并运行HelloWorld工程 15
2.3 低代码模式应用开发 19
2.3.1 低代码开发界面介绍 19
2.3.2 使用低代码界面 20
2.3.3 多语言支持 22
2.3.4 案例花朵展示列表App示例 22
2.4 编译构建GRADLE 27
2.4.1 Gradle的简介 27
2.4.2 HarmonyOS应用中的Gradle 27
2.5 应用调试 30
2.5.1 模拟器调试 30
2.5.2 自动签名生成 34
2.5.3 签名HAP包生成 37
2.5.4 真机调试 38
2.6 应用发布 39
2.6.1 准备签名文件 40
2.6.2 配置签名信息和编译 44
2.6.3 应用上架 45
本章小结 46
课后习题 46
第3章 HarmonyOS应用结构剖析 47
学习目标
3.1 APP和HAP的组成 47
3.1.1 App包结构 47
3.1.2 HAP模块结构 48
3.2 创建和使用HAR 49
3.2.1 创建库模块 49
3.2.2 将库文件编译为HAR 51
3.2.3 为应用添加依赖 52
3.3 资源限定与访问 53
3.3.1 限定词目录命名规则 54
3.3.2 限定词与设备的匹配 54
3.3.3 引用JS模块内资源 55
3.4 配置文件 56
3.4.1 配置文件的内部结构 56
3.4.2 App对象内部结构 57
3.4.3 deviceConfig对象内部结构 58
3.4.4 module对象的内部结构 58
3.4.5 ability对象的内部结构 62
本章小结 67
课后习题 67
第4章 HarmonyOS核心组件Ability 69
学习目标
4.1 Ability的定义 69
4.1.1 FA和PA支持的模板 69
4.1.2 MVC和DPS异同 70
4.2 PAGE 72
4.2.1 AbilitySlice 72
4.2.2 AbilitySlice路由配置 72
4.3 生命周期 75
4.3.1 Page状态 75
4.3.2 Page回调函数 76
4.3.3 Page与AbilitySlice生命周期关联 77
4.3.4 AbilitySlice间的导航 78
4.4 PAGE的用法 80
4.4.1 Page的创建 80
4.4.2 创建和加载布局 81
4.4.2 config.json中注册 83
4.5 SERVICE 85
4.5.1 Service的定义 85
4.5.2 Service生命周期 85
4.5.2 启动Service 86
4.5.3 连接Service 87
4.5.4 前端Service 88
4.6 使用INTENT进行页面导航 90
4.6.1 Intent的作用 90
4.6.2 启动显式Intent 90
4.6.3 启动隐式Intent 91
4.6.4 向下一个Ability传递数据 93
4.6.5 返回数据给上一个Ability 94
4.7 阶段案例-访问后台服务获取电量信息 96
4.7.1 建立后台Service获取电量 96
4.7.2 建立后台与前台信息交互的接口类 98
4.7.3 前台Page与Service交互 98
本章小结 100
课后习题 100
第5章 JS UI开发语法基础 101
学习目标
5.1 HML语法 102
5.1.1 页面结构 102
5.1.2 数据绑定 103
5.1.3 事件绑定 103
5.1.4 列表渲染 104
5.1.5 条件渲染 105
5.2 CSS语法 106
5.2.1尺寸单位 107
5.2.2样式选择器 107
5.2.3伪类 109
5.3 JS语法 110
5.3.1关键字 110
5.3.2对象 110
5.3.2方法 115
本章小结 117
课后习题 117
第6章 HarmonyOS轻代码开发JS UI设计 118
学习目标
6.1 JS UI框架基础 118
6.1.1 JS UI框架的意义 118
6.1.2 JS框架的结构 119
6.1.3 JS FA基本组成分析 119
6.1.4 JS应用生命周期和页面生命周期 122
6.2 组件通用特性 124
6.2.1 组件通用属性 124
6.2.2 组件通用样式 125
6.2.3 组件通用事件手势和按键操作 127
6.3 构建复杂的交互界面 130
6.3.1 布局构建 130
6.3.2 基础组件和容器组件的关系 131
6.3.3 添加标题区和文本区 132
6.3.4 添加图片区域 133
6.3.5 添加评论区域 134
6.4 容器组件 139
6.4.1 list组件 139
6.4.2 tabs组件 141
6.4.3 dialog组件 144
6.4.4 swiper组件 147
6.4.5 form组件 150
6.5 自定义组件 153
6.5.1 自定义组件生命周期 153
6.5.2 构建自定义组件 153
6.5.3 调用自定义组件 157
6.6 JS FA调用PA 160
6.6.1 PA端Ability分类 160
6.6.2 建立客户端FA 160
6.6.3 建立内部Ability服务端 162
6.6.4 建立外部Ability服务端 165
6.7 JS其他必要功能 167
6.7.1 页面路由 167
6.7.2 日志打印 168
6.7.3 动画 169
6.8 JS购物车开发 174
6.8.1 主页界面设计 174
6.8.2 主页业务逻辑设计 177
6.8.3 详情页界面设计 177
6.8.4 详情页业务逻辑设计 182
本章小结 184
课后习题 185
第7章 HarmonyOS数据持久化 186
学习目标
7.1 数据持久化定义 186
7.2 DATA Ability 186
7.2.1 URI 187
7.2.2 创建Data Ability 187
6.2.2 注册Data Ability 189
7.2.3 访问Data Ability准备 189
7.3 文件存储 191
7.3.1 创建数据提供端 191
7.3.2 创建数据访问端 191
7.3.3 直接文件读取 193
7.4 关系型数据库操作 195
7.4.1 关键术语 195
7.4.2 工作原理 195
7.4.3 创建数据库 196
7.4.4 数据插入 197
7.4.5 数据查询 198
7.5 对象关系型数据库操作 201
7.5.1 核心工作组件 201
7.5.2 工作原理 201
7.5.3 创建数据库 202
7.5.4 数据插入 204
7.5.5 数据查询 205
7.6 用户偏好文件操作 208
7.6.1 工作原理 208
7.6.2 数据读写 208
7.7 分布式数据服务 215
7.7.1 关键术语 215
7.7.2 核心组件 216
7.7.3 工作原理 216
7.7.4 分布式数据访问 217
7.8 分布式文件服务 226
7.8.1 工作原理 226
7.8.2 分布式文件读写 227
本章小结 232
课后习题 233
第8章 HarmonyOS流转架构剖析 234
学习目标
8.1 流转的核心概念 234
8.2 流转架构 236
8.2.1 核心组件 236
8.2.2 关键流程 237
8.3 跨端流转功能开发 238
8.3.1 跨端拉起FA 238
8.3.2 跨端迁移具体步骤 244
8.3.3 跨端迁移实战开发 245
8.4 多端协同功能开发 247
8.4.1 多端协同具体步骤 248
8.4.2 界面交互思路及设计 249
8.4.3 权限申请 253
8.4.4 设备连接 255
8.4.4 设备交互 258
本章小结 261
课后习题 261
第9章 HarmonyOS传感器应用和媒体管理 263
学习目标
9.1 普通传感器分类 263
9.2 工作原理 264
9.3 普通传感器调用 266
9.4 相机调用 267
9.5 位置传感器调用 269
9.5.1 基本概念 269
9.5.2 运作机制 270
9.5.3 位置获取 270
本章小结 272
课后习题 272
第 10章 HarmonyOS原子化服务 273
学习目标
10.1 原子化服务定义与特性 273
10.2 原子化服务体验 274
10.2.1 服务中心 274
10.2.2 原子化服务分享 275
10.3 原子化服务开发基础 278
10.3.1 开发总体要求 278
10.3.2 服务卡片结构 279
10.3.3 运作机制 280
10.3.4 卡片提供方主要回调函数 280
10.3.5 JS卡片语法基础 281
10.4 原子化服务开发进阶 283
10.4.1 卡片工程文件结构 283
10.4.2 卡片资源访问 283
10.4.3 卡片配置文件 286
10.5 原子化服务开发实战 287
10.5.1 建立工程及卡片 288
10.5.2 配置文件解析 290
10.5.3 卡片信息持久化 295
10.5.4 卡片内容刷新 299
10.5.5 卡片页面跳转 300
10.5.6 卡片消息传递 301
10.5.7 卡片事件触发 303
10.5.8 内存图片读取 305
10.6 原子化服务分享 308
10.6.1 服务分享运作机制 308
10.6.2 服务分享开发 309
本章小结 314
课后习题 315
第 11章 HarmonyOS网络访问与多线程 316
学习目标
11.1 HTTP接口调用 316
11.2 数据上传和下载 319
11.3 WEBSOCKET连接 320
11.3.1 WebSocket概念 320
11.3.2 WebSocket实现 321
11.4 多线程 323
11.4.1 进程和线程的区别 323
11.4.2 多线程分类 323
11.4.3 多线程的使用 324
本章小结 326
课后习题 326
第 12章 中信银行本地生活APP的设计与实现 327
学习目标
12.1 需求分析 327
12.2 概要设计 329
12.2.1 本地生活应用部署图 329
12.2.2 本地生活App总体流程图 330
12.2.3 登录与注册模块 331
12.2.4 绑定信用卡模块 332
12.2.5 优惠信息展示模块 333
12.2.6 订单管理模块 334
12.3 详细设计 335
12.3.1 类图设计 335
12.3.2 数据库设计 338
12.4 代码开发 340
12.4.1 优惠信息展示模块 341
12.4.2 服务卡片展示模块 356
本章小结 364