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

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