Android業務組件化之現狀分析與探討

前言:

      從我的經從來說的話,從事APP開發這麼多年來,所接觸的APP的體積變得愈來愈大,業務的也變得愈來愈複雜,總來來講只有一句話:這是一個APP臃腫的時代!因此爲了告別APP臃腫的時代,讓咱們進入一個U盤時代,每一個業務模塊都是一個具有獨立運行的U盤,插在哪裏均可以完美運行,這就是推動業務組件化的初衷也是一個美好的願景。html

   業務組件化相關文章地址:網絡

需求背景:

     隨着公司的快速發展,版本不斷的迭代,業務變得也愈來愈複雜,業務模塊的數量有可能還會繼續增長,並且每一個模塊的代碼也會愈來愈多,這樣下去勢必影響開發效率,增長項目的維護成本,每一個工程師都要熟悉如此之多的代碼,並且每次編譯如此之多的代碼,電腦卡死了有木有?慢的像蝸牛先生有木有?這樣以來估計工程師直接瘋掉了!而後跳樓go die 了!因此推動公司業務組件化迫在眉睫,這也是實現業務組件化的大背景。架構

 現狀分析:

      只有知道本身問題出在了哪裏?纔好尋找解決問題的辦法,咱們先來看下目前大部分app的單一項目結構原型。大體以下圖所示:app

一眼望去這結構不是挺清晰的麼?每一個業務都放在單獨的包名下,網絡庫、圖片加載庫等第三方庫與上層業務都完美的剝離了,咱們再來看下他們的直接的依賴關係圖:maven

雖然上面的依賴關係舉例有點太過於極端,可是真實場景中是存在的。各個業務之間代碼互相引用,因此這種結構也是架構整改的根本動機,也是當務之急應該考慮的事情。爲了更好的知足各個業務的迭代而彼此不受影響,更好的解決上面這種讓人頭疼的依賴關係,開始着手app架構整改。組件化

從上面的分析咱們能夠得出適合業務組件化的幾種狀況:post

  • 業務較多、並且複雜
  • 業務之間的依賴須要解耦
  • 團隊成員較多,須要各自開發相對獨立的業務

業務組件化方向:

     APP業務組件化架構整改的方向就是告別結構臃腫的時代,讓各個業務變得相對獨立。模塊工程和類庫工程之間遵循向下依賴關係,各個模塊之間的遵循平級依賴關係。先看下整改後的各個獨立業務模塊與類庫工程之間的向下依賴關係圖:spa

    整改的方向由一個項目工程拆分紅若干個模塊工程,由app殼工程提供統一的入口,每一個業務獨立的模塊module共享項目的依賴庫。由殼工程集成須要引入的業務模塊,至於各個獨立的業務模塊之間的調用依賴關係,咱們藉助一箇中間層充當路由功能,這個路由咱們放在各個業務模塊共同引用的依賴庫那一層。由路由統一調度他們之間的依賴關係,路由調度解決平級依賴問題示意圖:htm

 

經過APP殼工程提供的路由功能,各個模塊之間調用再也不採用傳統的顯式調用,而是採用隱式調用的方式。從而使各個模塊之間再也不存在依賴關係。對象

APP業務組件化架構整改技術方案:

   業務組件化大體須要解決如下幾個問題。

 1.)業務組件的生命週期

    按照理想狀態的來看待的話,各個業務組件之間沒有任何依賴關係,這時咱們能夠把每一個獨立的業務組件當作一個可運行的app,因此業務組件的生命週期和應與獨立的app保持一致。

 2.)業務組件之間通訊

    在各個單獨業務組件內,基本上保持原來的調用方式,組件之間通訊採用URL Schema方式實現頁面跳轉,格式爲 schema://host/action?param1=value1¶m2=value2 。關於schema映射表維護由上面提到的Router(路由)這麼一個角色來維護,

schema解析由系統Framework來維護。其中schema映射表能夠作成後臺配置文件形式。也能夠代碼維護,不過組件須要預先註冊。以上說的對於傳遞基本參數是沒啥問題的。若是要傳遞對象的話,轉成Json 字符串就能夠了。

關於schema能夠參考個人這篇博客:Android業務組件化之URL Schema使用

 

APP 業務組件化架構整改帶來的好處:

 

 如此規模大的架構整改須要付出更高的成本,還會涉及一些潛在的風險,那麼整改後的架構可以帶來哪些好處呢?

  • 加快迭代速度,各個業務模塊組件更加獨立,再也不由於業務耦合狀況,在發版時候,因爲互相等待而遲遲不能發佈版本。

  • 穩定的公共模塊採用依賴庫方式,提供給各個業務線使用,減小重複開發和維護工做量。

  • 迭代頻繁的業務模塊採用組件方式,各業務線研發能夠互不干擾、提高協做效率,並控制產品質量。

  • 爲新業務隨時集成提供了基礎,全部業務可上可下,靈活多變。

  • 下降團隊成員熟悉項目的成本,下降項目的維護難度。

  • 加快編譯速度,提升開發效率

總結:

     本篇主要來分析爲什麼要實現業務組件化、組件化的方向、組件化的技術方案簡單探討、組件化帶來的好處,因爲目前還處於實施初期,不少觀點有多是錯誤的,不少技術坑還沒涉及,後續會跟進更多相關實現方案。

相關文章
相關標籤/搜索