OpenHarmony介紹
OpenHarmony 是由開放原子開源基金會孵化及運營的開源項目,目標是面向全場景、全連接、全智能時代,基于開源的方式,搭建一個智能終端設(shè)備操作系統(tǒng)的框架和平臺,促進萬物互聯(lián)產(chǎn)業(yè)的繁榮發(fā)展。
OpenHarmony架構(gòu)與安全
OpenHarmony整體架構(gòu)遵從分層設(shè)計,從下往上依次為:內(nèi)核層,系統(tǒng)服務(wù)層,框架層和應(yīng)用層。
系統(tǒng)功能按照“系統(tǒng)>子系統(tǒng)>功能/模塊”逐級展開,在多設(shè)備部署
OpenHarmony 系統(tǒng)類型
輕量系統(tǒng)(mini system)
面向MCU類處理器例如Arm Cortex-M、RISC-V 32位的設(shè)備,硬件資源極其有限,支持的設(shè)備最小內(nèi)存為128KiB,可以提供多種輕量級網(wǎng)絡(luò)協(xié)議,輕量級的圖形框架,以及豐富的IOT總線讀寫部件等??芍蔚?a target="_blank">產(chǎn)品如智能家居領(lǐng)域的連接類模組、傳感器設(shè)備、穿戴類設(shè)備等。
小型系統(tǒng)(small system)
面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為1MiB,可以提供更高的安全能力、標準的圖形框架、視頻編解碼的多媒體能力??芍蔚漠a(chǎn)品如智能家居領(lǐng)域的IP Camera、電子貓眼、路由器以及智慧出行域的行車記錄儀等。
標準系統(tǒng)(standard system)
面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為128MiB,可以提供增強的交互能力、3D GPU以及硬件合成能力、更多控件以及動效更豐富的圖形能力、完整的應(yīng)用框架??芍蔚漠a(chǎn)品如高端的冰箱顯示屏。
ArkUI
方舟開發(fā)框架(簡稱:ArkUI)是一套構(gòu)建分布式應(yīng)用界面的聲明式UI開發(fā)框架。它使用極簡的UI信息語法、豐富的UI組件、以及實時界面預(yù)覽工具,幫助大家在OpenHarmony應(yīng)用開發(fā)中提升開發(fā)效率30%。您只需使用一套ArkTS API,就能在多個OpenHarmony設(shè)備上提供生動而流暢的用戶界面體驗。
極簡的UI信息語法
ArkUI開發(fā)框架采用基于 TypeScript
擴展的極簡的聲明式UI描述界面語法,提供了類自然語言的UI描述和組合,開發(fā)者只需用幾行簡單直觀的聲明式代碼,即可完成界面功能。
豐富的內(nèi)置UI組件
ArkUI開發(fā)框架內(nèi)置了豐富而精美的多態(tài)組件,可滿足大部分應(yīng)用界面開發(fā)的需求,開發(fā)者可以輕松地向幾乎任何UI控件添加動畫并選擇一系列框架內(nèi)置的動畫能力,可為用戶帶來平滑而自然的體驗。其中多態(tài)是指UI描述是統(tǒng)一的,UI呈現(xiàn)在不同類型設(shè)備上會有所不同。比如 Button
組件在手機和手表會有不同的樣式和交互方式。
多維度的狀態(tài)管理機制
ArkUI開發(fā)框架為開發(fā)者提供了跨設(shè)備數(shù)據(jù)綁定功能和多維度的狀態(tài)管理機制(組件內(nèi)/組件間/全局/分布式數(shù)據(jù)驅(qū)動UI變更),支持靈活的數(shù)據(jù)驅(qū)動的UI變更,幫助開發(fā)者節(jié)省70%代碼完成跨端界面應(yīng)用開發(fā)。
支持多設(shè)備開發(fā)
ArkUI開發(fā)框架除了提供UI開發(fā)套件外還圍繞著多設(shè)備開發(fā)提供了多維度的解決方案,進一步簡化開發(fā):
基礎(chǔ)開發(fā)能力:包括基礎(chǔ)的分層參數(shù)配置(比如色彩、字號、圓角、間距等),柵格系統(tǒng),原子化布局能力(比如拉伸、折行、隱藏等)。
零部件組件層:包括多態(tài)控件,統(tǒng)一交互能力,以及在此基礎(chǔ)上的組件組合。
面向典型場景:提供分類的頁面組合模板以及示例代碼。
原生性能體驗
ArkUI開發(fā)框架內(nèi)置了許多核心的UI控件和動效,如圖片、列表、網(wǎng)格、屬性動畫、轉(zhuǎn)場動畫等,加持自研的 ArkCompiler 方舟編譯器和 ArkRuntime 方舟運行時深度優(yōu)化,這些都可以在 HarmonyOS / OpenHarmony 設(shè)備上達到移動原生應(yīng)用一樣的性能體驗。
實時預(yù)覽機制
ArkUI開發(fā)框架支持實時界面預(yù)覽特性可幫助開發(fā)快速的所見即所得的開發(fā)和調(diào)測界面,無需連接真機設(shè)備就可以顯示應(yīng)用界面在任何 HarmonyOS / OpenHarmony 設(shè)備上的UI效果,預(yù)覽的關(guān)鍵特性主要包括:
一致性渲染:和目標設(shè)備一致的UI呈現(xiàn)效果。
實時性預(yù)覽:改動相應(yīng)的代碼,實時呈現(xiàn)出相應(yīng)UI效果。另外,代碼能夠和UI雙向聯(lián)動,代碼改動的同時UI也實時變更,UI改動的同時代碼也相應(yīng)地變更。
多維度預(yù)覽:支持頁面級預(yù)覽、組件級預(yù)覽、多設(shè)備預(yù)覽。
高級UI組件擴展能力
ArkUI框架提供了基于XComponent組件的C++自繪制引擎接入(比如游戲引擎)能力,和基于Web組件的HTML5/Web的渲染能力。滿足了開發(fā)者在游戲、相機、地圖、瀏覽器等復(fù)雜應(yīng)用場景的開發(fā)訴求,降低了這類應(yīng)用移植的門檻。
Stage 模型
面向開發(fā)者提供十幾種不同場景的擴展服務(wù)Extension機制,在保證了應(yīng)用后臺進程合理運行的基礎(chǔ)上,規(guī)避了應(yīng)用進程之間無序拉起,達到保證前臺資源供給,應(yīng)用調(diào)度更加有序的目的。
ArkTS
之前寫一個應(yīng)用需要了解三種語言(JS/TS、HTML和CSS)。這對Web開發(fā)者相對友好,但對非Web開發(fā)者來說,負擔(dān)較重。
ArkTS是OpenHarmony優(yōu)選的主力應(yīng)用開發(fā)語言。ArkTS基于TypeScript(簡稱TS)語言擴展而來,是TS的超集。
ArkTS繼承了TS的所有特性。
當前,ArkTS在TS的基礎(chǔ)上主要擴展了聲明式UI能力,讓開發(fā)者能夠以更簡潔、更自然的方式開發(fā)高性能應(yīng)用。當前擴展的聲明式UI能力包括如下特性。
基本UI描述:ArkTS定義了各種裝飾器、自定義組件、UI描述機制,再配合UI開發(fā)框架中的內(nèi)置組件及其相關(guān)的事件方法、屬性方法等共同構(gòu)成了UI開發(fā)的主體。
狀態(tài)管理:ArkTS提供了多維度的狀態(tài)管理機制,在UI開發(fā)框架中,和UI相關(guān)聯(lián)的數(shù)據(jù),不僅可以在組件內(nèi)使用,還可以在不同組件層級間傳遞,比如父子組件之間、爺孫組件之間,也可以是應(yīng)用全局范圍內(nèi)的傳遞,還可以是跨設(shè)備傳遞。另外,從數(shù)據(jù)的傳遞形式來看,可分為只讀的單向傳遞和可變更的雙向傳遞。開發(fā)者可以靈活的利用這些能力來實現(xiàn)數(shù)據(jù)和UI的聯(lián)動。
動態(tài)構(gòu)建UI元素:ArkTS提供了動態(tài)構(gòu)建UI元素的能力,不僅可以自定義組件內(nèi)部的UI結(jié)構(gòu),還可以復(fù)用組件樣式,擴展原生組件。
渲染控制:ArkTS提供了渲染控制的能力。條件渲染可根據(jù)應(yīng)用的不同狀態(tài),渲染對應(yīng)狀態(tài)下的UI內(nèi)容。循環(huán)渲染可從數(shù)據(jù)源中迭代獲取數(shù)據(jù),并在每次迭代過程中創(chuàng)建相應(yīng)的組件。
使用限制與擴展:ArkTS在使用過程中存在限制與約束,同時也擴展了雙向綁定等能力。
示例中所包含的ArkTS聲明式開發(fā)范式的基本組成說明如下:
裝飾器: 用于裝飾類、結(jié)構(gòu)、方法以及變量,賦予其特殊的含義,如上述示例中@Entry、@Component和@State都是裝飾器。 具體而言,@Component表示這是個自定義組件;@Entry則表示這是個入口組件;@State表示這是組件中的狀態(tài)變量,這個變量變化會觸發(fā)UI刷新。
自定義組件:可復(fù)用的UI單元,可組合其他組件,如上述被@Component裝飾的struct Hello。
UI描述:聲明式的方法來描述UI的結(jié)構(gòu),例如build()方法中的代碼塊。
內(nèi)置組件:ArkTS中默認內(nèi)置的基礎(chǔ)組件、容器組件、媒體組件、繪制組件、畫布組件等各種組件,開發(fā)者可以直接調(diào)用,如示例中的Column、Text、Divider、Button等。
屬性方法:用于組件屬性的配置,如fontSize()、width()、height()、color()等,可通過鏈式調(diào)用的方式設(shè)置多項屬性。
事件方法:用于添加組件對事件的響應(yīng)邏輯,如跟隨在Button后面的onClick(),同樣可以通過鏈式調(diào)用的方式設(shè)置多個事件響應(yīng)邏輯。
審核編輯:湯梓紅
-
開源
+關(guān)注
關(guān)注
3文章
3380瀏覽量
42603 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3731瀏覽量
16431
發(fā)布評論請先 登錄
相關(guān)推薦
評論