隨着web前端技術的發展,插件化技術已逐漸被拋棄,可是理解這三者的概念和區別,對編程思想的提升仍有幫助。前端
狹義上說:
是指Android studio支持了多個module開發時,提出的模塊化概念。
具體實踐:把經常使用的功能、控件、基礎類、第三方庫、權限等公共部分抽離封裝,把業務拆分紅N個模塊進行獨立(module)的管理。
而全部的業務組件都依賴於封裝的基礎庫,業務組件之間不作依賴,這樣的目的是爲了讓每一個業務模塊能單獨運行。web
廣義上說:
將一個複雜業務實現,根據功能、頁面或者其餘進行不一樣粒度的劃分程不一樣的模塊,模塊之間解耦,分別進行實現,也就是編程的模塊化思想。編程
模塊化的特色是:模塊之間解耦,能夠獨立管理。併發
將一個app的代碼拆分紅幾份獨立的組件,組件之間是低耦合的,能夠獨立編譯打包;也能夠將組件打包到一個apk中。app
【沒有組件化的缺點】:框架
【組件化的拆分】模塊化
【組件化後的優勢】組件化
與模塊化的區別:是每一個模塊的角色的轉換,一個組件能夠獨立編譯打包,也能夠做爲lib集成到整個apk中ui
阿里的 Arouter 開源框架.net
插件化是將一個apk根據業務功能拆分紅不一樣的子apk(也就是不一樣的插件),每一個子apk能夠獨立編譯打包,最終發佈上線的是集成後的apk。在apk使用時,每一個插件是動態加載的,插件也能夠進行熱修復和熱更新。
與組件化的主要區別:
組件化與插件化詳細對比
技術 | 單位 | 實現內容 | 靈活性 | 特性 | 靜動態 |
---|---|---|---|---|---|
組件化 |
module | 是解耦與加快編譯,隔離不須要關注的部分 | 按加載時機切換,是做爲lib,仍是apk | 組:組原本就是一個系統,每一個組件不是真正意義上的獨立模塊 | 靜態加載 |
插件化 | apk | 是解耦與加快編譯,同時實現熱插拔也就是熱更新 | 加載的是apk,能夠動態下載,動態更新,比組件化更靈活 | 插:是獨立的apk,每一個插件能夠做爲一個徹底獨立的apk運行,也能夠和其餘插件集成爲大apk | 動態加載,只用真正使用某個插件時,才加載該插件 |
Atlas
DroidPlugin
-
http://blog.csdn.net/wangbaochu/article/details/50518536
https://juejin.im/entry/57b2833a0a2b58006334e73a
https://juejin.im/entry/57d746dbd20309006a0b168e
https://juejin.im/entry/583bb48c61ff4b006cbf091b
https://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651113434&idx=1&sn=99a473c6fad2f7b366b2cba2afb96f7a&chksm=844c6e07b33be7112222c0d78be23979912f12d6c99ad2c7bfac766e67e4be4619709f170b09&mpshare=1&scene=1&srcid=0628gRj4w4sW8cxYupnu3TXk&pass_ticket=1bsPf4vfDjr2a7E45NfjrXCTMdvwi6/DgVwYPA7Byx5Zi5zQCgScguDpY/3gXkdO#rd
https://juejin.im/entry/58ad2730570c35006bcde6fb
首先須要明確的一點,插件化和熱修復不是同一個概念,雖然站在技術實現的角度來講,他們都是從系統加載器的角度出發,不管是採用hook方式,亦或是代理方式或者是其餘底層實現,都是經過「欺騙」Android 系統的方式來讓宿主正常的加載和運行插件(補丁)中的內容;可是兩者的出發點是不一樣的。插件化顧名思義,更可能是想把須要實現的模塊或功能當作一個獨立的提取出來,減小宿主的規模,當須要使用到相應的功能時再去加載相應的模塊。熱修復則每每是從修復bug的角度出發,強調的是在不須要二次安裝應用的前提下修復已知的bug。
類加載原理:
提及熱修復就不得不提類的加載機制,和常規的JVM相似,在Android中類的加載也是經過ClassLoader來完成,具體來講就是PathClassLoader 和 DexClassLoader 這兩個Android專用的類加載器,這兩個類的區別以下:
(圖片轉自網路)
相信大部分APP軟件的開發流程都是上面那樣。
版本上線以後,用戶或者市場反饋說有bug,而後立馬加班緊急修復,接着又發佈版本上線;而後又反饋回來講有新的bug,好嘛,接着修復而後發新版本上線;這樣一直修復bug發版本上線……
雖然軟件的bug避免不了,可是老是發佈新版本,讓用戶去下載更新使用,會讓不少用戶失去耐心和信息。嚴重影響用戶使用和體驗,代價是很大的!
Andfix
Hotfix
Tinker
QFix
Amigo
Robust
Sophix