位元組高工最新分享Android元件化最佳實踐,GitHub標星20k,全是精髓!
一、什麼是元件化以及為啥要元件化
在專案的開發過程中,隨著開發人員的增多及功能的增加,如果提前沒有使用合理的開發架構,那麼程式碼會越來臃腫,功能間程式碼耦合也會越來越嚴重,這時候為了保證專案程式碼的質量,我們就必須進行重構。
比較簡單的開發架構是按照功能模組進行拆分,也就是用 Android 開發中的 module 這個概念,每個功能都是一個 module,每個功能的程式碼都在自己所屬的 module 中新增。這樣的設計在各個功能相互直接比較獨立的情況下是比較合理的,但是當多個模組中涉及到相同功能時程式碼的耦合又會增加。
例如首頁模組和直播間模組中都可能涉及到了視訊播放的功能,這時候不管將播放控制的程式碼放到首頁還是直播間,開發過程中都會發現,我們想要解決的程式碼耦合情況又又又又出現了。為了進一步解決這個問題,元件化的開發模式順勢而來。
二、元件化和模組化區別
1.模組:一般是指的業務模組比如【首頁模組】等。
2.元件:是指單一的功能元件,如【視訊元件】【支付元件】,每一個元件都可以單獨moudle開發,並且可以單獨抽出來當SDK使用。
由此看來他們之間最明顯的區分度就是模組相對於元件粒度更大,一個模組中可以包含多個元件,並且2種方式本質思想是一致的都是為了程式碼重用和業務解耦。在劃分的時候模組化也是業務導向,元件化是功能導向。
下圖就是一個非常基礎的元件化架構圖,圖中重上而下分為 應用層、元件層、基礎層。
3.基礎架構分層解釋
基礎層:包含一些基礎庫以及對基礎庫的一些封裝,比如我們常用的圖片載入、網路請求、資料庫儲存操作。
元件層:包含了一些簡單的功能元件
應用層:這圖中簡化了我們的應用,app相當於我們的模組,一個具體的業務模組會按照需求引用不同的功能元件。
注意:最簡單的元件架構如圖所示,但是這只是最理想狀態下的架構,實際開發中元件間肯定需要資料傳遞、頁面跳轉等,但是圖中顯示的各個元件間是相互隔離的,沒用相互依賴,如果進行相互依賴和互動,這就違背了元件化開發的原則,所以需要解決這些問題才能進行元件化開發。
如何學習元件化?
網上有很多關於學習元件化開發的文章,元件化原理很簡單,但是真正實施起來還是挺困難的,沒有相應的實戰+原始碼參考就做好踩坑的準備吧。
最近小編有幸在位元組跳動高工手裡扒到這份“元件化實戰學習手冊”,這位大佬主導開發過多個採用元件化架構的APP專案。現在我只想吹爆!這位大佬熬夜半個月,把積累的經驗和踩的坑都進行了總結,整理成了長達220頁的學習手冊,手冊中收錄了大廠熱門的元件化專案實戰,從新手到架構師,這份學習手冊足以。
第一章 Android元件化初識
- 元件化和模組化的區別
- 元件化和外掛化的區別
- 元件化開發的優勢
- 業務邏輯層
- 元件化開發要遇到的問題
- 從元件化實戰來解決問題
- Android元件化基礎
……
第二章 Android元件化初探目錄
- 元件化演示案例
概述
模組化和元件化
元件化Demo
元件application和library動態切換
…… - WanAndroid APP 元件化專案實戰附demo
版本更新
效果圖
主要功能
專案目錄結構
主要開源框架
……
第三章 架構演化(大廠篇)
- 從智行 Android 專案看元件化架構實踐
元件化調整的原因和目標
元件化架構調整的整體規劃
元件化架構調整中遇到的一些問題
- 得到 App
Android徹底元件化demo釋出
JIMU使用指南
元件化拆分的感悟
……
- 微信 App
微信Android模組化架構重構實踐
微信Android架構歷史
為何再次重構微信
……
-
蘑菇街 App
蘑菇街 App 的元件化實現方式
元件生命週期管理
殼工程
遇到的問題
持續整合
周邊設施
……
-
愛奇藝 App
基於Service的IPC通訊
元件化跨程序通訊的核心訴求
Andromeda
架構分析
……
- 美團 App
外賣客戶端容器化架構的演進
美團外賣容器化架構全景圖
外賣跨端容器建設
外賣頁面容器建設
外賣容器化架構的衡量指標
外賣容器化架構的監控運維
外賣容器化架構的釋出能力
……
- 美團Android元件化方案及元件訊息匯流排modular-event實戰
- 美團Android訊息匯流排的演進之路:用LiveDataBus替代RxBus、EventBus
- WMRouter:美團外賣Android開源路由框架
- 美團貓眼android模組化實戰-可能是最詳細的模組化實戰
- 攜程App
- 支付寶 App
......
以上就是位元組跳動大佬熬夜整理的220頁Android元件化實戰學習手冊,有需要的朋友直接點選我的GitHub獲取完整文件。
結語
現在元件化真的不是什麼新鮮東西了,大公司都用的滾瓜爛熟,龍飛鳳舞了,也就是現在部分中型專案和小專案在元件化的路上努力。
所以同志們,元件化沒玩過的,不熟悉的趕緊搞起來,說一點,你不會元件化,釋出影子工程那麼對你來說就是個噩夢。從本質上來講任何技術進步都是在現實需求的逼迫下抓耳撓腮,耗盡無數頭髮才想出來的。
所以呢元件化這個東西出來這麼久了,頁發展了這麼久了,用的人越來越多,那肯定是對我們開發大有裨益的,小夥伴們不會,不熟悉抓緊啦,要不面試問你你怎麼回答呢!