Android | 用力過猛!爲了組件化改造學習十幾家大廠的技術博客

點贊關注,再也不迷路,你的支持對我意義重大!html

🔥 Hi,我是醜醜。本文 GitHub · Android-NoteBook 已收錄,這裏有 Android 進階成長路線筆記 & 博客,歡迎跟着彭醜醜一塊兒成長。(聯繫方式在 GitHub)java


前言

  • 組件化是 保持整個 App 可持續地進行高質量開發的基礎,近年來也是業界一直在積極探索和實踐的方向,在深刻理解組件化架構的過程當中,將不斷考驗你的技術深度與廣度;
  • 實踐中我還參考了十幾家技術團隊的解決方案(例如:美團、有贊、阿里等等),在這個系列裏,我將總結我對於組件化的思考和實踐。若是能幫上忙,請務必點贊加關注,這真的對我很是重要。

大廠解決方案參考

1 有贊微商城 IOS 端

  • 指出了業務模塊化的基本演進:「混亂」 -> 「中介者模式」->「去中心化」
  • 梳理了模塊間通訊需求:UI 頁面跳轉、動做執行及複雜數據傳輸、一對多的通知廣播;
  • 分享了「複雜數據傳輸」的處理辦法:「複製粘貼代碼」 -> 「下沉到common」

2. 有贊微商城 Android 端

  • 提出了 5 個調整方向:抽象基礎模塊、公共服務去中心化、業務模塊服務化、抽象基礎組件、單/多模塊打包
  • 介紹了基於 3 個基礎組件依賴和 1 個 Gradle 插件的落地方案

3. 蘑菇街 App

  • 提到了組件間通訊的實現:URL 統跳、協議下沉(須要有一個公共的地方來容納這些 public protocl)、隱式 Intent
  • 提到了組件生命週期管理:監聽系統通知、ModuleManager 中手動遍歷調用
  • 提到了組件版本管理與持續集成經驗

4. 獲得 App

  • 提到了組件生命週期、服務註冊的實現
  • 提到了公共層定義組件服務、base層定義通用資源
  • 提到了 implementation 與 runtimeOnly 的代碼 / 資源隔離效果;
  • 提到了 JIMU 插件的調試切換、智能配置功能;
  • 提到了 2 種調用組件聲明週期的方法: javassist 和反射;
  • 提到了有序初始化組件的解決方案:StartUp、DAG

5. 攜程 App

  • 提到了使用數據總線或者 URL 總線實現頁面和功能跳轉
  • 提到了定製 Gradle 插件來定製化打包

6. 支付寶 App

  • 介紹了基於 Bundle 和 mPaaS 打包插件的 Quinox 客戶端框架,用於解決模塊化和動態化兩大問題;
  • 提到了解決資源 id 重複的解法:改造 aapt,爲每一個 Bundle 指定不一樣 packageId;

7. 手淘 App

  • 提到了手淘 All In (聚划算、天貓、彩票)方案的隱患:性能、複用、穩定;
  • 提到了容器框架 Atlas 的工做原理;

8. 愛奇藝 App

  • 提到了使用 Service 進行跨進程組件通訊的缺點;
  • 介紹了組件化跨進程通訊框架 Andromeda 的功能與核心原理;

9. 微信 App

  • 提到了微信架構演進:簡單分層架構 -> 多進程架構 -> 多子工程並行開發架構;
  • 提到了基礎工程存在中心化的問題:愈來愈多的代碼/事件很「天然的」被下沉到基礎工程;
  • 提出了重塑模塊化的 3 個目標:改變通訊方式、從新設計模塊、約束代碼邊界
  • 提出了服務註冊的通訊方式
  • 提出了新穎的接口暴露方法:將文件後綴修改成.api(需配合include_with_api 命令)
  • 設計了模塊生命週期:dependency()、configure()、execute()
  • 設計了 pins 工程結構,用於約束代碼邊界
  • 提出了組件化的考量問題:動態性、隔離性

10. 美團 App

  • 設計了組件消息總線 modular-event
  • 設計了組件化路由框架 WMRouter

參考資料

《Android組件化架構》 —— 蒼王 著android

有贊技術團隊:ios

《有贊移動應用如何給頁面安上「任意門」》 —— qiezi 著git

《有贊微商城-Android組件化方案》 —— qiezi 著github

《有贊移動 iOS 組件化(模塊化)架構設計實踐》 —— jackie 著面試

騰訊技術團隊:算法

《微信Android模塊化架構重構實踐》 —— carlguo 著api

阿里巴巴技術團隊:微信

《你知道支付寶容器化架構是怎麼搭建的嗎?》 —— 奶蓋

《Atlas-手淘組件化框架的前世此生和將來的路》 —— 手淘團隊 著

美團技術團隊:

《外賣客戶端容器化架構的演進》 —— 郭賽 同同 徐宏 著

《Android組件化方案及組件消息總線modular-event實戰》 —— 海亮 著

《Android消息總線的演進之路:用LiveDataBus替代RxBus、EventBus》 —— 海亮 著

《WMRouter:美團外賣Android開源路由框架》 —— 子健 淵博 雲馳 著

《美團貓眼android模塊化實戰-多是最詳細的模塊化實戰》 —— happylion_heart 著

愛奇藝技術團隊:

《Android組件化跨進程通訊框架Andromeda解析》 —— wanderingguy 著

獲得技術團隊:

《Android完全組件化demo發佈》 —— 格竹子 著

《Android完全組件化—代碼和資源隔離》 —— 格竹子 著

《組件化:代碼隔離也難不倒組件的按序初始化》 —— leobert-lan 著

《淺談Android組件化》 —— 張明慶 著

攜程技術團隊:

《攜程移動App架構優化之旅》 —— 陳浩然 著

蘑菇街技術團隊:

《蘑菇街 App 的組件化之路》 —— limboy 著

《蘑菇街 App 的組件化之路·續》 —— limboy 著

其餘:

《Android 組件化/模塊化 的理解!》 —— 前行的烏龜 著

《Android組件化開發思想與實踐》 —— popular_linda 著

《關於Android模塊化我有一些話不知當講不當講》 —— 流水 著

《Android組件化方案》 —— 張華洋 著

《蘑菇街、滴滴、淘寶、微信的組件化架構解析》 —— 劉小杜 著

《Android業務組件化開發實踐》 —— kymjs張濤 著

《Android實現模塊 api 化》 —— Tyhj 著


推薦閱讀

感謝喜歡!你的點贊是對我最大的鼓勵!歡迎關注彭旭銳的GitHub!

相關文章
相關標籤/搜索