《純血鴻蒙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