一、什么是HarmonyOS
- 2019年8月9日,華為在華為開發者大會上正式發布HarmonyOS 1.0,同時將該操作系統開源。
- 2020年9月10日,HarmonyOS 2.0 正式發布。
- 2022年11月4日,全新的HarmonyOS 3.1發布,引入全新的Stage模型(準備放棄FA模型)。
二、目標
本文章將帶領我們掌握以下技能:
- 理解HarmonyOS基本概念;
- 體會HarmonyOS設計理念;
- 區分HarmonOS技術架構層次;
- 了解HarmonOS部件化架構設計;
- 掌握HarmonOS技術特性;
- 了解HarmonOS系統安全;
三、HarmonyOS簡介
萬物互聯時代正在開啟
經過十多年的發展,傳統移動互聯網的增長紅利已漸見頂,IoT時代即將到來。
新場景帶來的挑戰
不同的設備類型意味著不同的傳感器能力、硬件能力。屏幕尺寸、操作系統和開發語言,以及交互方式等。同時跨設備協作也讓開發者面臨這分布式開發帶來的各種復雜性,適配和管理工作也將非常巨大。當前移動應用開發中遇到的主要挑戰包括以下一種:
- 針對不同設備上的不同操作系統,重復開發,維護多套版本。
- 多種語言棧,對技術人員技能要求較高。
- 多種開發框架,不同的編程范式。
- 命令式編程,需要關注細節,變更頻繁,維護成本高。
移動終端應用生態面臨變革
傳統應用具有以下優缺點:
優點:
- 功能齊全
- 整體體驗好
缺點:
- 厚重
- 開發周期長、成本高
- 信息、應用孤島(傳統應用之間是彼此獨立的、碎片化的)
- 以應用未中心,而非用戶為中心
- 需要用戶主動關注等顯性操作
輕量化程序實體正在成為新的趨勢,輕量化程序具備“即用即走、無需安裝卸載、永遠最新”的特征,推動了App基于搜索下載的“人找應用”的傳統分發想“服務找人”的智慧分發演進。
鴻蒙生態迎接挑戰
-
單一設備延伸打多設備
應用一次開發就能在多個設備上運行,軟件實體能夠從單一的設備轉移到其他設備上,且多個設備之間能夠協同運行,給消費者提供全新的分布式體驗。
-
厚重應用模式到輕量化服務模式
提供輕量化的服務,最小化資源消耗,一步直達,快速完成消費者特定場景的任務。
-
智慧分發到AI加持下的智慧分發
為消費者提供智慧服務場景服務,實現“服務找人”。
-
純軟件到軟硬芯協同的AI能力
提供軟硬芯協同話的原生AI能力,全面滿足應用高性能訴求。
HarmonyOS系統定義
- HarmonyOS是一款面向萬物互聯時代的、全新的分布式操作系統。
- 在傳統的單設備系統能力基礎上,HarmonyOS提出了基于同一套系統能力、設備多種終端形態的分布式理念,能夠支持手機、平板、智能穿戴、智慧屏、車機等多種終端設備,提供全場景(移動辦公、運動健康、社交通訊、媒體娛樂)業務能力。
HarmonyOS發展史
2019年 > HarmonyOS正式發布并開源核心代碼。
2020年 > 鴻蒙智聯面向硬件生態伙伴全面開放
2021年 > 手機及多種智能終端設備搭載HarmonyOS 2
2022年 > 全新的HarmonyOS 3.1發布并推出Stage模型,五大場景體驗持續化鴻蒙生態更加成熟
2023年 > HarmonyOS 4 發布
2024年 > HarmonyOS NEXT 正式發布,拋棄對AOSP的支持,鴻蒙原生應用全面啟動。(不出意外的話,因為現在還是2023年,偷笑.jpg)
ArkTS
ArkTs 是華為自研的開發語言。它在TypeScript的基礎上,匹配ArkUI框架,拓展了聲明式UI、狀態管理等相應的能力,讓開發者以更簡潔、更自然的方式開發跨端應用。
@Entry
@Component
struct SecondPage {
@State myText: string = 'World'
build() {
Column() {
Text(`Hello ${this.myText}`)
.fontSize(50)
Divider()
Button('Click me')
.onClick(() => {
this.myText = 'ArkUI'
})
.height(50)
.width(100)
.margin({ top: 20 })
}
.height('100%')
.justifyContent(FlexAlign.Center)
}
}
ArkUI
ArkUI是一套構建分布式應用界面的聲明式UI開發框架。它使用極簡的UI信息語法、豐富的UI組件、以及實時界面預覽工具,提升開發效率。使用一套ArkTS API,就能在多個HarmonyOS設備上提供生動流暢的用戶界面體驗。
邏輯和UI分離通過利用數據雙向綁定機制傳遞頁面變化邏輯,將流轉7個步驟簡化為2個步驟。可將跨端遷移和協同的開發代碼量降低40%以上。
方舟編譯器(ArkCompiler)
ArkCompiler是華為自研的統一編程平臺,包含編譯器、工具鏈、運行時等關鍵部件,支持多種編程語言、多種芯片平臺聯合編譯、運行而設計的統一編程運行時平臺。支持包括動態類型和靜態類型語言在內的多種編程語言,如:JS、TS、ArkTS等。
-
方舟編譯器是鴻蒙系統作為手機、PC、平板、電視、車機和智能穿戴設備等多種設備統一操作系統的編譯運行時底座。主要分成兩個部分:
-
編譯工具鏈
編譯工具鏈以ArkTS/TS/JS源碼作為輸入,將其編譯成為ABC(ArkCompiler Byte Code,即方舟字節碼)文件。
-
運行時
運行時直接運行字節碼文件,實現對應語言規范的語義邏輯。
-
方舟編譯器具有以下特點:
-
AOT編譯模式
ArkCompiler利用ArkTS的靜態類型信息,進行類型推導并生成對象描述和內聯緩存,加速運行時對字節碼的解釋執行;AOT(Ahead-of-Time)Compiler利用靜態類型信息直接將字節碼編譯生成優化機器碼,讓應用啟動即可運行高性能代碼,提升應用啟動和運行性能。
arkcompiler-1.gif
-
LiteActor輕量化并發
ArkCompiler運行時在HarmonyOS上提供了Worker API支持并發編程。在運行時實例內存隔離的基礎上,ArkCompiler通過共享運行實例中的不可變或者不易變的對象、內建代碼塊、方法字節碼等技術手段,優化了并發運行實例的啟動性能和內存開銷。
arkcompiler-2.gif
-
源碼安全
ArkCompiler會把ArkTS/TS/JS編譯為方舟字節碼,運行時直接運行方舟字節碼。并且ArkCompiler使用多種混淆技術提供更高強度的混淆與保護,使得HarmonyOS應用包中裝載的是多重混淆后的字節碼,有效提高了應用代碼安全的強度。
arkcompiler3.gif
開源開放的生態環境
- HarmonyOS是華為通過OpenHarmony項目,結合商業發行版增加能力,構建華為自研產品的完整解決方案。
- OpenHarmony是由開放原子開源基金會(OpenAtom Foundation)孵化及運營的開源項目,目標是面向全場景、全鏈路、全智能時代,基于開源的方式,搭建一個智能終端設備操作系統的框架平臺,促進萬物互聯產業的繁榮發展。
OpenHarmony生態組成
OpenHarmony的生態由華為與生態合作伙伴共同構建,旨在構建一個健康的,可以自我正想迭代的生態系統,以持續吸引開發者和合作伙伴的加入,從而進而帶動更多的用戶選擇。
-
HMS
HMS類似于Google的GMS,是一個集華為全家桶的一個App,包含著許多功能接口的API的服務能力,是華為自由的不開源的。
-
華為商用的HarmonyOS
相當于基于Android的AOSP所構建的EMUI、MIUI等高度自定義UI的Android系統。HarmonyOS是基于OpenHarmony構建的商業版的操作系統。
-
HarmonyOS Connect
華為向合作廠商提供的一種解決方案。
HarmonyOS Connect 服務包為合作伙伴提供設備開發、原子化服務開發、設備全生命周期運營運維等一站式智能化解決方案,由基礎服務、增強服務、HarmonyOS Connect 云等組成。基礎服務為設備賦予超級終端體驗,增強服務提供設備運維分析、運營變現能力以及專屬場景服務,HarmonyOS Connect 云連接設備與用戶,共同助力開發者快速實現產品智能化升級,打造互聯互通的 HarmonyOS Connect 生態。
根據伙伴選擇的不同的解決方案與產品體驗特性,我們提供基于 OpenHarmony 系統的閉源服務包,您可以在“管理中心”中,完成產品定義后,即可獲取對應的服務包。
-
OpenHarmony
相當于Android中的AOSP,是一個開源的項目,具有最基礎的操作系統的能力。
HarmonyOS Connect介紹
- HarmonyOS Connect(中文:鴻蒙智聯)是華為統一的硬件生態品牌。
- HarmonyOS Connect生態伙伴可以基于華為提供的芯片設計、操作系統、連接、云、AI和用戶體驗設計能力,為消費者提供高品質的智能硬件生態設備,使該設備能夠與華為HarmonyOS設備(包括手機、全屋主機、智能座艙、智慧屏、手表等終端)以及其他的HarmonyOS Connect生態設備進行連接和協同,共同打造互聯互通的HarmonyOS Connect生態。
HarmonyOS Connect協助三種商業形態發展
1個平臺、3種商業模式:
-
鴻蒙智聯產品
伙伴自由渠道為主
-
華為智選
華為全渠道銷售為主
-
全屋子系統
全屋渠道銷售為主
HarmonyOS Connect生態智能家居產品合作伙伴案例
美的智能化家電、九陽不用手洗豆漿機、蘇泊爾小C主廚料理機、方太智能電蒸箱、探夢者滑板車、新日電動車、奧佳華按摩椅等等。
四、HarmonyOS設計理念
HarmonyOS設計理念概述
HarmonyOS從用戶和開發者視角出發,開發出一款面向萬物互聯時代的操作系統。
-
HarmonyOS的設計理念有兩條:
-
消費者體驗最佳原則
在終端硬件形態多樣化的趨勢下,保證用戶分布式多設備協同的體驗一致性,實現多端生態一體化。
-
開發者最小代價原則
像開發單設備一樣開發分布式應用,一次開發多端部署。
-
HarmonyOS試圖解決的問題
HarmonyOS作為面向智能終端的新一代OS,智能終端在萬物互聯的時代面臨的問題就是HarmonyOS需要解決的問題目標范圍。
- 軟件能力割裂
- 應用生態割裂
- 用戶數據割裂
- 多設備交互割裂
HarmonyOS設計目標
- 業務設計目標
- HarmonyOS的定位是面向萬物互聯下的操作系統,支撐萬物互聯下的多種設備和業務訴求,并隨同相關技術而不斷演進。
- 架構設計目標
- 彈性
- 可演進性
- 生態友好性
- 可重構性
- 可用性
- 流暢性
- 安全性
- 架構設計原則
- 分層抽象構建原則
- 積木化搭建原則
- 用戶體驗優化原則
- 隱私保護與安全原則
- 生態開放原則
- 分布式架構原則
- 接口隔離及兼容性原則
- 高性能低功耗原則
- 開源引用原則
鴻蒙生態應用核心技術理念
在萬物智聯時代重要機遇期,鴻蒙系統結合移動生態發展的趨勢,提出了三大技術理念。
超級終端
超級終端是按用戶在不同場景下使用各種智能終端,通過HarmonyOS的自動協同組成的一個邏輯終端。超級終端包含了各種類型的只能終端,是HarmonyOS管理的終端類型,對用戶而言,就像一個終端。
五、HarmonyOS技術架構
HarmonyOS整體遵從分層設計,從下向上依次為:內核層、系統服務層、框架層和應用層。系統功能按照“系統 > 子系統 > 功能/模塊”逐級展開,在多設備部署場景下,支持根據實際需求裁剪某些非必要的子系統或功能/模塊。HarmonyOS技術架構如下所示。
內核層
內核子系統:HarmonyOS采用多內核設計,支持針對不同資源受限設備選用適合的OS內核。內核抽象層(KAL,Kernel Abstract Layer)通過屏蔽多內核差異,對上層提供基礎的內核能力,包括進程/線程管理、內存管理、文件系統、網絡管理和外設管理等。
驅動子系統:硬件驅動框架(HDF)是HarmonyOS硬件生態開放的基礎,提供統一外設訪問能力和驅動開發、管理框架。
系統服務層
系統服務層是HarmonyOS的核心能力集合,通過框架層對應用程序提供服務。該層包含以下幾個部分:
系統基本能力子系統集:為分布式應用在HarmonyOS多設備上的運行、調度、遷移等操作提供了基礎能力,由分布式軟總線、分布式數據管理、分布式任務調度、方舟多語言運行時、公共基礎庫、多模輸入、圖形、安全、AI等子系統組成。其中,方舟運行時提供了C/C++/JS多語言運行時和基礎的系統類庫,也為使用方舟編譯器靜態化的Java程序(即應用程序或框架層中使用Java語言開發的部分)提供運行時。
基礎軟件服務子系統集:為HarmonyOS提供公共的、通用的軟件服務,由事件通知、電話、多媒體、DFX(Design For X) 、MSDP&DV等子系統組成。
增強軟件服務子系統集:為HarmonyOS提供針對不同設備的、差異化的能力增強型軟件服務,由智慧屏專有業務、穿戴專有業務、IoT專有業務等子系統組成。
硬件服務子系統集:為HarmonyOS提供硬件服務,由位置服務、生物特征識別、穿戴專有硬件服務、IoT專有硬件服務等子系統組成。
根據不同設備形態的部署環境,基礎軟件服務子系統集、增強軟件服務子系統集、硬件服務子系統集內部可以按子系統粒度裁剪,每個子系統內部又可以按功能粒度裁剪。
框架層
框架層為HarmonyOS應用開發提供了Java/C/C++/JS等多語言的用戶程序框架和Ability框架,兩種UI框架(包括適用于Java語言的Java UI框架、適用于JS語言的JS UI框架),以及各種軟硬件服務對外開放的多語言框架API。根據系統的組件化裁剪程度,HarmonyOS設備支持的API也會有所不同。
應用層
- 應用層包括系統應用和第三方非系統應用。
- Ability是應用所具備能力的抽象,也是應用程序的重要組成部分。Ability是系統調度應用的最小單元,是能夠完成一個獨立功能的組件。一個應用可以包含一個或多個Ability。
- Stage模型將Ability分為PageAbility和ExtensionAbility兩大類,其中ExtensionAbility又被拓展為ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等一系列的ExtensionAbility,以滿足更多的使用場景。
系統類型
根據設備的內存差異,鴻蒙操作系統適配的系統類型分為三類:
- 輕量系統(mini system)
- 支持的設備最小內存為128KiB
- 面向MCU(單片機)類處理器,例如Arm Cortex-M、RISC-V 32位的設備,硬件資源極其有限。
- 可以提供多種輕量級網絡協議,輕量級圖形框架,以及豐付的IOT總線讀寫部件等。可支撐的產品如智能家居領域的連接類模組、傳感器設備、穿戴類設備等。
- 小型系統(small system)
- 支持設備最小內存為1MiB
- 面向應用處理器,例如:Arm Cortex-A的設備
- 可以提供更高的安全能力,標準的圖形框架、視頻編解碼的多媒體能力。可支撐的產品如智能家居領域的IP Camera、電子貓眼、路由器以及智慧出行領域的行車記錄儀等。
- 標準系統(standard system)
- 支持的設備最小內存為128MiB
- 面向應用處理例如Arm Cortex-A的設備
- 可以提供增強的交互能力、3D GPU以及硬件合成能力、更多控件以及動效豐付的圖形能力、完整的應用框架。可支持的產品如高端的冰箱顯示屏。
開發語言介紹
- 純應用軟件開發,基于官方提供的系統SDK進行應用開發。
- 軟硬件結合的嵌入式開發,注重硬件操作、驅動開發、操作系統裁剪定制等。
-
應用開發
HarmonyOS支持如下語言
- ArkTS
- HML + JavaScript + CSS (僅FA模型可用)
- Java(僅API7及一下版本可用)
- C/C++
OpenHarmony支持如下語言
- ArkTS
- HML + JavaScript + CSS (僅FA模型可用)
- C/C++
-
設備開發
OpenHarmony設備開發僅支持
C/C++
編程語言。
六、部件化開發架構設計
HarmonyOS在模塊化、組件化的基礎上,引入了部件化架構的軟件工程方法,綜合運用模塊化、部件化、組件化等手段,有效支撐了統一的操作在不同規格、不同形態、不同類型的設備上的彈性部署。
架構分層與組件化
能力集合
- HarmonyOS針對不同的系統規格,分別定義了基礎部件能力集合(BCG)和可選部件能力集合(OCG),方便設備卡發著按需配置,已支撐其特色功能的擴展或定制開發。同時,HarmonyOS也支撐設廠商擴展私有的系統能力(PCG),打造設備差異化競爭力。
- 針對相同系統規格設備,具有相同的BCG系統能力,允許設備廠商按需選擇好OCG系統能力、擴展PCG系統能力。
部件管理
-
為了支持基于部件的HarmonyOS積木花拼裝,部件的基本特征包括:
部件之間的相對獨立
和所依賴的部件一起拼裝部署
-
可對外提供一定的系統軟硬件能力
- HPM(HarmonyOS Package Manager)是HarmonyOS部件包的管理和分發工具,面向設備開發時,用于獲取、定制HarmonyOS部件源碼,執行安裝、編譯、打包等操作,最終構建特定產品的OS軟件包,面向多設備部署時,如果部件之間存在依賴,則要求和被依賴的部件一起部署。
七、三大技術特性
-
消費體驗
硬件互助,資源共享
HarmonyOS可以實現不同終端設備之間的快速連接、能力互助、資源共享,匹配合適的設備、提供流暢的全場景體驗。
-
應用開發者體驗
一次開發,多端部署
HarmonyOS采用了多種分布式技術,使得應用程序的開發實現與不同終端設備的形態差異無關,降低了開發難度和成本。
-
設備開發者體驗
統一OS,彈性部署
HarmonyOS采用了組件化的設計方案,可以根據設備的資源能力和業務特征進行靈活裁剪,滿足不同形態的終端設備對于操作系統的要求。
統一OS彈性部署
HarmonyOS通過組件化和小型化等設計方法,支持多種終端設備按需彈性部署,能夠適配不同類別的硬件資源和功能需求。支撐通過編譯鏈關系去自動生成組件化的依賴關系,形成組件樹依賴圖,支撐產品系統的便捷開發,降低硬件設備的開發門檻。
支持個組件的選擇(組件可有可無):根據硬件的形態和需求,可以選擇所需的組件。
支持組件內功能集的配置(組件可大可小):像開發單設備根據硬件的資源情況和功能需求,可以選擇配置組件中的功能集。例如,選擇配置圖形礦建組件中的部分控件。一樣開發分布式應用,一次開發多端部署。
支持組件間依賴的關聯(平臺可大可小):根據編譯鏈關系,可以自動生成組件化的以來關系。例如,選擇圖形框架組件,將會自動選擇依賴的圖形引擎組件等。
一次開發多端部署
- HarmonyOS提供了用戶程序框架、Ability框架以及UI框架,支持應用開發過程中多端的業務邏輯和界面邏輯進行復用,能夠實現應用的一次開發,多端部署,提升了跨設備易用的開發效率。
- 采用業界主流的設計方式,提供多種響應式布局方案,支持柵格化布局,滿足不同屏幕的界面適配能力。
硬件互助,資源共享
多種設備之間能夠實現硬件互助、資源共享,依賴的關鍵技術包括分布式軟總線、分布式設備虛擬化、分布式數據管理、分布式任務調度等。
分布式軟總線
分布式軟總線是手機、平板、智能穿戴設備等分布式設備的通信基座,為設備之間的互聯互動提供了統一的分布式通信能力,為設備間的無感發現和零等待傳輸創造了條件。開發者只需聚焦于業務邏輯的實現,無需關注組網方式與底層協議。
分布式軟總線是如何自發現并連接的呢?
分布式軟總線提出自動發現設備,實現用戶零等待的自發現體驗,附近同賬號的設備自動發現無需等待,自動安全連接。分布式軟總線提出了異構網絡組網,自動構建一個邏輯全連接網絡,以解決設備間不同協議交互的問題。
分布式設備虛擬化
- 分布式設備虛擬化平臺可以實現不同設備的資源融合、設備管理、數據處理,多種設備共同形成一個超級虛擬終端。
- 針對不同類型的任務,為用戶匹配并選擇能力合適的執行硬件,讓業務連續的在不同設備間流轉,充分發揮不同設備的能力優勢,如顯示能力、攝像能力、音頻能力、交互能力以及傳感器能力等。
分布式數據管理
用戶數據不再與單一物理設備綁定,業務邏輯與數據存儲分離,跨設備的數據處理如同本地數據一樣方便快捷,讓開發者能夠輕松實現全場景、多設備下的數據存儲、共享和訪問,為打造一致、流暢的用戶體驗創造了基礎條件。
分布式任務調度
分布式任務調度基于分布式軟總線、分布式數據管理、分布式Profile等技術特性,構建統一的分布式服務管理(發現、同步、注冊、調用)機制,支持對跨設備的應用進行遠程啟動、遠程調用、遠程連接以及遷移等操作,更夠根據不同設備的能力、位置、業務運行狀態、資源使用情況,以及用戶的習慣和意圖,選擇合適的設備運行分布式任務。
八、系統安全
設備互信認證服務
-
設備互信認證服務
保證設備之間相互正確可信,并能夠在驗證信任關系后搭建安全的連接通道,實現用戶數據的安全傳輸。
-
用戶身份認證
除傳統身份認證方式外,還提供生物認證方式和分布式協同認證能力。
-
應用程序隔離和權限管理
系統化地規范應用程序的行為準則與權限許可并強制執行。
-
數據分級訪問控制架構
數據都能獲得與其個人數據敏感程度、系統數據重要程度和應用程序數據資產價值匹配的保護措施。
-
數據防泄漏保護
數據生命周期范圍內,數據的存儲、訪問和傳輸過程中數據泄露風險比較大。
九、元服務(原子化服務)
元服務定義
元服務是HarmonyOS提供的一種全新的應用形態,具有獨立入口,用戶可通過點擊、碰一碰、掃一掃等方式直接觸發,無需顯示安裝,由程序框架后臺靜默安裝后即可使用,可為用戶提供便捷服務。
元服務特性
元服務基于鴻蒙系統API開發,支持運行在1+8+N設備上,供用戶在合適的場景、合適的設備上便捷使用。元服務是支撐可分可合,自由流轉的輕量化程序實體,幫助開發者的服務更快觸達用戶。具備以下特點:
服務中心
服務中心為用戶提供統一的元服務查看、搜索、收藏和管理功能。
元服務的服務流轉
-
用戶手動流轉
用戶可以通過手動選擇合適的設備進行流轉。用戶點擊圖標后,會調起系統提供的流轉面板。面板中心會展示出用戶應用程序的信息及可流轉的設備,引導用戶進行后續的流轉操作。
-
系統推薦流轉
系統會通過分布式軟總線自發的驗證設備安全性,然后組網,組網之后就會去判斷當前用戶所處的環境中沒有用戶體驗更佳的可選設備,如果存在這樣的設備那么系統就會推薦用戶進行流轉。
元服務開發總體要求
-
免安裝HAP包不能超過10MB
以提供快速響應的體驗。超過此大小的HAP包不符合免安裝要求,也無法再服務中心露出。
-
Project Type字段選擇“Atomic Service”
HarmonyOS 2.0以上版本,通過DevEco Studio工程向導創建元服務。
-
保持免安裝屬性
對于元服務升級場景:版本更新時要保持免安裝屬性。如果新版本不支持免安裝,將不允許新版本上架。
-
HAP包必須包含FA
如果某便捷服務的入口需要在服務中心露出,則該服務對應的HAP包必須包含FA,且FA中必須制定一個唯一的mainAbility(定位用戶操作入口),mainAbility必須為PageAbility。
服務卡片定義
- 服務卡片(以下簡稱卡片)是FA的一種界面展示形式,將FA的重要信息或操作前置到卡片,以達到服務直達,減少體驗層級的目的。
- 卡片常用于嵌入到其他應用(當前只支持系統應用)中作為其界面的一部分顯示,并支持拉起頁面,發送消息等基礎的交互能力。