從零開始Android組件化改造(一) - 總體架構(gòu)

我的Github:https://github.com/BzCoder
最近準(zhǔn)備對Android項目的組件化改造寫一個系列心得沈跨,同時也對本輪學(xué)習(xí)的一次記錄由捎,會盡量寫的細(xì)一點,也是對知識的鞏固饿凛。
尤其要感謝@JessYan大神的ArmsComponet框架狞玛。
在本章中不談具體代碼邻奠,只談總體思路。歡迎各位在簡書下留言为居。

前言

去年熟悉了一整個SpringBoot碌宴,SpringCloud生態(tài),說實在很多后臺開發(fā)的思想是值得Android開發(fā)借鑒的(AOP蒙畴,IOC贰镣,編程的思想),受益匪淺膳凝。
這段時間公司里提出要將原有APP進(jìn)行組件化改造碑隆,以適應(yīng)之后更加豐富的需求以及代碼的解耦和多app的模塊復(fù)用。其實后臺模塊化開發(fā)已經(jīng)實現(xiàn)了很久蹬音,加上后臺開發(fā)有注冊中心的概念上煤,模塊管理十分靈活。當(dāng)然Android開發(fā)依舊可以借鑒后臺的開發(fā)模式著淆。我作為公司的老安卓劫狠,自然挑起了這個擔(dān)子,加上外包團(tuán)隊永部,一共組成了一個六人的安卓小團(tuán)隊独泞,對APP進(jìn)行組件化重構(gòu)。

本次組件化改造的終極目標(biāo):

  • 分離業(yè)務(wù)模塊苔埋,減少不必要的耦合懦砂,方便模塊的拆卸增減。
  • 獨(dú)立模塊單獨(dú)編譯组橄,無需每次編譯都全量打包荞膘,方便開發(fā)人員的開發(fā)。
  • 通過后臺配置一鍵生成APP(Git + Jenkins持續(xù)集成)玉工。
  • 實現(xiàn)同一個項目多應(yīng)用差異化打包羽资。

組件化開發(fā)相比原來的All in One模式,要考慮多方面的問題瓮栗,我主要羅列了以下幾點:

組件化主要需要解決的問題:

需要學(xué)習(xí)的第三方框架原理和工具

  • okhttp
  • rxjava2 + retrofit
  • Arouter
  • Dagger2
  • eventbus
  • leakcanary
  • autoSize
  • butterKnife

在接下來的章節(jié)中我們來仔細(xì)分析如何解決這些問題削罩。

項目架構(gòu)

使用的基礎(chǔ)架構(gòu)是基于@JessYan大神的ArmsComponet框架,并在此框架上做出相應(yīng)的優(yōu)化與改造费奸。

總體分層

總體分層基本采用@JessYan的分層方式,大體分為三層进陡。外加CommonService層來統(tǒng)一管理模塊之間調(diào)用愿阐。

宿主層

APP殼文件,最后打包層趾疚,通過統(tǒng)一配置文件(gradle.properties)缨历,決定最后app的包名以蕴,定義主界面樣式風(fēng)格,模塊的最終引入辛孵。

業(yè)務(wù)層

各個實際業(yè)務(wù)丛肮,業(yè)務(wù)層根據(jù)實際邏輯結(jié)構(gòu)繼續(xù)分層,我根據(jù)現(xiàn)有的項目是分了三層魄缚。當(dāng)然我們可以根據(jù)業(yè)務(wù)量級繼續(xù)分層宝与。這個分層主要是為了方便調(diào)試(Application與Library的切換)。在具體實際開發(fā)中冶匹,有時候需要對模塊進(jìn)行單獨(dú)調(diào)整习劫,實際開發(fā)中,甚至有些模塊是互相循環(huán)調(diào)用的嚼隘,我們還需要整體調(diào)試诽里。以下僅供參考,實際情況以開發(fā)為準(zhǔn)飞蛹。

  • 第一層:被APP層直接調(diào)用谤狡,較大的模塊,功能較為完整的模塊卧檐。
  • 第二層:一般為第一層業(yè)務(wù)模塊跳轉(zhuǎn)的頁面豌汇。
  • 第三層:底層頁面,一般為詳情頁泄隔,不會有下一級跳轉(zhuǎn)拒贱。
    每個業(yè)務(wù)層一般情況下都使用基礎(chǔ)層提供的基礎(chǔ)組件,但是也允許有相應(yīng)的自己的網(wǎng)絡(luò)請求配置佛嬉,圖片請求框架逻澳,甚至基礎(chǔ)控件框架,以做到模塊的解耦以及從別的APP中遷移過來模塊的加入暖呕。

