黨的二十大報告中指出: 教育、科技、人才是全面建設(shè)社會主義現(xiàn)代化國家的基礎(chǔ)性、戰(zhàn)略性支撐。必須堅持科技是第一生產(chǎn)力、人才是第一資源、創(chuàng)新是第一動力,深入實施科教興國戰(zhàn)略、人才強國戰(zhàn)略、創(chuàng)新驅(qū)動發(fā)展戰(zhàn)略,這三大戰(zhàn)略共同服務(wù)于創(chuàng)新型國家的建設(shè)。高等教育與經(jīng)濟社會發(fā)展緊密相連,對促進就業(yè)創(chuàng)業(yè)、助力經(jīng)濟社會發(fā)展、增進人民福祉具有重要意義。
鴻蒙操作系統(tǒng)(HarmonyOS)自2019年被中國華為公司發(fā)布以來,一直受到了廣泛關(guān)注。HarmonyOS的誕生恰逢我國近年來在高精尖及基礎(chǔ)領(lǐng)域受到國外擠壓的關(guān)鍵時期,其發(fā)布對我國操作系統(tǒng)國產(chǎn)化具有戰(zhàn)略意義。
HarmonyOS是一款面向全場景智慧生活方式的分布式操作系統(tǒng),是一個可以進行部署移動辦公、運動健康、社交通信、媒體娛樂等各種場景應(yīng)用的操作系統(tǒng)。HarmonyOS具有硬件互助、資源共享,一次開發(fā)、多端部署,統(tǒng)一OS、彈性部署等諸多優(yōu)點,勢必會成為萬物互聯(lián)時代的新寵。
目前,基于HarmonyOS開發(fā)SDK已經(jīng)發(fā)布到了第9版,并還在不斷完善中。華為公司在更新SDK的同時,也在不斷完善相關(guān)的開發(fā)工具鏈,包括集成開發(fā)環(huán)境、模擬器、預(yù)覽器等,不斷為開發(fā)者提供功能更加強大、體驗更加友好的開發(fā)支持。
本書系統(tǒng)闡述了HarmonyOS移動應(yīng)用開發(fā)的相關(guān)技術(shù),并附有豐富的案例,可以幫助開發(fā)者掌握鴻蒙移動應(yīng)用開發(fā)技術(shù),快速進入鴻蒙移動應(yīng)用開發(fā)領(lǐng)域。
本書中的程序?qū)崿F(xiàn)是基于ArkTS語言的,ArkTS是基于TypeScript語言的,而TypeScript語言又是JavaScript語言的超集。本書適合具有一定的相關(guān)語言基礎(chǔ)的讀者,適合具有一定計算機或軟件開發(fā)基礎(chǔ)的大學(xué)生或軟件開發(fā)者。
本書主要內(nèi)容
第1章概述,主要介紹了什么是HarmonyOS,HarmonyOS的特性、體系架構(gòu)、支持的開發(fā)語言等,在應(yīng)用開發(fā)方面,HarmonyOS支持多種開發(fā)語言。
第2章介紹了第1個HarmonyOS應(yīng)用,通過搭建開發(fā)環(huán)境、利用向?qū)ч_發(fā)了第1個基于ArkTS的HarmonyOS應(yīng)用,介紹了鴻蒙應(yīng)用的項目結(jié)構(gòu)、資源和配置等。
第3章介紹了TypeScript語言基礎(chǔ),簡明扼要地介紹了TypeScript語言的基本內(nèi)容,包括基本類型和運算符、控制語句與函數(shù)、類和接口、模塊、裝飾器等。ArkTS是基于TypeScript的語言,因此開發(fā)者需要具備一定的相關(guān)基礎(chǔ)。
第4章介紹了ArkUI開發(fā)框架,包括聲明式開發(fā)范式、基于ArkUI的項目結(jié)構(gòu)、聲明式語法等。ArkUI是基于ArkTS的UI開發(fā)框架,是HarmonyOS應(yīng)用UI開發(fā)的主要框架。
第5章介紹了組件,包括組件屬性、組件事件、狀態(tài)管理及系統(tǒng)內(nèi)置的組件等。組件是構(gòu)成界面的基本元素,應(yīng)用通過各種組件可構(gòu)造出豐富的界面內(nèi)容。
第6章介紹了布局和頁面跳轉(zhuǎn),布局方面介紹了一些常用布局用法及系統(tǒng)內(nèi)置布局簡介、組件的生命周期等。布局是可以容納組件的組件,布局和組件構(gòu)成了頁面,頁面之間可以通過路由進行跳轉(zhuǎn),頁面之間跳轉(zhuǎn)可以傳遞參數(shù)。
第7章概述了Ability,并介紹了FA模型下的PageAbility和Stage模型下的UIAbility,包括創(chuàng)建、啟動和停止、生命周期等,本章還介紹了跨設(shè)備遷移。在HarmonyOS應(yīng)用中,Ability是能力的抽象,是系統(tǒng)的調(diào)度單元。
第8章介紹了服務(wù)和數(shù)據(jù)能力,介紹了服務(wù)的定義、生命周期、訪問等,介紹了數(shù)據(jù)能力的創(chuàng)建和訪問。服務(wù)是鴻蒙操作系統(tǒng)提供的后臺運行的能力,數(shù)據(jù)能力可以使應(yīng)用進行數(shù)據(jù)共享。
第9章介紹了數(shù)據(jù)存儲,包括首選項數(shù)據(jù)存儲、關(guān)系數(shù)據(jù)存儲和分布式數(shù)據(jù)服務(wù)。數(shù)據(jù)存儲是為HarmonyOS應(yīng)用提供數(shù)據(jù)持久化,分布式數(shù)據(jù)服務(wù)使數(shù)據(jù)可以透明地存在于多個設(shè)備上,使應(yīng)用的數(shù)據(jù)能夠輕松地實現(xiàn)跨設(shè)備數(shù)據(jù)同步和共享。
第10章介紹了公共事件和通知,介紹了公共事件的概念、公共事件的處理接口及使用方法、通知的概念及使用方法。
第11章介紹了多媒體開發(fā)相關(guān)技術(shù),包括圖像處理、音頻播放、視頻播放等,通過對多媒體數(shù)據(jù)的處理,可以使所開發(fā)的應(yīng)用更加豐富多彩。
第12章介紹了網(wǎng)絡(luò)訪問,包括Socket、WebSocket和HTTP方式。HarmonyOS應(yīng)用可以通過網(wǎng)絡(luò)訪問互聯(lián)網(wǎng)上的服務(wù)和數(shù)據(jù),打造互聯(lián)網(wǎng)應(yīng)用。
第13章介紹了一個天氣查詢的綜合應(yīng)用實例,通過綜合運用相關(guān)技術(shù),呈現(xiàn)一個完整的HarmonyOS移動應(yīng)用開發(fā)方法和過程。
本書第1章、第2章、第6章、第7章、第8章、第9章由劉安戰(zhàn)(中原工學(xué)院)撰寫,第3章、第11章、第13章由余雨萍(中原工學(xué)院)撰寫,第4章、第5章由陳爭艷(河南財政金融學(xué)院)撰寫,第10章由張玉瑩(中原工學(xué)院)撰寫,第12章由馬超凡(中原工學(xué)院)撰寫,本書最后由劉安戰(zhàn)進行了通篇審閱、修改和定稿。
閱讀建議
本書是一本鴻蒙應(yīng)用開發(fā)的入門書籍,但是由于技術(shù)的依賴性,筆者認(rèn)為學(xué)習(xí)本書需要具備一定的軟件開發(fā)基礎(chǔ)。
希望學(xué)習(xí)本書的讀者具備一定的JavaScript和JSON基礎(chǔ),以及一定的高級語言軟件開發(fā)基礎(chǔ)。大學(xué)計算機或軟件相關(guān)專業(yè)的高年級學(xué)生一般均具備學(xué)習(xí)本書的能力。如果讀者具有移動應(yīng)用開發(fā)的相關(guān)經(jīng)驗,則學(xué)習(xí)本書會更加輕松和快捷。
本書資源
本書配套的源代碼及PPT資源可以通過掃描目錄上方的二維碼獲取。
致謝
首先感謝家人的支持,否則筆者可能無法完成本書。
感謝團隊成員,是大家的通力合作和互相幫助才使我們能夠完成本書。感謝工作單位的領(lǐng)導(dǎo)和相關(guān)老師的支持和幫助。
感謝學(xué)生周鵬、丁毅露、韓磊、趙胡斐、趙月芽、朱美穎等參與代碼調(diào)試、資源整理等工作。
感謝華為公司的陶銘、譚景盟、周宣宣、王玉等在成書過程的支持及幫助,同時感謝華為公司一大批優(yōu)秀的工程師,如果沒有他們的努力,恐怕不會有HarmonyOS的蓬勃發(fā)展。在成書過程中我們參考了華為公司提供的在線官方技術(shù)文檔和相關(guān)示例。
感謝來自業(yè)內(nèi)的多位同仁在成書過程中的支持和幫助。感謝鴻蒙相關(guān)的技術(shù)社區(qū)提供的學(xué)習(xí)和交流平臺,包括華為開發(fā)者社區(qū)、51CTO開源基礎(chǔ)軟件區(qū)等。
感謝清華大學(xué)出版社工作人員的辛勤工作,特別是趙佳霓編輯,從選題到出版過程中付出了很多辛勤的努力。
劉安戰(zhàn)
2023.5.16
第1章概述
1.1什么是HarmonyOS
1.2HarmonyOS的特性
1.2.1硬件互助,資源共享
1.2.2一次開發(fā),多端部署
1.2.3統(tǒng)一操作系統(tǒng),彈性部署
1.3HarmonyOS體系架構(gòu)
1.3.1內(nèi)核層
1.3.2系統(tǒng)服務(wù)層
1.3.3框架層
1.3.4應(yīng)用層
1.4支持的開發(fā)語言
小結(jié)
第2章第1個HarmonyOS應(yīng)用
2.1搭建開發(fā)環(huán)境
2.1.1開發(fā)環(huán)境介紹
2.1.2下載并安裝DevEco Studio
2.2開發(fā)第1個HarmonyOS項目
2.2.1開發(fā)上架應(yīng)用基本過程
2.2.2創(chuàng)建并運行Hello World項目
2.2.3安裝配置SDK
2.2.4項目啟動過程
2.3應(yīng)用項目結(jié)構(gòu)
2.3.1邏輯結(jié)構(gòu)
2.3.2目錄結(jié)構(gòu)
2.4資源和配置
2.4.1資源及引用
2.4.2配置文件
小結(jié)
第3章TypeScript基礎(chǔ)
3.1TypeScript語言簡介
3.2TypeScript簡單使用
3.3基本類型和運算符
3.3.1數(shù)據(jù)類型
3.3.2運算符
3.4控制語句和函數(shù)
3.4.1控制語句
3.4.2函數(shù)
3.5類和接口
3.5.1類和對象
3.5.2接口
3.6模塊
3.6.1模塊導(dǎo)出與導(dǎo)入
3.6.2CommonJS模塊用法
3.7裝飾器
小結(jié)
第4章ArkUI開發(fā)框架
4.1概述
4.2聲明式開發(fā)范式
4.3基于ArkUI的項目
4.3.1文件結(jié)構(gòu)
4.3.2資源
4.4聲明式語法
4.4.1UI描述規(guī)范
4.4.2組件化
4.4.3組件渲染控制語法
小結(jié)
第5章組件
5.1概述
5.2組件屬性
5.2.1通用屬性
5.2.2自定義屬性
5.3組件事件
5.3.1組件事件配置方式
5.3.2通用事件方法
5.4狀態(tài)管理
5.4.1狀態(tài)模型
5.4.2組件狀態(tài)
5.4.3應(yīng)用程序狀態(tài)
5.5系統(tǒng)內(nèi)置組件簡介
小結(jié)
第6章布局和頁面跳轉(zhuǎn)
6.1布局
6.1.1布局概述
6.1.2常用布局
6.1.3系統(tǒng)內(nèi)置布局簡介
6.2頁面跳轉(zhuǎn)
6.2.1導(dǎo)航容器組件跳轉(zhuǎn)
6.2.2路由方式跳轉(zhuǎn)
6.2.3頁面?zhèn)鬟f參數(shù)
6.3組件生命周期
6.4商品列表實例
6.4.1實例說明
6.4.2實例實現(xiàn)
小結(jié)
第7章Ability
7.1Ability概述
7.2FA模型中的PageAbility
7.2.1PageAbility創(chuàng)建
7.2.2PageAbility的生命周期
7.2.3PageAbility調(diào)度及實例
7.3Stage模型中的UIAbility
7.3.1UIAbility創(chuàng)建
7.3.2UIAbility的生命周期
7.3.3UIAbility交互及實例
7.4跨設(shè)備遷移
小結(jié)
第8章服務(wù)和數(shù)據(jù)能力
8.1服務(wù)能力
8.1.1服務(wù)能力的定義
8.1.2服務(wù)生命周期
8.1.3命令訪問服務(wù)
8.1.4連接訪問服務(wù)
8.2數(shù)據(jù)能力
8.2.1數(shù)據(jù)能力概述
8.2.2數(shù)據(jù)能力創(chuàng)建和訪問
8.2.3實例
小結(jié)
第9章數(shù)據(jù)存儲
9.1數(shù)據(jù)存儲概述
9.2首選項數(shù)據(jù)存儲
9.2.1首選項數(shù)據(jù)存儲介紹
9.2.2首選項數(shù)據(jù)存儲接口
9.2.3樣式信息設(shè)置實例
9.3關(guān)系數(shù)據(jù)存儲
9.3.1關(guān)系數(shù)據(jù)存儲介紹
9.3.2關(guān)系數(shù)據(jù)存儲接口
9.3.3用戶信息管理實例
9.4分布式數(shù)據(jù)服務(wù)
9.4.1分布式數(shù)據(jù)服務(wù)介紹
9.4.2分布式數(shù)據(jù)服務(wù)接口
9.4.3分布式日記實例
小結(jié)
第10章公共事件和通知
10.1公共事件
10.1.1公共事件服務(wù)
10.1.2公共事件處理接口
10.1.3發(fā)布公共事件
10.1.4訂閱公共事件
10.1.5取消訂閱公共事件
10.2通知
10.2.1通知接口
10.2.2開發(fā)步驟
10.3后臺代理提醒
10.3.1后臺代理接口
10.3.2使用代理提醒
10.4實例
小結(jié)
第11章多媒體開發(fā)
11.1概述
11.2圖像
11.2.1圖像開發(fā)基礎(chǔ)
11.2.2圖像顯示接口
11.2.3圖片顯示實例
11.3音頻
11.3.1音頻開發(fā)基礎(chǔ)
11.3.2音頻播放接口
11.3.3音頻播放實例
11.4視頻
11.4.1視頻開發(fā)基礎(chǔ)
11.4.2視頻播放接口
11.4.3視頻播放實例
小結(jié)
第12章網(wǎng)絡(luò)訪問
12.1概述
12.2網(wǎng)絡(luò)通信基礎(chǔ)
12.2.1Socket通信
12.2.2WebSocket通信
12.2.3HTTP通信
12.3網(wǎng)絡(luò)訪問開發(fā)
12.3.1Socket方式
12.3.2WebSocket方式
12.3.3HTTP方式及實例
小結(jié)
第13章天氣預(yù)報應(yīng)用實例
13.1系統(tǒng)功能
13.2系統(tǒng)設(shè)計
13.3系統(tǒng)實現(xiàn)
13.3.1項目說明
13.3.2顯示層實現(xiàn)
13.3.3實體數(shù)據(jù)模型實現(xiàn)
13.3.4視圖數(shù)據(jù)模型實現(xiàn)
13.3.5工具層實現(xiàn)
13.3.6數(shù)據(jù)訪問層實現(xiàn)
13.3.7業(yè)務(wù)邏輯層實現(xiàn)
13.3.8其他
小結(jié)
附錄A鴻蒙應(yīng)用真機調(diào)試
附錄B英文縮寫說明
參考文獻