Android 跨平台技术对比
從HybridApp到RN,再到Flutter,跨平臺(tái)技術(shù)的發(fā)展十分火熱,在平時(shí)的業(yè)務(wù)開發(fā)中,跨平臺(tái)也往往由于其動(dòng)態(tài)性,開發(fā)速度,節(jié)省人力而占據(jù)越來(lái)越大的比重。以下簡(jiǎn)單對(duì)比一下跨平臺(tái)技術(shù)
為什么純?cè)_發(fā)不占優(yōu)勢(shì)了
原生開發(fā)的優(yōu)勢(shì)
它的劣勢(shì)
但是目前面臨的問題是
所以這些跨平臺(tái)技術(shù)越來(lái)越流行,大幅度壓縮了原生開發(fā)的比重。常見的跨平臺(tái)技術(shù)主要有三種
針對(duì)原生開發(fā)的劣勢(shì),其實(shí)也有一些解決方案
Hybrid
簡(jiǎn)單理解為網(wǎng)頁(yè),webview執(zhí)行h5代碼,本質(zhì)上是個(gè)瀏覽器內(nèi)核,js運(yùn)行在權(quán)限受限的沙箱中,想訪問原生的一些功能,如藍(lán)牙,只能通過調(diào)起原生的代碼實(shí)現(xiàn)。基本上主要是JS通過JsBridge調(diào)用原生的一些功能。
他的優(yōu)勢(shì)在于web技術(shù)棧已經(jīng)很成熟了,資源都很豐富。
劣勢(shì)也很明顯,慢,性能差。復(fù)雜的業(yè)務(wù)界面及動(dòng)畫,卡。
這里也有一些解決方案
RN
RN實(shí)際上可以理解為js+映射原生空間繪制。
以下簡(jiǎn)單理解一下DOM樹,文檔對(duì)象模型是表示和處理一個(gè)html和xml文檔的標(biāo)準(zhǔn)接口,DOM樹就是文檔樹,與用戶界面的控件樹相對(duì)應(yīng),也可以與Android的xml布局文件的控件樹相對(duì)應(yīng)
React框架運(yùn)用的是典型的響應(yīng)式編程,狀態(tài)改變則UI隨之改變,它是響應(yīng)用戶狀態(tài)改變的事件而構(gòu)建用戶界面。它的好處是
此處,React框架也不會(huì)立即就刷新界面,而是抽象出一個(gè)虛擬DOM層,改動(dòng)先同步到虛擬DOM層上,然后再批量同步到真實(shí)DOM上,因?yàn)闉g覽器的每次DOM操作都可能引起瀏覽器的重繪或回流。
RN中的虛擬DOM樹最終會(huì)通過JavaScriptCore映射為原生控件樹。JSCore是一個(gè)JS解釋器,作用跟JSBridge差不多
RN中虛擬DOM樹映射為原生控件有兩步
它的優(yōu)勢(shì)在于
它的劣勢(shì)在于
Flutter
Flutter是自繪引擎加原生,在不用的平臺(tái)實(shí)現(xiàn)一個(gè)統(tǒng)一的渲染引擎接口來(lái)繪制UI
它的優(yōu)勢(shì)
它的劣勢(shì)
Flutter相對(duì)一般的自繪引擎的優(yōu)勢(shì)在于
Flutter采用自己的高性能引擎繪制widget,可以保證一致性,也可以避免對(duì)原生控件的依賴。在開發(fā)時(shí),Flutter是JIT模式,開發(fā)效率比較高,在打成release包的產(chǎn)物時(shí),它是AOT模式,它的運(yùn)行效率比較高。而且因?yàn)樗亲约旱匿秩疽?#xff0c;在滑動(dòng)和滾動(dòng)場(chǎng)景下具有明顯的優(yōu)勢(shì)。
總結(jié)
| 平臺(tái) | 優(yōu)勢(shì) | 劣勢(shì) |
| 原生 | 1.能訪問平臺(tái)的全部功能 2.速度快,性能高 | 1.平臺(tái)特定,開發(fā)成本高 2.不支持動(dòng)態(tài)化 |
| Hybrid | web技術(shù)棧,社區(qū)資源豐富 | 性能差,復(fù)雜的界面和動(dòng)畫,難以支持 |
| RN | 1.web技術(shù)棧,社區(qū)資源豐富,上手成本低 2.原生渲染,性能比h5高 3.支持動(dòng)態(tài)化,熱更新 | 1.渲染時(shí)需要JS和原生通信,拖動(dòng)時(shí)可能因?yàn)橥ㄐ蓬l繁卡頓 2.執(zhí)行時(shí)時(shí)JIT,執(zhí)行效率低 3.渲染依賴原生控件,當(dāng)系統(tǒng)更新時(shí),RN的更新可能不及時(shí) |
| Flutter | 1.Flutter社區(qū)生態(tài)越來(lái)越豐富 2.性能高,支持AOT 3.自繪UI引擎,不同平臺(tái)展示效果一致 4.開發(fā)JIT,編譯AOT | 1.不支持動(dòng)態(tài)化 2.開發(fā)效率低 |
參考
《Flutter實(shí)戰(zhàn)》
Android WebView H5 秒開方案總結(jié) - 掘金
總結(jié)
以上是生活随笔為你收集整理的Android 跨平台技术对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OCM实战之RAC集群打补丁
- 下一篇: Android 面试题笔记(一)