Android組件化和插件化開發

Android組件化和插件化開發

什麼是組件化和插件化?

組件化和插件化

組件化開發就是將一個app分紅多個模塊,每一個模塊都是一個組件(Module),開發的過程當中咱們可讓這些組件相互依賴或者單獨調試部分組件等,可是最終發佈的時候是將這些組件合併統一成一個apk,這就是組件化開發。
插件化開發和組件化開發略有不用,插件化開發時將整個app拆分紅不少模塊,這些模塊包括一個宿主和多個插件,每一個模塊都是一個apk(組件化的每一個模塊是個lib),最終打包的時候將宿主apk和插件apk分開或者聯合打包。android


組件化

概述

android工程的組件通常分爲兩種,lib組件和application組件
application組件是指該組件自己就能夠運行並打包成apk
lib組件是指該組件屬於app的一部分,能夠供其它組件使用可是自己不能打包成apkgit

爲何要有組件化?

加入一個app工程只有一個組件,隨着app業務的壯大模塊愈來愈多,代碼量超10萬是很正常的,這個時候咱們會遇到如下問題github

  • 稍微改動一個模塊的一點代碼都要編譯整個工程,耗時耗力
  • 公共資源、業務、模塊混在一塊兒耦合度過高
  • 不方便測試

組件化正確的姿式

既然選擇使用組件化,那麼如何正確的使用它呢?這裏給出一種解決方案,若是你有更好的方案,歡迎交流。
咱們建立了一個app工程project,默認裏面有一個app組件,這個app組件是能夠直接運行的。
怎麼劃分組件呢?網絡

  • 1.新建一個lib組件,new Module—>Andorid Library,取名BaseUtilLib,咱們將全部的公共的工具類、網絡分裝等類放在其中
  • 2.新建一個lib組件,BaseReslLib,咱們將全部的公共資源、drawable、String等類放在其中
  • 3.將app按照本身的規則劃分紅多個模塊,好比按業務按地區等均可以
  • 4.逐一開發某個模塊,好比Test模塊,新建一個TestApp組件,TestApp組件引用[1][2]步驟的BaseUtilLib和BaseReslLib,在TestApp組件裏添加並引用TestLib組件。在TestLib的activity中寫代碼寫業務邏輯,TestApp只負責跳轉和測試
  • 5.將工程中的全部相似TestLib組件(不是TestApp組件)引入到工程的app中
    看着有點亂,整理出一張圖
    組件化開發

這樣的好處有併發

每一個模塊能夠獨立開發編譯運行
開發單個模塊時能夠共享資源和工具類
能夠針對單個模塊測試app

demo地址:https://github.com/halibobo/ModuleBuild框架


插件化

爲何有插件化?

有了組件化,爲何還要用插件化呢?插件化開發總的來講有如下幾點好處(不一樣插件框架不同):工具

  • 宿主和插件分開編譯
  • 併發開發
  • 動態更新插件
  • 按需下載模塊
  • 方法數或變量數爆棚

處境

開放出來的插件化開發框架比較多,他們各自都有本身的優點和和不足,實現的原理也有差異下面列組件化

開源的插件化框架

目前開源的這幾個框架有宿主和插件分離的也有融合在一塊兒的,每一個框架的詳細介紹和demo在github裏均可以查看到。插件化demo運行起來比較簡單,可是真正將它用到實際項目中仍是要考慮不少小細節的,目前我也正處於研究階段。測試

轉自:大黑

相關文章
相關標籤/搜索