国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

Android組件化和插件化開發

瀏覽:50日期:2022-09-27 13:41:03
什么是組件化和插件化?

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

組件化概述

android工程的組件一般分為兩種,lib組件和application組件application組件是指該組件本身就可以運行并打包成apklib組件是指該組件屬于app的一部分,可以供其它組件使用但是本身不能打包成apk

為什么要有組件化?

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

稍微改動一個模塊的一點代碼都要編譯整個工程,耗時耗力公共資源、業務、模塊混在一起耦合度太高不方便測試組件化正確的姿勢

既然選擇使用組件化,那么如何正確的使用它呢?這里給出一種解決方案,如果你有更好的方案,歡迎交流。我們創建了一個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中看著有點亂,整理出一張圖Android組件化和插件化開發

這樣的好處有

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

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

插件化為什么有插件化?

有了組件化,為什么還要用插件化呢?插件化開發總的來說有以下幾點好處(不同插件框架不一樣):

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

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

開源的插件化框架Qihoo360/DroidPluginCtripMobile/DynamicAPKmmin18/AndroidDynamicLoadersingwhatiwanna/dynamic-load-apkhoukx/android-pluginmgrbunnyblue/ACDDwequick/Small……

目前開源的這幾個框架有宿主和插件分離的也有融合在一起的,每個框架的詳細介紹和demo在github里都可以查看到。插件化demo運行起來比較簡單,但是真正將它用到實際項目中還是要考慮很多小細節的,目前我也正處于研究階段。

標簽: Android
相關文章:
主站蜘蛛池模板: 岢岚县| 洛浦县| 松溪县| 扶绥县| 西藏| 广州市| 承德市| 个旧市| 安顺市| 攀枝花市| 宜丰县| 泽普县| 南丹县| 桃园市| 上林县| 揭阳市| 贵州省| 万年县| 通辽市| 鄂伦春自治旗| 玉屏| 青海省| 灵武市| 灵宝市| 布尔津县| 永川市| 黄梅县| 无为县| 山阳县| 海丰县| 西青区| 化州市| 射洪县| 天镇县| 辽阳市| 永年县| 蒙山县| 宜川县| 都江堰市| 和静县| 湛江市|