APP 組件化開發(fā)之分層設(shè)計

前言
從本篇起將展開一個組件化開發(fā)的系列蛾找,如果你打算在實際項目中使用組件化開發(fā)或者有志于向架構(gòu)師方向發(fā)展盾剩,希望本系列能對你有所幫助捡鱼。歡迎加入學(xué)習(xí)小組QQ群: 193765960而昨,我會不定期的給大家推薦優(yōu)質(zhì)的文章和話題帖旨。

版權(quán)歸作者所有,如有轉(zhuǎn)發(fā)彬呻,請注明文章出處:https://xiaodanchen.github.io/archives/

相關(guān)文章:
APP組件化開發(fā)之分層設(shè)計2

組件化概述

為什么需要組件化:

隨著時間的推移又或者歷史的原因衣陶,APP端的業(yè)務(wù)必然而然的會變得異常復(fù)雜,代碼之間耦合嚴(yán)重闸氮,正所謂牽一發(fā)而動全身剪况。再如果出現(xiàn)復(fù)雜業(yè)務(wù)多團隊協(xié)作的要求,那么APP組件化架構(gòu)和開發(fā)勢在必行蒲跨。
歷史上译断,APP的架構(gòu)大致經(jīng)歷了幾個過程:MVC(簡單業(yè)務(wù)) --> MVP/MVVM(單一業(yè)務(wù)視圖、業(yè)務(wù)或悲、數(shù)據(jù)解耦) --> 組件化/插件化(復(fù)雜業(yè)務(wù)系統(tǒng)孙咪,業(yè)務(wù)解耦)/跨平臺架構(gòu)。

什么是組件化:

由于我本人對組件化的理解也不深巡语,我只能以一種形而下的語句來描述一下我所理解的組件化翎蹈。其實針對組件化和插件化,我們確實沒太有必要糾結(jié)于精準(zhǔn)的描述和定義男公,不論什么樣的架構(gòu)和技術(shù)荤堪,其目的無非都是為了適應(yīng)復(fù)雜業(yè)務(wù)系統(tǒng)的解耦和快速迭代的需要,更重要的是這種深度解耦理澎、快速迭代逞力、簡單維護的理念。

就Android項目糠爬,良好的組件化框架允許將不同的業(yè)務(wù)或者功能單獨抽離封裝成獨立的sdk或liberary工程提供給其他的代碼使用寇荧,常見的jar包、AAR或者第三個的源碼庫等都是如此执隧,均可以劃分為組件的范疇揩抡。由一個打包工程(宿主app或叫殼工程)來統(tǒng)一集成各個業(yè)務(wù)和底層庫并進行打包發(fā)布。

組件化相對于MVC/MVP/MVVM等時整體與部分的關(guān)系镀琉。組件化是對APP層面的一個橫向功能縱向業(yè)務(wù)的拆解峦嗤。MVC/MVP/MVVM等則是針對單獨業(yè)務(wù)中各個視圖界面的視圖、邏輯和數(shù)據(jù)的處理方案屋摔。

組件化方案

架構(gòu)設(shè)計

組件化app結(jié)構(gòu)示例

以上為大致的一個組件化app結(jié)構(gòu)烁设,common library提供最基礎(chǔ)的app開發(fā)環(huán)境,即host只依賴common library的話就可以開始開發(fā)钓试。common library大致提供如下的能力:


common library

如何快速構(gòu)建組件化框架

構(gòu)建一個合格的組件化開發(fā)系統(tǒng)要考慮以下因素:
1装黑,公共資源的復(fù)用:避免重復(fù)的打包和資源注入副瀑。
2,組件之間相互解耦
3恋谭,統(tǒng)一的業(yè)務(wù)組件開發(fā)框架
4糠睡,給自己留有退路,即如何快速的從組件化開發(fā)回退到單一工程的開發(fā)框架疚颊。

在此給大家推薦一下阿里手淘的組件化解決方案:atlas狈孔。
1,官方文檔:http://atlas.taobao.org/docs/principle-intro/Project_architectured.html
2材义,名詞解釋:

  • bundle:類似于OSGI框架規(guī)范中的bundle:組件
  • awb: 阿里手淘發(fā)明的一種文件格式; 類似于AAR均抽,區(qū)別在于每個awb都有一個對應(yīng)的packageID
  • host: 宿主app
  • tpatch: 增量更新的補丁包

3,構(gòu)建過程:

構(gòu)建過程

工程目錄示例:

工程目錄

總結(jié)
紙上得來終覺淺母截,絕知此事要躬行到忽。再好的理論也要實踐才有意義橄教,聽上去再牛逼的架構(gòu)也要適合自己才有價值清寇。希望此文能起到拋磚引玉的作用,給大家的下一步工作敲開一點點縫隙护蝶。

由于實際的因素华烟,文中無法對一些細(xì)節(jié)展開更詳細(xì)的描述,有興趣的同學(xué)可以加入學(xué)習(xí)小組QQ群: 193765960做進一步的討論持灰。
分享知識盔夜,傳遞價值,收獲快樂堤魁,與諸君共勉喂链。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妥泉,隨后出現(xiàn)的幾起案子椭微,更是在濱河造成了極大的恐慌,老刑警劉巖盲链,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝇率,死亡現(xiàn)場離奇詭異,居然都是意外死亡刽沾,警方通過查閱死者的電腦和手機本慕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侧漓,“玉大人锅尘,你說我怎么就攤上這事〔颊幔” “怎么了藤违?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵忙菠,是天一觀的道長。 經(jīng)常有香客問我纺弊,道長牛欢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任淆游,我火速辦了婚禮傍睹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘犹菱。我一直安慰自己拾稳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布腊脱。 她就那樣靜靜地躺著访得,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陕凹。 梳的紋絲不亂的頭發(fā)上悍抑,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音杜耙,去河邊找鬼搜骡。 笑死,一個胖子當(dāng)著我的面吹牛佑女,可吹牛的內(nèi)容都是我干的记靡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼团驱,長吁一口氣:“原來是場噩夢啊……” “哼摸吠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嚎花,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤寸痢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贩幻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轿腺,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年丛楚,在試婚紗的時候發(fā)現(xiàn)自己被綠了族壳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡趣些,死狀恐怖仿荆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤拢操,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布锦亦,位于F島的核電站,受9級特大地震影響令境,放射性物質(zhì)發(fā)生泄漏杠园。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一舔庶、第九天 我趴在偏房一處隱蔽的房頂上張望抛蚁。 院中可真熱鬧,春花似錦惕橙、人聲如沸瞧甩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肚逸。三九已至,卻和暖如春彬坏,著一層夾襖步出監(jiān)牢的瞬間朦促,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工苍鲜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留思灰,地道東北人玷犹。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓混滔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親歹颓。 傳聞我的和親對象是個殘疾皇子坯屿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

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