基礎(chǔ)層

包含了各種基礎(chǔ)服務(wù)斜做,除了簡單的工具類,通用自定義組件湾揽,一般情況都建議以遠(yuǎn)程調(diào)用模式引入瓤逼,基礎(chǔ)層(CommonSDK)不要引入過多的東西,有以下幾個原因:

  • 加快工程的編譯速度 库物。
  • 減少基礎(chǔ)層的代碼量 霸旗。
  • 自定義組件專人維護(hù),責(zé)任到人戚揭,因為總是有一些人覺得自己能優(yōu)化別人寫的庫诱告,于是亂改。民晒。精居。同時有利于開源锄禽,讓更多的人使用才能優(yōu)化組件。
  • 有利于在其他工程中快速復(fù)用以及在本地Lib的刪減升級靴姿。

Service層

這個是很關(guān)鍵的一個層沃但,相當(dāng)于Bridge角色。它定義各個模塊接口佛吓,以實現(xiàn)模塊之間的互相調(diào)用宵晚,每個模塊對外暴露的方法,都必須注冊在Service中辈毯。我們盡量保持模塊對外接的輸入?yún)?shù)的最小化坝疼。這樣某一個模塊從V1升級至V2,其他模塊保持對外部接口調(diào)用不變谆沃,我們就可以迅速的對模塊進(jìn)行V1到V2的升級钝凶。做到最大程度的解耦。

資源層

包含了APP的個性資源文件唁影,包括顏色耕陷,字體,圖片資源文件等非共用資源据沈∮茨可以通過CommonRes來引用,以方便不同APP的Res的文件切換锌介。

項目配置

我們將大多數(shù)的項目配置相關(guān)的屬性都轉(zhuǎn)移到gradle.properties文件當(dāng)中嗜诀,以完成對工程的統(tǒng)一管理。其中包含各種廠商Key孔祸,各個模式都是引入的標(biāo)志位隆敢,應(yīng)用的包名,應(yīng)用的版本號崔慧。

那么有關(guān)于Android組件化改造的總體架構(gòu)分塊就先介紹到這里拂蝎,歡迎大家討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惶室,一起剝皮案震驚了整個濱河市温自,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌皇钞,老刑警劉巖悼泌,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鹅士,居然都是意外死亡券躁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門掉盅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來也拜,“玉大人,你說我怎么就攤上這事趾痘÷” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵永票,是天一觀的道長卵贱。 經(jīng)常有香客問我,道長侣集,這世上最難降的妖魔是什么键俱? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮世分,結(jié)果婚禮上编振,老公的妹妹穿的比我還像新娘。我一直安慰自己臭埋,他們只是感情好踪央,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓢阴,像睡著了一般畅蹂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荣恐,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天液斜,我揣著相機(jī)與錄音,去河邊找鬼叠穆。 笑死少漆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痹束。 我是一名探鬼主播检疫,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祷嘶!你這毒婦竟也來了屎媳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤论巍,失蹤者是張志新(化名)和其女友劉穎烛谊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘉汰,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丹禀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片双泪。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡持搜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出焙矛,到底是詐尸還是另有隱情葫盼,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布村斟,位于F島的核電站贫导,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蟆盹。R本人自食惡果不足惜孩灯,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逾滥。 院中可真熱鬧峰档,春花似錦、人聲如沸匣距。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毅待。三九已至尚卫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尸红,已是汗流浹背吱涉。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留外里,地道東北人怎爵。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像盅蝗,于是被迫代替她去往敵國和親鳖链。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

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