個人博客地址 http://dandanlove.com/
前言
Android隨著系統(tǒng)的升級和app自有業(yè)務的增漲,新技術的不斷涌現(xiàn)。在這個好多技術還沒學習就已過期的時代。雖然不能去吃透那些前輩的作品,但是技術的史上我們作為碼農應該要了解,畢竟曾經出現(xiàn)的一個個技術名詞都代表“成長”。
----------------2021:10:14----------------
從上面的概述來看其實組件化跟模塊化沒有明顯的區(qū)別;一個登錄功能可以是一個模塊也可以是一個組件,一個日期選擇控件可以是一個模塊,也可以是一個組件,因為不管是模塊化還是組件化,它們都有一個共同的目標:將一個大的軟件系統(tǒng)細化成一個個模塊或者組件,都是為了重用和解耦。因此沒有一個明確的界線去區(qū)分它們。
網上很多文章對于組件和模塊的定義也是不盡相同的,一些人認為組件的粒度更細,它只是具備單一功能與業(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è)務無關,比如自定義控件、網絡請求庫、圖片加載庫等
----------------------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ā)維護成本;
- 每個組件都有自己獨立的版本,可以獨立的編譯,測試,打包和部署;
- 產品組件化后能夠實現(xià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)建的時候就會將補丁包文件加載到內存中并且替換對應的方法。