一、插件化、組件化下Android產(chǎn)品研發(fā)-總綱



插件化、組件化下Android產(chǎn)品研發(fā)-總綱
[插件化、組件化下Android產(chǎn)品研發(fā)-面向服務(wù)編程]
[插件化、組件化下Android產(chǎn)品研發(fā)-框架自由擴展服務(wù)管理]
[插件化、組件化下Android產(chǎn)品研發(fā)-Bundle應(yīng)用管理]
[插件化、組件化下Android產(chǎn)品研發(fā)-框架BroadcastReceiver管理]
[插件化、組件化下Android產(chǎn)品研發(fā)-框架管道任務(wù)管理]
[插件化、組件化下Android產(chǎn)品研發(fā)-業(yè)務(wù)模塊接口化]
[插件化、組件化下Android產(chǎn)品研發(fā)-頁面路由]
[插件化、組件化下Android產(chǎn)品研發(fā)-H5容器]
[插件化、組件化下Android產(chǎn)品研發(fā)-模塊通信]


引言

手機淘寶android客戶端容器化框架Atlas已正式開源,其以O(shè)SGI容器化思想實現(xiàn)了大規(guī)模團隊協(xié)作,并行開發(fā)、快速迭代和動態(tài)部署。框架原理圖如下:

Atlas容器框架

這里拋磚引玉,不具體講解Atlas的原理以及具體使用,詳情請參考Atlas官方文檔。本系列博客基于Atlas容器框架,進行Bundle應(yīng)用層面的擴展,實現(xiàn)插件化、組件化下Android產(chǎn)品研發(fā),使其充分發(fā)揮出Atlas帶給我們的能力,更好的為大規(guī)模團隊協(xié)同開發(fā)服務(wù)。框架圖如下:

插件化下Android產(chǎn)品研發(fā)架構(gòu)

基于本人的工作經(jīng)歷以及所獲得的Android項目開發(fā)經(jīng)驗,逐步形成了插件化、組件化下Android產(chǎn)品研發(fā)的架構(gòu)的思想模型,這里不對Android具體業(yè)務(wù)以及服務(wù)開發(fā)做深入研究,而是從技術(shù)架構(gòu)上實現(xiàn)app開發(fā)的協(xié)同化、實現(xiàn)上的并行開發(fā)。并且對于架構(gòu)圖中的各項服務(wù),原則上在脫離插件化框架的情況下也是可以被使用的。此架構(gòu)圖在雖在腦中良久,奈何實踐起來難,除了工作繁忙之外,也有自己的懶惰,在此先列出提綱,步步為營,在接下來的一段時間內(nèi)將其實踐出來,再次用博客的形式進行記錄,愿敦促自己,如果能對同行同學(xué)有所幫助更是一件美事!!

底部架構(gòu)層

行業(yè)上開源的插件化的方案已經(jīng)不少,從網(wǎng)上找了一些插件化方案對比的圖,如下:

插件化方案對比

本博客是基于手淘的Atlas插件化方案,在阿里系內(nèi)部多個大型App上進行了應(yīng)用,功能強大,具有動態(tài)部署、熱修復(fù)的能力。所以架構(gòu)的底層采用Atlas。

基礎(chǔ)框架層

該層提供了框架最重要的基礎(chǔ)框架服務(wù),依賴于此,形成業(yè)務(wù)服務(wù)化、接口化,并對外開放,并對框架級的Bundle、廣播、管道任務(wù)以及其他基礎(chǔ)服務(wù)提供輸出能力。

服務(wù)層

服務(wù)層的分層目的是分離出業(yè)務(wù)依賴的,但與業(yè)務(wù)相關(guān)的服務(wù)作為基礎(chǔ)服務(wù),對所有的業(yè)務(wù)Bundle提供接口服務(wù),統(tǒng)一各個Bundle應(yīng)用業(yè)務(wù)的網(wǎng)絡(luò)庫、圖片庫等基礎(chǔ)服務(wù)。

業(yè)務(wù)層

業(yè)務(wù)層即Bundle應(yīng)用業(yè)務(wù)層,該層具有業(yè)務(wù)需求變化快,需要快速迭代,其不用操心網(wǎng)絡(luò)庫、圖片庫等基礎(chǔ)服務(wù),直接引入服務(wù)層的服務(wù)即可,專注于具體業(yè)務(wù)的開發(fā),做到app整體安裝包盡可能小,而且做到性能佳。

主業(yè)務(wù)入口

提供app進入的唯一入口,其功能是當(dāng)app啟動時,做一些框架服務(wù)初始化的工作。

其他

因為服務(wù)以及業(yè)務(wù)都是已獨立bundle的形式存在,做到了完全解耦,所以完全可以獨立插件提供給第三方app,尤其適合于大廠的多個app,因不同app中有相同的業(yè)務(wù),沒采用這種插件化方案之前,需要該業(yè)務(wù)團隊抽調(diào)人手分別維護不同app中的歸屬自己的業(yè)務(wù)模塊,這在業(yè)務(wù)需求變更、升級等變化時會給業(yè)務(wù)團隊帶來巨大的麻煩,一個業(yè)務(wù),維護兩份以上代碼,修改bug以及迭代依賴簡直就是噩夢,但是采取此種方案后,只需維護一份代碼就可以了,一份bundle可以實現(xiàn)在不同app中一起升級,簡單高效。

結(jié)束

說了這么多,雖然豪情萬丈,猶如胸中熊兵百萬,良將千員,但目前為止還是紙上談兵階段。開了這個博客單元也是希望給自己一個督促,在完成自己日常工作的基礎(chǔ)上,盡可能的將心中的指點江山落到實處,真實做到揮斥方遒,提升自己,服務(wù)他人。謹(jǐn)記!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,813評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,508評論 7 249
  • 就像是積蓄已久的力量,爆發(fā)了。我心愛的手機神奇般地消失了。 事情發(fā)生在2017年9月13日。因為天上飄著蒙蒙細(xì)雨,...
    鴨蛋00閱讀 294評論 0 0
  • 有些路終究是要一個人走的。 明天計劃 9點起床 收拾行李 10-12出發(fā)去海星家吃飯 1-2去機場 2-6去武漢 ...
    你們的小可愛李瑩閱讀 239評論 0 1