移動應用開發技術——基於OpenHarmony平臺
趙小剛 楚朋誌
商品描述
本書介紹OpenHarmony操作系統移動應用開發的必備知識,既包含基礎的移動應用結構剖析,也涉及目前流行的終端設備AI模型的使用。本書強調理論和實踐相結合,提供豐富的代碼示例,方便讀者理解和運用移動應用開發的知識。
本書講解了 OpenHarmony 的系統特性、應用開發流程和開發工具、應用組成和配置,以及應用模型、ArkTS語法、基於ArkTS框架的UI設計與開發、數據持久化、傳感器應用和媒體管理、網絡訪問與多線程等傳統移動開發內容。此外,還介紹了OpenHarmony應用獨有的流轉架構和原子化服務等。最後以一個實用性較強的健康生活應用為例,介紹如何從需求分析入手,進行概要設計和詳細設計,並最終完成代碼開發。本書貫徹軟件工程思想,通過工程化理念來指導移動應用開發。本書除第13章,其他章都設計了課後習題,希望能通過練習和操作實踐幫助讀者鞏固所學知識。
本書既可以作為本科院校和高職高專院校計算機相關專業移動應用開發課程的教材,也可以作為對OpenHarmony應用開發感興趣的IT從業人員的自學用書。
作者簡介
趙小剛
武漢大學計算機學院軟件工程系副主任,副教授。武大-華為OpenHarmony創新實踐基地主要責任人。主持教育部產學合作協同育人項目4項,主持和參與多項國家自然科學基金與湖北省自然科學基金項目,主持武漢大學校級教改項目2項。擔任武漢大學計算機學院“移動編程技術”課程組長10余年。在全國高校中首次開設“HarmonyOS稱動編程技術”課程,主編和參編HarmonyOS移動編程教材2部、數字教材1部,在華為人才在線發布"HarmonyOS移動應用開發”慕課。獲評蘋果Swift移動編程授權認證講師。指導學生獲得中國高校計算機大賽-移動應用創新賽一等獎(2019年)和二等獎(2020年)。發表論交十余篇。
楚朋誌
上海交通大學學生創新中心主任助理、創新實踐部主任,高級實驗師。獲2022年高等教育(本科)國家級教學成果二等獎、上海市優秀教學成果獎特等獎,獲首批教育部-華為智能基座優秀救師、鴻蒙生態人才建設春雨獎,承擔20余項省級及以上教改項目,獲第二屆全國高校混合式教學設計創新大賽特等獎。主講“人工智能交互技術”“基於華為AI平臺的深度學習實踐”等課程,2023年和2024年分別有一門課程獲上海市高校重點課程立項,2025年獲華為ICT大賽實驗教學案例高教組特等獎,指導學生參與榜單賽事(入選全國普通高校大學生克賽目錄),並獲最高獎項30余次。
目錄大綱
第 1章 初識OpenHarmony 1
1.1 全球智能終端的發展 1
1.2 我國移動操作系統的機遇與挑戰 2
1.3 OpenHarmony概述 2
1.4 OpenHarmony技術架構 2
1.4.1 內核層 3
1.4.2 系統服務層 4
1.4.3 框架層 4
1.4.4 應用層 4
1.5 OpenHarmony技術特性 4
1.5.1 硬件互助,資源共享 5
1.5.2 一次開發,多端部署 8
1.5.3 統一OS,彈性部署 9
1.6 OpenHarmony安全特性 9
本章小結 10
課後習題 10
第 2章 開發你的第 一行OpenHarmony代碼 11
2.1 移動應用的組成 11
2.2 移動應用的開發和運行 12
2.3 移動應用的部署 13
2.4 DevEco Studio特性概述 14
2.4.1 核心特色 15
2.4.2 開發流程 15
2.5 搭建開發環境 16
2.5.1 安裝軟件並配置開發環境 17
2.5.2 創建並運行HelloWorld工程 19
2.6 開發低代碼模式應用 21
2.6.1 低代碼開發界面簡介 21
2.6.2 使用低代碼開發界面 22
2.6.3 案例——花朵展示列表應用 23
2.7 編譯構建Hvigor 27
2.7.1 Hvigor簡介 28
2.7.2 OpenHarmony應用中的Hvigor 29
2.8 應用運行調試 32
本章小結 36
課後習題 36
第3章 OpenHarmony應用結構剖析 37
3.1 app的概念和HAP模塊的組成 37
3.1.1 應用包結構 38
3.1.2 HAP模塊結構 39
3.2 創建和使用共享包 39
3.2.1 創建HAR庫模塊 40
3.2.2 編譯HAR庫文件 41
3.2.3 為應用添加HAR依賴 41
3.2.4 創建和使用HSP庫模塊 42
3.3 資源限定與訪問 43
3.3.1 資源分類 44
3.3.2 限定詞目錄命名規則 45
3.3.3 限定詞目錄 46
3.3.4 資源組目錄 46
3.3.5 資源文件的建立及訪問 47
3.4 配置文件 49
3.4.1 配置文件的內部結構 49
3.4.2 app標簽的內部結構 50
3.4.3 module標簽的內部結構 51
3.4.4 abilities標簽的內部結構 54
3.4.5 module內其他標簽的內部結構 57
本章小結 61
課後習題 61
第4章 OpenHarmony應用模型 62
4.1 應用模型概述 62
4.1.1 應用模型的組成 62
4.1.2 從FA模型到Stage模型 63
4.1.3 Stage模型和FA模型的對比 63
4.2 Stage模型 64
4.2.1 Stage模型應用組件簡介 64
4.2.2 Stage模型核心組件關系 65
4.2.3 Stage應用/組件配置 67
4.3 UIAbility組件 69
4.3.1 UIAbility配置 69
4.3.2 UIAbility生命周期及回調 70
4.3.3 啟動模式 73
4.3.4 基本用法 76
4.3.5 與UI的交互 77
4.4 Stage模型頁面導航 80
4.4.1 Context 80
4.4.2 Want 81
4.4.3 顯式Want 82
4.4.4 隱式Want 82
4.4.5 常見的action與entities 83
4.4.6 UIAbility間數據傳遞 85
4.4.7 導航至UIAbility指定頁面 88
4.4.8 任務管理 91
4.5 ExtensionAbility組件 93
4.6 ServiceExtensionAbility組件 95
4.6.1 ServiceExtensionAbility生命周期 95
4.6.2 實現後臺服務 96
4.6.3 啟動後臺服務 98
4.6.4 連接後臺服務 99
4.6.5 客戶端與服務端通信 100
4.6.6 獲取後臺天氣數據示例 101
4.7 Stage模型中的進程模型 105
本章小結 106
課後習題 107
第5章 ArkTS語法 108
5.1 ArkTS基本語法 108
5.1.1 基本語法簡介 109
5.1.2 變量、常量和基本類型 109
5.1.3 控制流 111
5.1.4 函數 112
5.1.5 類 114
5.1.6 接口 119
5.1.7 泛型類和函數 120
5.1.8 空安全 121
5.1.9 模塊 122
5.2 ArkUI支持 123
5.2.1 ArkUI支持描述 123
5.2.2 聲明式UI描述 124
5.2.3 創建自定義組件 126
5.2.4 頁面和自定義組件生命周期 130
5.2.5 自定義構建函數 135
5.2.6 組件樣式復用及擴展 137
5.3 狀態管理 140
5.3.1 狀態管理簡介 140
5.3.2 管理組件的狀態 143
5.3.3 管理應用的狀態 149
5.4 渲染控制 155
5.4.1 if/else條件渲染 155
5.4.2 ForEach循環渲染 157
5.5 ArkTS語言基礎類庫 158
5.5.1 並發 159
5.5.2 容器類庫 162
5.5.3 XML生成與解析 164
5.6 ArkTS開發實戰 165
5.6.1 界面的設計與實現 166
5.6.2 配置屬性與布局 167
5.6.3 改變組件狀態 167
5.6.4 循環渲染列表數據 169
本章小結 171
課後習題 171
第6章 ArkUI設計與開發 172
6.1 ArkUI框架基礎 172
6.2 組件通用特性 173
6.2.1 組件通用樣式 173
6.2.2 組件通用事件——點擊、觸摸和拖曳 175
6.3 構建復雜的交互界面 177
6.3.1 布局構建 177
6.3.2 基礎組件和容器組件的關系 178
6.3.3 添加標題區和文本區 178
6.3.4 添加圖片區 181
6.3.5 添加評論區 182
6.4 容器組件 183
6.4.1 List組件 184
6.4.2 Tabs組件 185
6.4.3 Grid組件 190
6.4.4 Swiper組件 192
6.4.5 Stack組件 194
6.5 ArkUI其他必要功能 196
6.5.1 頁面路由 196
6.5.2 組件導航 200
6.5.3 消息彈窗 203
6.5.4 日誌輸出 205
6.5.5 自定義圖形繪制 206
6.5.6 動畫 207
6.6 購物車應用開發 211
6.6.1 一次開發,多端部署 211
6.6.2 首頁標簽頁 217
6.6.3 詳情頁設計 224
本章小結 232
課後習題 232
第7章 OpenHarmony數據持久化 233
7.1 數據持久化定義 233
7.2 DataShareExtensionAbility的使用 233
7.2.1 統一資源標識符 234
7.2.2 創建DataShareAbility 234
7.2.3 註冊DataShareAbility 237
7.2.4 訪問DataShareAbility 237
7.3 文件存儲 238
7.3.1 應用文件 239
7.3.2 用戶文件 244
7.4 關系數據庫操作 246
7.4.1 關鍵術語 246
7.4.2 工作原理 247
7.4.3 數據庫操作流程 247
7.4.4 創建數據庫 248
7.4.5 數據插入 248
7.4.6 數據查詢 250
7.5 用戶偏好文件操作 251
7.5.1 工作原理 251
7.5.2 數據讀寫 252
7.6 分布式數據服務 256
7.6.1 關鍵術語 256
7.6.2 核心組件 257
7.6.3 工作原理 258
7.6.4 分布式數據訪問 259
7.7 分布式文件系統 264
7.7.1 工作原理 264
7.7.2 分布式文件讀寫 266
本章小結 269
課後習題 269
第8章 OpenHarmony流轉架構剖析 270
8.1 流轉的核心概念 270
8.2 流轉架構 272
8.2.1 核心組件 272
8.2.2 關鍵流程 273
8.3 跨端遷移功能開發 274
8.3.1 跨端遷移核心方法 274
8.3.2 跨端遷移實戰開發 275
8.4 多端協同功能開發 276
8.4.1 多端協同場景分類 276
8.4.2 分布式音樂播放器界面設計 279
8.4.3 多端協同權限申請 281
8.4.4 設備連接 282
8.4.5 數據恢復 284
本章小結 287
課後習題 287
第9章 OpenHarmony傳感器應用和媒體管理 288
9.1 主流傳感器分類 288
9.2 傳感器工作原理 289
9.3 加速度傳感器調用 291
9.4 相機調用 293
9.4.1 相機開發模型 293
9.4.2 權限申請 294
9.4.3 設備輸入 294
9.4.4 會話獲取 295
9.4.5 預覽 297
9.4.6 照相 298
9.5 媒體訪問和播放 300
9.5.1 音視頻處理概述 301
9.5.2 核心接口AVPlayer和AVRecorder 302
9.5.3 音頻播放 304
9.5.4 視頻播放 308
9.6 位置傳感器調用 312
9.6.1 基本概念 312
9.6.2 運作機制 313
9.6.3 位置獲取 313
本章小結 315
課後習題 315
第 10章 OpenHarmony原子化服務 316
10.1 原子化服務的定義與特性 316
10.2 原子化服務開發基礎 317
10.2.1 開發總體要求 317
10.2.2 服務卡片結構 318
10.2.3 ArkTS運作機制 319
10.2.4 ArkTS卡片優點 320
10.3 原子化服務開發進階 320
10.3.1 卡片項目的文件結構 320
10.3.2 卡片配置文件的特性 321
10.3.3 卡片提供方主要回調函數 323
10.3.4 卡片頁面基本能力 324
10.3.5 開發卡片事件 326
10.3.6 卡片數據交互 334
10.4 原子化服務開發實戰 340
10.4.1 項目基本需求 340
10.4.2 建立項目及卡片 340
10.4.3 配置文件解析 341
10.4.4 卡片信息持久化 344
10.4.5 卡片內容刷新 348
10.4.6 卡片頁面跳轉 350
10.4.7 刪除卡片 351
本章小結 352
課後習題 352
第 11章 OpenHarmony網絡訪問與多線程 353
11.1 HTTP接口調用 353
11.2 數據上傳和下載 356
11.3 WebSocket連接 358
11.3.1 WebSocket的概念 358
11.3.2 WebSocket的實現 359
11.4 多線程 361
11.4.1 線程模型概述 362
11.4.2 用Emitter線程進行線程間通信 362
11.4.3 用Worker線程進行線程間通信 363
11.5 Web組件網絡訪問 365
11.5.1 使用Web組件加載頁面 365
11.5.2 設置基本屬性和事件 367
11.5.3 在應用中使用前端JS代碼 370
本章小結 372
課後習題 372
第 12章 OpenHarmony高級技術 373
12.1 NAPI的使用 373
12.1.1 應用架構 373
12.1.2 編譯架構 374
12.1.3 開發流程 374
12.1.4 應用示例 374
12.2 Native XComponent組件的使用 378
12.2.1 界面設計 378
12.2.2 ArkTS側方法的調用 379
12.2.3 渲染功能實現 380
12.2.4 使用NAPI實現觸摸事件回調函數 385
12.2.5 使用NAPI將C++方法傳遞給ArkTS 386
12.2.6 釋放相關資源 388
12.2.7 註冊與編譯 389
12.3 AI開發 391
12.3.1 MindSpore Lite簡介 391
12.3.2 MindSpore Lite JS API的使用 392
12.3.3 MindSpore Lite Native API的使用 393
12.4 性能分析工具 397
12.4.1 查看CPU占用情況 398
12.4.2 查看內存占用情況 399
12.5 應用測試 399
12.5.1 實現原理 400
12.5.2 編寫測試腳本 400
12.5.3 執行測試腳本 402
本章小結 403
課後習題 403
第 13章 OpenHarmony開發實戰進階 404
13.1 需求分析 404
13.2 概要設計 405
13.2.1 健康生活應用部署結構 405
13.2.2 健康生活應用總體框架 405
13.2.3 登錄與註冊模塊 406
13.2.4 任務創建與編輯模塊 407
13.2.5 任務打卡模塊 407
13.2.6 成就管理模塊 408
13.3 詳細設計 408
13.3.1 類圖設計 408
13.3.2 數據庫設計 410
13.4 代碼開發 412
13.4.1 應用主頁面 412
13.4.2 任務創建與編輯 418
13.4.3 任務列表與打卡 424
13.4.4 任務提醒 427
13.4.5 數據庫訪問 429