個人博客地址 http://dandanlove.com/
前言
Android隨著系統(tǒng)的升級和app自有業(yè)務的增漲姑裂,新技術的不斷涌現(xiàn)馋袜。在這個好多技術還沒學習就已過期的時代。雖然不能去吃透那些前輩的作品炭分,但是技術的史上我們作為碼農(nóng)應該要了解桃焕,畢竟曾經(jīng)出現(xiàn)的一個個技術名詞都代表“成長”。
----------------2021:10:14----------------
從上面的概述來看其實組件化跟模塊化沒有明顯的區(qū)別捧毛;一個登錄功能可以是一個模塊也可以是一個組件观堂,一個日期選擇控件可以是一個模塊,也可以是一個組件呀忧,因為不管是模塊化還是組件化师痕,它們都有一個共同的目標:將一個大的軟件系統(tǒng)細化成一個個模塊或者組件,都是為了重用和解耦而账。因此沒有一個明確的界線去區(qū)分它們胰坟。
網(wǎng)上很多文章對于組件和模塊的定義也是不盡相同的,一些人認為組件的粒度更細泞辐,它只是具備單一功能與業(yè)務無關的組件笔横,比如一個日歷選擇控件就認為是一個組件。而模塊他們認為就是業(yè)務模塊咐吼,顧名思義吹缔,就是按業(yè)務劃分而成的模塊。而另一部分人則相反锯茄。
在維基百科對模塊化的解釋中有這么一句:
A component is a similar concept, but typically refers to a higher level; a component is a piece of a whole system, while a module is a piece of an individual program
也就是認為組件粒度較模塊要更大厢塘,所以本文對組件和模塊做出以下定義:
組件:側重于業(yè)務,可編譯成單獨的app肌幽,一般只負責單一業(yè)務晚碾,具備自身的生命周期(通常包含Android四大組件的一個或多個,所以稱之為組件也更加貼切)
模塊:側重于功能喂急,與業(yè)務無關格嘁,比如自定義控件、網(wǎng)絡請求庫廊移、圖片加載庫等
----------------------end--------------------
在談模塊化之前我們先看看說組件化糕簿,現(xiàn)在大部分app隨著業(yè)務的增加都會將一個app分成多個模塊涣易,每個模塊都是一個組件(Module)。
正常一個App中可以有多個module冶伞,但是一般只會有一個module是設置為application的,其他均設置為library步氏,組件化開發(fā)就是要每個module都可以運行起來响禽,因此在開發(fā)期間(Debug版本)每個module均設置為application,發(fā)布時(Release版本)設置為libs再進行合并荚醒。
組件可以分為兩大類芋类,一類是application組件,一類是libs組件界阁,application組件是一個可運行的app侯繁。libs組件可以作為application的依賴,但是自身不可作為程序運行的存在泡躯。
模塊化粒度更小,更側重于業(yè)務的解耦,而組件化粒度稍大于模塊,更側重于組件的重用贮竟。
組件化:
- 避免重復造輪子,節(jié)省開發(fā)維護成本较剃;
- 每個組件都有自己獨立的版本,可以獨立的編譯,測試,打包和部署咕别;
- 產(chǎn)品組件化后能夠實現(xiàn)完整意義上的按需求進行產(chǎn)品配置和銷售,用戶可以選擇使用那些組件,組件之間可以靈活的組建;
- 如果對外提供的接口沒有發(fā)生任何變化,升級其他組件完全不需要再進行測試.
插件化
有了組件化為什么還要有插件化写穴,如果我們向動態(tài)的更新組件那么就需要插件化技術惰拱。插件化實際也是將app分為多個部分,宿主和插件能分開編輯啊送、并行開發(fā)偿短,這個和組件化相同。只不過插件化考慮了插件的按需下載以及動態(tài)升級馋没。
APP熱修復的概念:
APP修復是針對修復app中的bug場景來定義的昔逗。當我們已上線的app出現(xiàn)bug的時候,我們想在用戶不知情的情況下修復這個bug披泪,那么就會用到熱修復纤子。
APP熱修復的實現(xiàn)原理:
- 首先,生成新版本的apk與舊版本的apk的差異補丁包文件款票;
- 其次控硼,使用熱修復框架的Api在Application中去嘗試加載指定路徑的補丁差異包;
- 最后艾少,只需要將補丁差異包寶貝到對應路徑卡乾,代開有bug的App,在Applcation創(chuàng)建的時候就會將補丁包文件加載到內(nèi)存中并且替換對應的方法。