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