鴻蒙HarmonyOS應(yīng)用程序框架揭秘【內(nèi)有學(xué)習(xí)福利】
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com
在HarmonyOS分布式開(kāi)發(fā)中,應(yīng)用程序框架是應(yīng)用開(kāi)發(fā)的基礎(chǔ)設(shè)施。隨著越來(lái)越多設(shè)備的智能化,在多設(shè)備場(chǎng)景下,應(yīng)用開(kāi)發(fā)面臨以下挑戰(zhàn):
1. 多設(shè)備的形態(tài)差異。 多樣化的屏幕適配 - 包括不同大小,不同分辨率,不同形狀,橫屏、豎屏、折疊屏等; 多樣化的交互方式 – 包括語(yǔ)音、觸摸、旋鈕、鍵盤(pán)、筆、3D手勢(shì)等
2. 多設(shè)備的能力差異。 內(nèi)存從百KB級(jí)到GB級(jí), 主頻從百M(fèi)級(jí)到G級(jí)等
HarmonyOS的解決策略主要是通過(guò) UI信息結(jié)構(gòu)抽象以及交互事件歸一來(lái)簡(jiǎn)化多設(shè)備的形態(tài)差異下應(yīng)用開(kāi)發(fā),同時(shí)通過(guò)統(tǒng)一的開(kāi)發(fā)范式,協(xié)同可伸縮的運(yùn)行時(shí)設(shè)計(jì),簡(jiǎn)化應(yīng)用在不同設(shè)備上部署。如下所示:
典型的HarmonyOS應(yīng)用部署運(yùn)行總體視圖如下:
一個(gè)HarmonyOS應(yīng)用包以APP Pack(Application Package)形式發(fā)布,它是由一個(gè)或多個(gè)HAP(HarmonyOS Ability Package)。通過(guò)云側(cè)部署,最終根據(jù)設(shè)備的形態(tài)會(huì)下載相應(yīng)的HAP在端側(cè)執(zhí)行。應(yīng)用程序框架主要包含三個(gè)部分:
1. Ability – 應(yīng)用的基礎(chǔ)單元。 可免安裝,可跨設(shè)備調(diào)用
2. 用戶(hù)程序框架 – 包管理/Ability管理/分布式管理
3. UI 編程框架 – 應(yīng)用的用戶(hù)界面
注:從應(yīng)用開(kāi)發(fā)角度,還需要各種Kit的能力(比如網(wǎng)絡(luò)/數(shù)據(jù)等設(shè)備訪(fǎng)問(wèn)能力),這塊不在這里展開(kāi)。
和傳統(tǒng)的單設(shè)備場(chǎng)景下不同,HarmonyOS中,應(yīng)用程序框架深度結(jié)合了跨設(shè)備的能力。 Ability作為基礎(chǔ)的運(yùn)行單元, 結(jié)合底層分布式的基礎(chǔ)設(shè)施,可以跨設(shè)備免安裝調(diào)度和運(yùn)行
Ability的定義如下所示:
Ability 的分布式調(diào)用, 狀態(tài)遷移/同步示例如下。通過(guò)相應(yīng)的分布式API設(shè)計(jì),簡(jiǎn)化跨設(shè)備的應(yīng)用開(kāi)發(fā)。
用戶(hù)程序框架的架構(gòu)視圖和運(yùn)行視圖如下。這里的Ability/包管理機(jī)制中會(huì)結(jié)合DMS(分布式管理服務(wù)),相連設(shè)備中Ability可以被發(fā)現(xiàn)和管理,進(jìn)行相應(yīng)的統(tǒng)一調(diào)度,方便不同應(yīng)用在不同設(shè)備上運(yùn)行。
除了上述的Ablilty/用戶(hù)程序管理,還有一個(gè)重要的部分是UI編程框- ACE (Ability Cross-platform Environment), 它支持主流的語(yǔ)言生態(tài) – Java & JS(JavaScript)。 其中 ACE Java 提供相對(duì)細(xì)粒度的UI編程接口,以命令式方式驅(qū)動(dòng); ACE JS 則是相對(duì)高層的UI描述,以聲明式方式驅(qū)動(dòng)。如下圖所示:

其中ACE JS 提供了一種統(tǒng)一的跨平臺(tái)解決方案。 核心設(shè)計(jì)思路:
1. 開(kāi)發(fā)范式方面,借鑒主流的Web 前端框架設(shè)計(jì),降低開(kāi)發(fā)成本
2. 在運(yùn)行效率方面,在C++層設(shè)計(jì)實(shí)現(xiàn)了統(tǒng)一的聲明式UI后端,結(jié)合并行化渲染,預(yù)編譯等機(jī)制實(shí)現(xiàn)了高性能渲染。在富設(shè)備上(比如大屏/手機(jī)等),一些典型場(chǎng)景(比如長(zhǎng)列表渲染等)可以達(dá)到應(yīng)用秒開(kāi),以及滑動(dòng)滿(mǎn)幀的體驗(yàn)
3. 在跨平臺(tái)方面,實(shí)現(xiàn)了獨(dú)立的自繪制引擎,能夠方便的移植到不同平臺(tái),結(jié)合自適應(yīng)布局以及多態(tài)UI組件能力,實(shí)現(xiàn)了實(shí)時(shí)的跨端的一致性渲染體驗(yàn) (PC上的UI 渲染路徑和設(shè)備上一致),并能夠在PC上同時(shí)進(jìn)行多設(shè)備以不同方式渲染。
在ACE JS 中,主要模塊(前端框架,JS 引擎,以及渲染后端實(shí)現(xiàn)等)是可伸縮設(shè)計(jì)的,它也具備運(yùn)行在極小的設(shè)備上的能力(比如百K級(jí)內(nèi)存的設(shè)備),并基于統(tǒng)一的開(kāi)發(fā)范式。如下所示:
HarmonyOS的應(yīng)用程序框架主要圍繞多設(shè)備,跨設(shè)備的場(chǎng)景重點(diǎn)設(shè)計(jì)和實(shí)現(xiàn)了應(yīng)用的基礎(chǔ)單元,應(yīng)用和包管理,UI編程框架,并結(jié)合相應(yīng)的底層分布式基礎(chǔ)設(shè)施進(jìn)一步簡(jiǎn)化了多設(shè)備/跨設(shè)備場(chǎng)景下的應(yīng)用開(kāi)發(fā)。
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com