背景
組件化作為Android客戶端技術的一個重要分支,近年來一直是業界積極探索和實踐的方向。每個大廠內部的各個Android開發團隊也在嘗試和實踐不同的組件化方案,並且在組件化通信框架上也有很多高質量的產出。本文主要介紹我們的組件化方案,希望對從事Android組件化開發的同學能有所啟發。
為什麼要組件化
近年來,為什麼這麼多團隊要進行組件化實踐呢?組件化究竟能給我們的工程、代碼帶來什麼好處?我們認為組件化能夠帶來兩個最大的好處:
1.提高組件復用性
可能有些人會覺得,提高復用性很簡單,直接把需要復用的代碼做成Android Module,打包AAR並上傳代碼倉庫,那麼這部分功能就能被方便地引入和使用。但是我們覺得僅僅這樣是不夠的,上傳倉庫的AAR庫是否方便被複用,需要組件化的規則來約束,這樣才能提高復用的便捷性。
2.降低組件間的耦合
我們需要通過組件化的規則把代碼拆分成不同的模塊,模塊要做到高內聚、低耦合。模塊間也不能直接調用,這需要組件化通信框架的支持。降低了組件間的耦合性可以帶來兩點直接的好處:第一,代碼更便於維護;第二,降低了模塊的Bug率。
怎樣實現組件化
要實現組件化需要考慮的問題主要包括下面幾個:
- 代碼解耦。將一個龐大的工程拆分解耦,這是非常耗時耗力的工作,但這也是最基礎最重要的一步
- 數據傳遞。每個組件都有可能提供給其他組件使用,主項目與組件、組件與組件之間的數據傳遞
- UI跳轉。
- 組件的生命周期。組件載入、卸載和降維的生命周期
- 集成調試。在開發階段如何做到按需的編譯組件?一次調試中可能只有一兩個組件參與集成,這樣編譯的時間就會大大降低,提高開發效率。
- 代碼隔離。如何杜絕耦合的產生。
下面給大家介紹的是全網最全的Android組件化實戰整理,覆蓋了整個互聯網公司,受篇幅限制不會展示所有內容,只能截圖展示部分,完整內容已整理成PDF文檔,如果你正好需要這份完整版Android組件化最佳實戰PDF,可以私信關鍵詞【筆記】即可獲得免費領取方式。
第一章 Android組件化初識
1.組件化和模塊化的區別
- 組件化和插件化的區別
- 組件化開發的優勢
- 業務邏輯層
5.從組件化實戰來解決問題
- Android組件化基礎

第二章 Android組件化初探
1.組件化演示案例
- 模塊化和組件化
- 模塊化
- 組件化
- 組件化Demo
- 項目分析
- 組件application和library動態切換
- 組件間的數據傳遞和方法調用
- 組件類(例如:Fragment)的獲取,以及誇組件頁面跳轉和通訊
2. WanAndroid APP 組件化項目實戰附demo
- 簡介
- 版本更新
- 效果圖
- 主要功能
- 項目目錄結構
- 主要開源框架

第三章 架構演化(大廠篇)
1.從智行 Android 項目看組件化架構實踐
- 前言
- 概述
- 組件化調整的原因和目標
- 組件化架構調整的整體規劃
- 組件化架構調整中遇到的一些問題
- 組件化架構的實踐成果

2.得到 App
- Android徹底組件化demo發布
- JIMU使用指南
- 組件化拆分的感悟
- Android徹底組件化—代碼和資源隔離
- 代碼隔離
- 資源隔離
- 調試切換

組件化:代碼隔離也難不倒組件的按序初始化
- 問題的根源
- 為什麼不使用官方StartUp而選擇造輪子
- 設計思路
- 有向無環圖(DAG)
- 環校驗
- 契合需求的排序方式
- 任務的描述
- 在JIMU中使用
- 重要事項

3.微信 App
- 微信Android模塊化架構重構實踐
- 微信Android架構歷史
- 為何再次重構微信
- 重塑模塊化
- 取捨和選擇
- 代碼之外,架構之內

4.蘑菇街 App
- 蘑菇街 App 的組件化之路
- 實現方式
- 組件生命周期管理
- 殼工程
- 遇到的問題
- 持續集成
- 周邊設施
- 小結

蘑菇街 App 的組件化之路·續
- 統一的調用實現
- 通過 Category 來統一組件對外暴露的介面
- 更明確的表述
- 註冊這個組件關心的 URL
- 註冊這個組件能夠被調用的方法/屬性
- 在 App 生命周期的不同階段做不同的響應
- 針對casatwy的一些回應
- 小結

5 愛奇藝 App
- 關於組件化
- 基於Service的IPC通信
- 組件化跨進程通信的核心訴求
- Andromeda
- 架構分析

6.美團 App
- 外賣客戶端容器化架構的演進
- 背景
- 美團外賣業務介紹
- 美團外賣移動端歷史架構概述
美團外賣容器化架構全景圖
- 什麼是容器化架構
- 容器化架構的優勢
- 外賣容器化架構全景圖
- 容器化的挑戰
- 外賣跨端容器建設
- MRN容器
- Titans容器
外賣頁面容器建設
- 頁面容器化設計思路
- 業務構建模塊標準化
- 小結
外賣容器化架構的衡量指標
- 容器化架構衡量指標的特點
- 鏈路指標
- 關鍵指標
- 外賣容器化架構的監控運維
- 外賣容器化架構的發布能力
- 容器化架構發布體系
- 跟版本發布流程
- bundle資源發布
- 多種發布能力綜合使用

7. 美團Android組件化方案及組件消息匯流排modular-event實戰
- 背景
- 組件化之前的狀態
- 組件化方案調研
- 美團其他團隊組件化方案調研
- 組件化方案
- 組件化消息匯流排框架modular-event
- 組件消息匯流排modular-event的實現
- 消息匯流排modular-event的結構
- 使用動態代理實現運行時調用
- 訂閱和發送的模式
8. 美團Android消息匯流排的演進之路:用LiveDataBus替代RxBus、EventBus
- 背景
- 發布/訂閱模式
- RxBus的出現
- 引入LiveDataBus的想法
- 為什麼使用LiveData構建數據通信匯流排LiveDataBus
- LiveDataBus的設計和架構
- LiveDataBus最終實現
9.WMRouter:美團外賣Android開源路由框架
10.美團貓眼android模塊化實戰-可能是最詳細的模塊化實戰

11.攜程App(篇幅過長,無法展示全部)
12.支付寶 App
……

總結:組件化後讓代碼結構非常清晰,分層結構以及之間的交互很明了,團隊中的任何一個人都可以很輕鬆的繪製出代碼結構圖,這個在之前是沒法做到的,並且每個組件的編譯時間從 10 分鐘降到了幾十秒,工作效率有了很大地提升,最關鍵的還是解耦之後,每次開發需求的時候,面對的代碼越來越少,不用背負那麼重的代碼包袱,可以說達到了「代碼越寫越少」的理想情況。如果你是一位Android開發者學好組件化是非常有必要的,而深入理解組件化的實戰更是重中之重。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/269635.html
微信掃一掃
支付寶掃一掃