溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

AWTK WEB版移植怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2021-12-29 14:00:44 來(lái)源:億速云 閱讀:175 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容主要講解“AWTK WEB版移植怎么實(shí)現(xiàn)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“AWTK WEB版移植怎么實(shí)現(xiàn)”吧!

一、WEB版本對(duì)AWTK意義

AWTK-WEB版本對(duì)AWTK是很重要的,主要原因有:

  • 讓用C語(yǔ)言開(kāi)發(fā)的AWTK應(yīng)用程序,在不需要修改源碼的情況下,能在瀏覽器中運(yùn)行。這樣做的好主要在于,可以很方便的向客戶展示項(xiàng)目。你只需分享一個(gè)鏈接,客戶就可以在瀏覽器中打開(kāi),并看到實(shí)際的運(yùn)行效果,這是一種非常棒的體驗(yàn)。

  • 把AWTK編譯成一個(gè)JS庫(kù),你可以用JS開(kāi)發(fā)AWTK應(yīng)用程序,并在瀏覽器中運(yùn)行。AWTK-JS讓AWTK支持用JS來(lái)開(kāi)發(fā)AWTK應(yīng)用程序,并在嵌入式系統(tǒng)中運(yùn)行,但不能在瀏覽器中運(yùn)行。而AWTK-WEB則是讓AWTK支持用JS來(lái)開(kāi)發(fā)AWTK應(yīng)用程序,并且能夠在瀏覽器中運(yùn)行,這打通了嵌入式和WEB之間的壁壘。

  • 開(kāi)發(fā)各種小程序也是AWTK的目標(biāo)之一。而小程序無(wú)一例外都是用javascript開(kāi)發(fā)的,WEB版本移植好了,支持小程序開(kāi)發(fā)也就非常容易了,所以我們需要先邁過(guò)這個(gè)坎。

二、如何實(shí)現(xiàn)WEB版本的移植

要將用C語(yǔ)言開(kāi)發(fā)的AWTK移植到WEB上,就得將C語(yǔ)言編譯成Javascript或者WebAssembly,emscripten為這個(gè)編譯提供切實(shí)可行的途徑,emscripten是一個(gè)偉大的工具,經(jīng)過(guò)不少大型項(xiàng)目的驗(yàn)證,已經(jīng)非常成熟了,可行性是沒(méi)有問(wèn)題的。

但是可行和實(shí)際能否搞定是有差距的,寫(xiě)個(gè)RTOS內(nèi)核是可行的,但是實(shí)際成功的并不多。能用和好用也是有差距的,甚至是成功與失敗的差別,GUI引擎很多,但是90%以上的都只能算是demo。AWTK的WEB不但要能用,而且要好用才行,所以整個(gè)移植過(guò)程就變得有趣了。

我把在移植過(guò)程遇到的問(wèn)題,面臨的各種選擇做個(gè)筆記,以供有需要的朋友參考。

三、WEB版本的目標(biāo)及策略

簡(jiǎn)單粗暴的將AWTK編譯成WEB版本,中間遇到的問(wèn)題和要做的工作可能少很多(當(dāng)然也許有些問(wèn)題更難解決)。但那只能讓AWTK的WEB版本可用,離好用還有不小差距。為了讓AWTK WEB好用,在移植之初就定了以下目標(biāo):

1.體積要小。

WEB版本要從網(wǎng)上加載資源,體積大小關(guān)系A(chǔ)PP的加載時(shí)間,對(duì)用戶體驗(yàn)造成直接影響。為了減小JS的體積,我們做了如下選擇:

  • 不使用SDL作為移植層。使用SDL作為移植層,就得加入SDL、navavg、stbimage和stbfont等一大堆東西,這會(huì)讓代碼量加倍,而且字體只能使用APP自己的字體,資源體積就更沒(méi)法容忍了。

  • 缺省字體使用瀏覽器自帶的字體。字體文件很大,動(dòng)輒就是幾M甚至十幾M。缺省字體使用瀏覽器自帶的字體,可以大大降低資源的體積。而特殊字體通常很小,仍然采用APP自己的字體。

  • 圖片采用獨(dú)立資源。這樣可以減小顯示第一個(gè)界面前所加載的資源的大小,等到第一個(gè)界面出來(lái)之后,可以顯示加載資源的進(jìn)度,這樣大大增強(qiáng)用戶體驗(yàn)。

2.速度要快。

  • UI和Style數(shù)據(jù)采用二進(jìn)制常量,編譯到代碼中,以減少訪問(wèn)網(wǎng)絡(luò)的次數(shù),這些數(shù)據(jù)不大,對(duì)代碼加載時(shí)間產(chǎn)生的影響可以忽略。

  • 圖片解碼使用瀏覽器本身的功能。這樣解碼速度會(huì)更快,也避免使用 stbimage解碼庫(kù),減小代碼體積。

  • 字體解碼使用瀏覽器本身的功能。這樣解碼速度會(huì)更快,也避免使用stbfont解碼庫(kù),減小代碼體積。

  • 窗口動(dòng)畫(huà)采用WebGL貼圖,可以提高窗口動(dòng)畫(huà)的效果。

  • 啟用臟矩形算法。不變不畫(huà),有變只畫(huà)變的部分。

3.功耗與性能兼顧。

  • 窗口動(dòng)畫(huà)采用WebGL貼圖,正常繪制采用Canvas 2D接口。

4.最大化兼容性。

  • 少用或不用第三方庫(kù)。比如SDL有WEB版本的移植,但是移植到各種小程序可能就有問(wèn)題,修改第三方的庫(kù)是非常麻煩的事情,后期維護(hù)和升級(jí)也是一個(gè)難題。

  • 隔離瀏覽器特定的功能。事件和輸入法,各個(gè)小程序處理方式不同,Canvas接口有小的差異,必須把它們隔離開(kāi)來(lái)。

  • 保守的使用瀏覽器提供的功能,避免移植到其它平臺(tái)時(shí)遇到麻煩。

  • 自動(dòng)適配支持WebAssembly和不支持WebAssembly的平臺(tái)。WebAssembly很快很小,但是部分瀏覽器和小程序并不支持,必須自動(dòng)檢查,并加載不同的程序。

到此,相信大家對(duì)“AWTK WEB版移植怎么實(shí)現(xiàn)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI