本書將詳細講解閑魚Flutter&FaaS云端一體化架構,以及閑魚基于Flutter的架構演進與創新,學習一套全面的Flutter架構應用方案。本書介紹閑魚技術團隊利用Flutter技術改造和上線復雜業務的混合工程改造實踐,抽取Flutter依賴到遠程的實現細節,以及使用Plugin橋接獲取設備信息、使用基礎網絡庫等混合開發實踐指南。這些實踐遍布閑魚各大業務線和應用場景,為讀者使用Flutter打造自己的研發體系探索一條實踐之路。除了介紹閑魚Flutter應用框架Fish Redux、開發利器AspectD、FlutterBoost等一眾開源工具與開發實踐指南,你還將在本書中學到Flutter的更多應用場景。
阿里巴巴集團資深技術專家,花名酒丐。2011年加入阿里巴巴,先后在B2B、淘寶、手機淘寶、閑魚負責過會員、物流、O2O、導購等系統的架構和研發,參與和組織過多個業務孵化成長為數億用戶的平臺業務。對領域建模、大數據和移動架構技術有豐富的研究和實踐經驗。目前擔任閑魚的技術負責人,負責產品的技術研發工作。
第1章 混合工程 1
1.1 Flutter工程體系 1
1.1.1 混合工程研發體系介紹 1
1.1.2 混合工程下的Flutter研發結構 2
1.1.3 工程結構 2
1.1.4 構建優化 3
1.1.5 Native啟動下的Flutter調試 6
1.1.6 Native啟動下的Flutter熱重載 9
1.1.7 Native與Flutter聯合調試 11
1.1.8 持續集成 11
1.2 混合工程改造實踐 11
1.2.1 項目背景及問題 11
1.2.2 改造目標 12
1.2.3 方案的制訂 12
1.2.4 改造的實現過程 14
1.3 混合工程與持續集成 15
1.3.1 背景思考 15
1.3.2 實現方法 16
1.3.3 iOS依賴的Flutter庫的抽取 21
1.3.4 Flutter混合工程的持續集成流程 23
1.4 快速完成混合工程搭建 24
1.4.1 flutter-boot簡介 24
1.4.2 工程化設計 25
1.4.3 混合棧 27
1.5 使用混合棧框架開發 29
1.5.1 為什么需要混合方案 29
1.5.2 Google官方提出的混合方案 29
1.5.3 第二代混合技術方案 FlutterBoost 31
1.5.4 擴展補充 35
第2章 能力增強 36
2.1 基于原生能力的插件擴展 36
2.1.1 Flutter Plugin 36
2.1.2 Platform Channel 37
2.1.3 獲取剩余電量Plugin 39
2.1.4 加載Plugin 46
2.1.5 遇到的問題 48
2.1.6 延展討論 49
2.2 基于外接紋理的同層渲染 50
2.2.1 Flutter渲染框架 50
2.2.2 存在的問題 51
2.2.3 解決方法 52
2.3 多媒體能力擴展實踐 58
2.3.1 背景 58
2.3.2 設計思路 58
2.3.3 一些難點 59
2.3.4 總結 60
2.4 富文本能力應用實踐 61
2.4.1 富文本的原理 61
2.4.2 設計思路 62
2.4.3 關鍵部分代碼實現 64
2.4.4 效果 65
第3章 業務架構設計 66
3.1 應用框架設計實踐 66
3.1.1 Fish Redux開源背景及技術架構 66
3.1.2 Fish Redux技術解析 67
3.2 輕量級動態化渲染引擎的設計 77
3.2.1 背景 77
3.2.2 動態方案 77
3.2.3 模板編譯 78
3.2.4 渲染引擎 81
3.2.5 最終效果 85
3.3 面向切面編程的設計實踐 86
3.3.1 典型的AOP場景 88
3.3.2 面向開發者的API設計 88
3.3.3 AOP代碼的編譯 90
3.3.4 Dill操作 90
3.3.5 AspectD支持的語法 92
3.3.6 構建流程支持 95
3.3.7 實戰與思考 95
3.4 高性能的動態模板渲染實踐 96
3.4.1 為什么Native可行的方案不適用于Flutter 96
3.4.2 認識三棵樹 97
3.4.3 Flutter在Layout過程中的優化 98
3.4.4 如何自定義Widget 100
3.4.5 更多優化方向 105
參考文獻 106
第4章 數據統計與性能 107
4.1 數據統計框架的設計 107
4.1.1 用戶行為埋點定義 107
4.1.2 在Flutter上的埋點實現方案 108
4.1.3 曝光坑位 110
4.2 性能穩定性監控方案的設計 113
4.2.1 Flutter性能穩定性目標 113
4.2.2 頁面滑動流暢度 113
4.2.3 頁面加載耗時 116
4.2.4 異常率 118
4.3 高可用框架的設計與實踐 119
4.3.1 為什么要做Flutter性能監控 119
4.3.2 需要一個什么樣的SDK 119
4.3.3 從單個指標看整體設計 120
4.3.4 整體結構設計 122
4.3.5 SDK不同的使用方式 126
4.3.6 SDK的落地情況 126
4.4 跨端方案性能對比實踐 127
4.4.1 跨端方案對比 127
4.4.2 對比數據分析 128
4.4.3 總結 131
4.4.4 延伸閱讀 131
第5章 企業級應用實戰 134
5.1 基于Flutter的端架構演進與創新 134
5.1.1 Flutter的優勢與挑戰 134
5.1.2 閑魚的架構演進與創新 135
5.1.3 研發智能化在閑魚的應用 140
5.2 Flutter 與 FaaS 云端一體化架構 142
5.2.1 傳統Native+Web+服務端混合開發的挑戰 142
5.2.2 跨端方案Flutter與React Native的選擇 143
5.2.3 Dart作為FaaS層的第一可選語言 144
5.2.4 一體化的深層思考 146
5.2.5 案例效果 147