一文了解Cliptrix低功耗引擎的那些事

在萬物互聯(lián)的時代,現(xiàn)代人已普遍接受電視、音箱等電器設(shè)備具備智能化能力,也是在這個趨勢下,我們身邊越來越多的iOT設(shè)備聯(lián)網(wǎng)和交互成為剛需。

但iot設(shè)備也面臨到一些非常顯著的痛點,例如iot設(shè)備的內(nèi)存、處理器等核心元件無法與手機、電腦等高端的智能化設(shè)備相比,很難直接運行一些大型的應(yīng)用服務(wù),所以一直以來在智能設(shè)備上我們都很難享受到在手機移動端、PC電腦端一致的服務(wù)體驗。

也正是在這樣挑戰(zhàn)下例如鴻蒙這種強調(diào)低功耗的操作系統(tǒng)能夠在iot設(shè)備上有非常好的適配性,今天也想具體談?wù)劦凸倪@件事。

輕量化技術(shù)載體

在正式展開低功耗之前,也想說說我們國內(nèi)技術(shù)圈特有的一種輕量化技術(shù)載體——小程序。小程序本身是一種極度輕量、隨用隨開且無需下載的應(yīng)用載體形式,由于體積極度小和豐富的生態(tài)應(yīng)用在國內(nèi)擁有非常高的活躍度,微信、支付寶、抖音等頭部超級App都依賴小程序彌補各個場景的空缺。

所以也有很多的iot廠商關(guān)注到如何利用小程序去為用戶提供服務(wù)的同時,也用這種輕量化的方式去引入符合自身需要的場景應(yīng)用。

究其小程序的技術(shù)原理,因為采用了 AppService 和 WebView 的雙線程模型,它基于 WebView 和原生控件的混合渲染方式來拓展 Web 的基礎(chǔ)功能,從而確保在移動端能夠獲得出色的性能和用戶體驗。

但是小程序這種方式本身需要寄附于App才能運行,而對于內(nèi)容和處理速度本身有限的iot設(shè)備而言可能還是有一定的難度。是否有更低耗的方式呢?

低功耗引擎

目前市面上也有部分的低功耗引擎是能夠提供給iot設(shè)備進行集成的,最典型的當屬鴻蒙和 Cliptrix,鴻蒙大家都很熟悉了在手機、電視、手表、車載都有不少的應(yīng)用場景,Cliptrix是小程序容器技術(shù)FinClip推出的低功耗引擎,主要價值是利用這個引擎小程序能夠獲得更優(yōu)秀的渲染性能與諸多特性增強,使終端用戶再一次接近原生體驗。

我們都知道,在基于 Web 體系的架構(gòu)下,小程序的部分基礎(chǔ)體驗會受到 WebView 提供的能力限制,當小程序基于 WebView 環(huán)境下使用時,WebView 中的 DOM 樹創(chuàng)建、JS 邏輯、CSS 解析、Layout、樣式計算等內(nèi)容都發(fā)生在同一個線程中。

也就是說,基于 WebView 運行的小程序可能存在如下問題:

  1. 由于 JS 引擎限制,內(nèi)存使用有一定要求,JS 解釋速度不一;
  2. 渲染使用 WebView,導致對性能和功耗有一定要求,開銷較大,也無法提供媲美原生的流暢體驗。

在一些硬件配置較低的設(shè)備(如 POS 機,穿戴設(shè)備等)中運行使用小程序時可能會出現(xiàn)無法運行,運行后卡頓的問題。 Cliptrix 的開發(fā)目標則是作為完全獨立的小程序渲染引擎,與當前小程序邏輯分開,最終完全替換現(xiàn)有的 WebView 引用,保證即使在硬件配置較低的設(shè)備中也可以提供流暢的使用與運行體驗。

JS Core 選型

在 JS 引擎的研判選型后,Cliptrix 選擇了 QuickJS,不僅能夠提供相比 V8 與 JSCore 更加輕量的體積,還擁有不錯的性能表現(xiàn),此外還支持 AOT(Ahead of Time,即將 JS 代碼預(yù)編譯成本地機器代碼),可以大幅提高 JS 的加載速度。
尤其是在嵌入式設(shè)備等資源有限的環(huán)境中,QuickJS 可以提供非常出色的內(nèi)存管理能力。

渲染方案

對于 WebView 的場景來說,Cliptrix則是通過自定義 Webview 進行能力實現(xiàn),其中包括“頁面繪制+頁面棧維護+頁面事件通信+QuickJS 引擎”的相關(guān)能力。

在傳統(tǒng)的 WebView 中的 DOM Tree 渲染時,可能會存在有“重排與繪排”導致的性能損耗,渲染阻塞導致的頁面無法響應(yīng)的問題。復(fù)雜的 DOM 結(jié)構(gòu)與深層次的嵌套也會增加代碼的復(fù)雜性,尤其是在單頁面應(yīng)用中 DOM 樹過于龐大所導致的操作與管理成本居高不下。

為了改進性能,通過 Cliptrix 直接繪制 UI,提供了對齊 WebView 的 API 的渲染容器,不僅可以保證不同終端與平臺中的一致性渲染,也可以提供良好的性能。

小程序支持

小程序的邏輯層與視圖層沒有較大變化,原本的邏輯層與視圖層分別由 JSCore 或 WebView 分別負責,在 Cliptrix 引擎中則分別由 QuickJS 實例負責,二者之間的通訊事件則通過 C++ 進行轉(zhuǎn)發(fā)。一些對應(yīng)的事件(如 ServiceReady 或 API )也會發(fā)送至 Cliptrix dart進行應(yīng)用層處理,C++ 與 dart 的通訊則通過外部函數(shù)接口 FFI(Foreign Function Interface)高效進行。

Cliptrix的應(yīng)用場景

Cliptrix 中通過一條單獨的線程來負責“JS 執(zhí)行”與“渲染執(zhí)行”,獲得例如“通過共享資源降低每個頁面中內(nèi)存的消耗,節(jié)約運行內(nèi)存與通信時間消耗”等相關(guān)優(yōu)化,解決不會再出現(xiàn)大量內(nèi)存占用的問題。

在頁面中內(nèi)容渲染的流程中,由于 WebView 需要向后兼容,積累了較多的歷史包袱,但考慮到其在設(shè)計起初并非是為了在小程序場景中使用落地,即使渲染流水線較為冗長復(fù)雜也是廣大開發(fā)者已經(jīng)接受的現(xiàn)狀。

而在 Cliptrix 中不僅大幅度提升了相關(guān)進展與性能指標,對于小程序終端開發(fā)者和用戶也是無感的,基本不需做任何適配或者代碼修改,基于 WebView 環(huán)境的小程序代碼無需任何改動就可以在全新的框架中運行(由于實現(xiàn)機制的差異,目前 Cliptrix 中只實現(xiàn)了小程序中的部分組件)。

在硬件設(shè)備中,Cliptrix 能夠帶來較為優(yōu)異的硬件設(shè)備適配體驗,目前 FinClip 已經(jīng)支持小程序在手機,智能電視,車載大屏等多種硬件中使用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容