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