字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)

背景

組件化作爲Android客戶端技術的一個重要分支,近年來一直是業界積極探索和實踐的方向。每個大廠內部的各個Android開發團隊也在嘗試和實踐不同的組件化方案,並且在組件化通信框架上也有很多高質量的產出。本文主要介紹我們的組件化方案,希望對從事Android組件化開發的同學能有所啓發。

爲什麼要組件化

近年來,爲什麼這麼多團隊要進行組件化實踐呢?組件化究竟能給我們的工程、代碼帶來什麼好處?我們認爲組件化能夠帶來兩個最大的好處:

1.提高組件複用性

可能有些人會覺得,提高複用性很簡單,直接把需要複用的代碼做成Android Module,打包AAR並上傳代碼倉庫,那麼這部分功能就能被方便地引入和使用。但是我們覺得僅僅這樣是不夠的,上傳倉庫的AAR庫是否方便被複用,需要組件化的規則來約束,這樣才能提高複用的便捷性。

2.降低組件間的耦合

我們需要通過組件化的規則把代碼拆分成不同的模塊,模塊要做到高內聚、低耦合。模塊間也不能直接調用,這需要組件化通信框架的支持。降低了組件間的耦合性可以帶來兩點直接的好處:第一,代碼更便於維護;第二,降低了模塊的Bug率。

怎樣實現組件化

要實現組件化需要考慮的問題主要包括下面幾個:

  • 代碼解耦。將一個龐大的工程拆分解耦,這是非常耗時耗力的工作,但這也是最基礎最重要的一步

  • 數據傳遞。每個組件都有可能提供給其他組件使用,主項目與組件、組件與組件之間的數據傳遞

  • UI跳轉。

  • 組件的生命週期。組件加載、卸載和降維的生命週期

  • 集成調試。在開發階段如何做到按需的編譯組件?一次調試中可能只有一兩個組件參與集成,這樣編譯的時間就會大大降低,提高開發效率。

  • 代碼隔離。如何杜絕耦合的產生。

下面給大家介紹的是全網最全的Android組件化實戰整理,覆蓋了整個互聯網公司,受篇幅限制不會展示所有內容,只能截圖展示部分,完整內容已整理成PDF文檔,如果你正好需要這份完整版Android組件化最佳實戰PDF,可以點此處免費獲取。

第一章 Android組件化初識

1.組件化和模塊化的區別

  1. 組件化和插件化的區別

  2. 組件化開發的優勢

  3. 業務邏輯層

5.從組件化實戰來解決問題

  1. Android組件化基礎

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)

第二章 Android組件化初探

1.組件化演示案例

  • 模塊化和組件化

  • 模塊化

  • 組件化

  • 組件化Demo

  • 項目分析

  • 組件application和library動態切換

  • 組件間的數據傳遞和方法調用

  • 組件類(例如:Fragment)的獲取,以及誇組件頁面跳轉和通訊

2. WanAndroid APP 組件化項目實戰附demo

  • 簡介

  • 版本更新

  • 效果圖

  • 主要功能

  • 項目目錄結構

  • 主要開源框架

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)

第三章 架構演化(大廠篇)

1.從智行 Android 項目看組件化架構實踐

  • 前言

  • 概述

  • 組件化調整的原因和目標

  • 組件化架構調整的整體規劃

  • 組件化架構調整中遇到的一些問題

  • 組件化架構的實踐成果

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)
2.得到 App

  • Android徹底組件化demo發佈

  • JIMU使用指南

  • 組件化拆分的感悟

  • Android徹底組件化—代碼和資源隔離

  • 代碼隔離

  • 資源隔離

  • 調試切換

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)

組件化:代碼隔離也難不倒組件的按序初始化

  • 問題的根源

  • 爲什麼不使用官方StartUp而選擇造輪子

  • 設計思路

  • 有向無環圖(DAG)

  • 環校驗

  • 契合需求的排序方式

  • 任務的描述

  • 在JIMU中使用

  • 重要事項

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)

3.微信 App

  • 微信Android模塊化架構重構實踐

  • 微信Android架構歷史

  • 爲何再次重構微信

  • 重塑模塊化

  • 取捨和選擇

  • 代碼之外,架構之內

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)

4.蘑菇街 App

  • 蘑菇街 App 的組件化之路

  • 實現方式

  • 組件生命週期管理

  • 殼工程

  • 遇到的問題

  • 持續集成

  • 周邊設施

  • 小結

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)
蘑菇街 App 的組件化之路·續

  • 統一的調用實現

  • 通過 Category 來統一組件對外暴露的接口

  • 更明確的表述

  • 註冊這個組件關心的 URL

  • 註冊這個組件能夠被調用的方法/屬性

  • 在 App 生命週期的不同階段做不同的響應

  • 針對casatwy的一些迴應

  • 小結

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)
5 愛奇藝 App

  • 關於組件化

  • 基於Service的IPC通信

  • 組件化跨進程通信的核心訴求

  • Andromeda

  • 架構分析

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)

6.美團 App

  • 外賣客戶端容器化架構的演進

  • 背景

  • 美團外賣業務介紹

  • 美團外賣移動端歷史架構概述

美團外賣容器化架構全景圖

  • 什麼是容器化架構

  • 容器化架構的優勢

  • 外賣容器化架構全景圖

  • 容器化的挑戰

  • 外賣跨端容器建設

  • MRN容器

  • Titans容器

外賣頁面容器建設

  • 頁面容器化設計思路

  • 業務構建模塊標準化

  • 小結

外賣容器化架構的衡量指標

  • 容器化架構衡量指標的特點

  • 鏈路指標

  • 關鍵指標

  • 外賣容器化架構的監控運維

  • 外賣容器化架構的發佈能力

  • 容器化架構發佈體系

  • 跟版本發佈流程

  • bundle資源發佈

  • 多種發佈能力綜合使用

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)

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模塊化實戰-可能是最詳細的模塊化實戰

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)
11.攜程App(篇幅過長,無法展示全部)

12.支付寶 App

......

字節跳動總監對Android組件化的最佳實戰總結 ,覆蓋整個互聯網公司(附源碼)

總結:組件化後讓代碼結構非常清晰,分層結構以及之間的交互很明瞭,團隊中的任何一個人都可以很輕鬆的繪製出代碼結構圖,這個在之前是沒法做到的,並且每個組件的編譯時間從 10 分鐘降到了幾十秒,工作效率有了很大地提升,最關鍵的還是解耦之後,每次開發需求的時候,面對的代碼越來越少,不用揹負那麼重的代碼包袱,可以說達到了“代碼越寫越少”的理想情況。如果你是一位Android開發者學好組件化是非常有必要的,而深入理解組件化的實戰更是重中之重。

如果你正好需要這份Android組件化實戰PDF文檔,可以點擊此處快速獲取通道,資料都是免費分享給愛學習的你的。

整理不易,覺得有幫助的朋友可以幫忙點贊分享支持一下小編哦~

你的支持,我的動力;祝各位前程似錦,offer不斷!!!

更多Android架構相關資料可點此處獲取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章