淺談Android組件化-創(chuàng)新互聯(lián)

一個(gè)關(guān)于組件化的念頭

項(xiàng)目經(jīng)歷了歲月的洗禮,經(jīng)過(guò)公司業(yè)務(wù)上的變化,開(kāi)發(fā)人員的來(lái)來(lái)往往,代碼越來(lái)越臃腫和復(fù)雜難懂,這時(shí)候就必須進(jìn)行拆分,否則就是一場(chǎng)災(zāi)難。就像我們公司的老項(xiàng)目一樣,耦合度極高,已經(jīng)停掉的業(yè)務(wù),現(xiàn)在還在項(xiàng)目里面留存著,完全不敢刪。新功能上線,因?yàn)橐貧w測(cè)試,測(cè)試時(shí)間有時(shí)候比開(kāi)發(fā)時(shí)間還長(zhǎng)。

創(chuàng)新互聯(lián)公司:于2013年創(chuàng)立為各行業(yè)開(kāi)拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為數(shù)千家公司企業(yè)提供了專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站推廣服務(wù), 按需網(wǎng)站設(shè)計(jì)由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶(hù)的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺(jué)效果,策劃師分析客戶(hù)的同行競(jìng)爭(zhēng)對(duì)手,根據(jù)客戶(hù)的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶(hù)同行業(yè)具有領(lǐng)先地位的。

組件化這個(gè)詞,我們應(yīng)該在各個(gè)地方,通過(guò)各種渠道,看到過(guò)無(wú)數(shù)次,而且一般會(huì)給配上下面這張圖,小機(jī)器人,綠油油的色彩,非常的鮮艷奪目有調(diào)性。

淺談Android組件化

組件化和插件化同屬于模塊化編程,只是兩種不同的展現(xiàn)模式。兩者的區(qū)別,只有一個(gè):插件化支持動(dòng)態(tài)增加和修改線上的模塊,組件化只能對(duì)現(xiàn)有模塊進(jìn)行增加和刪除。

項(xiàng)目線上功能動(dòng)態(tài)很頻繁的電商類(lèi)APP,適合使用插件化。變動(dòng)需求不強(qiáng)烈的工具類(lèi)APP,適合采用組件化。我們公司對(duì)靈活性要求不高,因此采用組件化方案。

組件化的幾個(gè)要點(diǎn)

組件化的要點(diǎn)不算少,下面準(zhǔn)備就我認(rèn)為主要的部分,用提問(wèn)和解答的方式,梳理大概的思路。

01.如何將一個(gè)龐大的工程拆分成有機(jī)的整體?

我認(rèn)為應(yīng)該分三個(gè)部分,主項(xiàng)目,基礎(chǔ)公共庫(kù)和業(yè)務(wù)組件。先抽出基礎(chǔ)公共庫(kù),供其他組件調(diào)用,剩余部分按照業(yè)務(wù)邏輯去分組件,利于后期業(yè)務(wù)的迭代開(kāi)發(fā),主項(xiàng)目負(fù)責(zé)裝載組件。

02.組件可以單獨(dú)運(yùn)行嗎?如何做到?

分離開(kāi)的每個(gè)組件,都應(yīng)支持獨(dú)立運(yùn)行,這樣我們才能單獨(dú)在某個(gè)模塊開(kāi)發(fā)和測(cè)試。可以通過(guò) apply plugin: 'com.android.application' 和 apply plugin: 'com.android.library' 去實(shí)現(xiàn)兩個(gè)身份的轉(zhuǎn)換。

這里不要被圖給誤解到,組件化中的胳膊腿離開(kāi)了身體,其實(shí)還是能獨(dú)立存活的個(gè)體。

03.如何做到組件與組件之間的獨(dú)立?

組件與組件之間相互獨(dú)立,才是降低耦合,主要表現(xiàn)在資源隔離和代碼隔離。代碼隔離可通過(guò)gradle3.0 之后 runtimeOnly 依賴(lài)語(yǔ)法實(shí)現(xiàn)編譯期隔離 。資源隔離,目前官方?jīng)]有現(xiàn)成的隔離方案,暫時(shí)可以先使用 resourcePrefix 屬性,人為維護(hù)。

04.組件之間互相獨(dú)立,數(shù)據(jù)如何傳遞?

考慮路由方案,目前已經(jīng)有很成熟的路由庫(kù) ARouter。

除以上問(wèn)題,還有組件的集成調(diào)試,組件生命周期等問(wèn)題,我認(rèn)為前期可以先不考慮,留待后期優(yōu)化。

組件化前 VS 組件化后

組件化改造的過(guò)程是非常痛苦的,但是完成后的開(kāi)發(fā)體驗(yàn)真的超超超超幸福!因?yàn)闃I(yè)務(wù)模塊邏輯分離,代碼耦合度降低,所以會(huì)帶來(lái)以下好處:

  • 編譯時(shí)間短

  • 開(kāi)發(fā)周期降低

  • 減少測(cè)試回歸

  • 快速定位問(wèn)題

  • 業(yè)務(wù)模塊遷移很方便

下面是我司項(xiàng)目組件化過(guò)程中的解耦的業(yè)務(wù)模塊:

<

淺談Android組件化

Android 綠色小機(jī)器人坐成兩排,十分乖巧可愛(ài)。

如何快速開(kāi)始組件化

第一步,少年,你需要自行去搜索獲取關(guān)于組件化的知識(shí),在腦海中有它有個(gè)清楚的認(rèn)識(shí)。

第二步,針對(duì)你的目標(biāo)項(xiàng)目,梳理整體的業(yè)務(wù)邏輯和代碼架構(gòu),做出可行的組件化方案。這一步非常重要,必須提前探好底,讓更多的問(wèn)題暴露在執(zhí)行前。不然,想象下,你一個(gè)模塊感覺(jué)都要挪過(guò)來(lái)80%了,發(fā)現(xiàn)業(yè)務(wù)邏輯上分離不開(kāi),或者技術(shù)上實(shí)現(xiàn)有障礙,這就很浪費(fèi)時(shí)間和精力了,還影響心情。

第三步,方案遞交給技術(shù) leader ,同意之后,申請(qǐng)排期開(kāi)發(fā)。

第四步,沐浴焚香,拜好代碼大神,就開(kāi)始吧。

友情提示,最好單獨(dú)拉一個(gè)新分支,因?yàn)檫@非常可能持久戰(zhàn),不要因此影響了項(xiàng)目的正常迭代。

我的組建化步驟

  • 抽出基礎(chǔ)工具類(lèi) BaseLib,網(wǎng)絡(luò)封裝庫(kù) NetWorkLib。

  • 抽出基礎(chǔ)資源庫(kù) BasicRes,管理公共資源,例如 BaseActivity/BaseApplication 等基類(lèi)們,對(duì)話框,res資源。

  • 分離業(yè)務(wù)邏輯,獨(dú)立為 Module。

  • 選定 Arouter 作為路由方案,連接各組件 Module。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

文章標(biāo)題:淺談Android組件化-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article26/djjejg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)頁(yè)設(shè)計(jì)公司網(wǎng)站策劃、網(wǎng)站制作、云服務(wù)器、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)