《阿里巴巴-周科羽-Flutter動態化框架- Aion的架構設計.pdf》由會員分享,可在線閱讀,更多相關《阿里巴巴-周科羽-Flutter動態化框架- Aion的架構設計.pdf(35頁珍藏版)》請在三個皮匠報告上搜索。
1、Flutter 動態化框架-Aion鳴羽 智能信息 Aion框架負責人個人簡介周科羽(鳴羽),先后投身于Android插件化、多開、安全等技術領域,20年加入阿里智能信息事業群,負責了Flutter動態化框架-Aion 的從0到1搭建,以及負責了Aion框架從1.0 到 4.0版本的持續迭代。目錄Aion 簡介技術架構技術難點后續規劃Aion簡介為什么要做為什么要做FlutterFlutter動態化?動態化?為什么要做Flutter動態化 跨端框架對比FlutterProfile/ReleaseAOTlibapp.so/app.framework端技術跨端框架應用打包,發版ReactNativ
2、eJS Bundle前端技術跨端框架應用打包,上線打包解釋執行為什么要做Flutter動態化 收益Flutter+動態化=1.研發測試效率2.快速迭代快速上線3.先上問題快速修復4.Flutter 支撐運營場景Aion簡介怎么實現Flutter動態化?怎么實現Flutter動態化 方案對比Flutter動態化1.So 替換2.Snapshot JIT運行3.Web on Flutter4.自定義DSL5.雙虛擬機解釋執行6.單虛擬機混合執行怎么實現Flutter動態化 Android方案Flutter動態化1.So 替換2.Snapshot JIT運行3.Web on Flutter4.自定義
3、DSL5.雙虛擬機解釋執行6.單虛擬機混合執行只支持 AndroidDebug Flutter JIT VMRelease Flutter AOT VMlibapp.sosnapshotDart SourceCode怎么實現Flutter動態化 Web on FlutterFlutter動態化1.So 替換2.Snapshot JIT運行3.Web on Flutter4.自定義DSL5.雙虛擬機解釋執行6.單虛擬機混合執行JS 橋接 Flutter 引擎1.Widget 樹橋接2.Render 樹橋接3.渲染引擎橋接1.性能比原生差(增加了js engine,依賴ffi 通信)2.脫離Flu
4、tter生態1.前端技術棧 友好怎么實現Flutter動態化 自定義DSLFlutter動態化1.So 替換2.Snapshot JIT運行3.Web on Flutter4.自定義DSL5.雙虛擬機解釋執行6.單虛擬機混合執行代理類代理函數ProxyWidgetProxyElementProxyRender1.輕量級框架2.引擎Size增長小3.對原生侵入性低1.語法支持不完備(范型問題,類型比較)2.調用受限(局限在代理類和代理函數范圍內)3.性能很差(for循環,復雜運算)怎么實現Flutter動態化 雙虛擬機Flutter動態化1.So 替換2.Snapshot JIT運行3.Web
5、on Flutter4.自定義DSL5.雙虛擬機解釋執行6.單虛擬機混合執行增加支持動態加載的VM原生Flutter AOT VM動態化Dart代碼非動態化Dart代碼字節碼1.動態化業務性能差(AOT JIT 解釋執行)2.Size 增長巨大(兩個libflutter.so)3.動態化業務與非動態化完全無法相互訪問4.維護成本高支持雙端解釋器(類似Java Bytecode)1.支持所有語法、類繼承2.支持Flutter生態內的三方庫3.對原生框架侵入性低Flutter動態化1.So 替換2.Snapshot JIT運行3.Web on Flutter4.自定義DSL5.雙虛擬機解釋執行6.
6、單虛擬機混合執行FlutterVM支持解釋執行AOT高性能高復雜代碼非動態化業務動態化業務支持相互調用字節碼1.動態化業務性能差(AOT JIT 解釋執行)2.Size 增長巨大(兩個libflutter.so)3.動態化業務與非動態化完全無法相互訪問4.技術復雜度高1.支持所有語法、類繼承2.支持Flutter生態內的三方庫怎么實現Flutter動態化 單虛擬機混合執行怎么實現Flutter動態化 方案對比Flutter動態化1.So 替換2.Snapshot JIT運行3.Web on Flutter4.自定義DSL5.雙虛擬機解釋執行6.單虛擬機混合執行FlutterVM支持解釋執行AO
7、T高性能高復雜代碼非動態化業務動態化業務支持相互調用字節碼1.支持所有語法、類繼承2.支持Flutter生態內的三方庫3.性能JIT Compiler機器碼Android1.技術復雜度高Aion簡介AionAion是什么?是什么?Aion簡介AionAion是什么?是什么?一套基于一套基于解釋執行解釋執行&JIT&JIT&AOTAOT混合執行技術實現的混合執行技術實現的FlutterFlutter執行框架執行框架Aion框架的定位將將FlutterFlutter框架的研發模式從框架的研發模式從客戶端技術客戶端技術研發模式轉變為研發模式轉變為類前端技術類前端技術研發模式研發模式AionAion技
8、術架構技術架構Aion技術架構4.0 技術架構圖Aion工程架構4.0 工程架構圖AionAion技術難點技術難點技術難點AOT Dart VMKBCInterpreterKernelBytecodeAOTCode動態加載Library和Class編譯優化,導致AOT代碼被刪除、不完整AOT函數和KBC函數相互調用如何保障KBC代碼繼承的AOT類和調用的AOT代碼完整性?支撐密集計算動態化代碼全語法支持如何保障KBC代碼繼承的AOT類和調用的AOT代碼完整性如何保障KBC代碼繼承的AOT類和調用的AOT代碼完整性調用AOT代碼解決渲染執行效率如何保障KBC代碼繼承的AOT類和調用的AOT代碼完
9、整性AOT虛擬機如何動態化加載LibraryAOT虛擬機如何動態化加載LibraryLibraryALibraryALibraryA_kbcCall LibraryA-Call LibraryA_kbc(bytecode)如何支撐高復雜密集計算動態化代碼如何支撐高復雜密集計算動態化代碼-指令優化技術AOT 函數與KBC函數相互調用KBC 解釋器跨棧調用問題:AOT棧幀結構:KBC棧幀結構:后續規劃后續規劃Aion框架的定位將將FlutterFlutter框架的研發模式從框架的研發模式從客戶端技術客戶端技術研發模式轉變為研發模式轉變為類前端技術類前端技術研發模式研發模式后續規劃FlutterFl
10、utter前端前端研發模式研發模式1.字節碼生成重構 支持 SSA編譯優化2.支持 Flutter 3.03.優化arm32 等低端機型的性能表現4.支持PC Flutter實現全平臺動態5.進一步降低Aion接入的Size膨脹數據THANKS投簡歷:zhoukeyu.zkyalibaba-了解更多技術實踐案例麥思博(msup)有限公司是一家面向技術型企業的培訓咨詢機構,攜手2000余位中外客座導師,服務于技術團隊的能力提升、軟件工程效能和產品創新迭代,超過3000余家企業續約學習,是科技領域占有率第1的客座導師品牌,msup以整合全球領先經驗實踐為己任,為中國產業快速發展提供智庫。高可用架構主要關注互聯網架構及高可用、可擴展及高性能領域的知識傳播。訂閱用戶覆蓋主流互聯網及軟件領域系統架構技術從業人員。高可用架構系列社群是一個社區組織,其精神是“分享+交流”,提倡社區的人人參與,同時從社區獲得高質量的內容。