組件化1.build.gradle的配置

組件化原理

組件化是在模塊化的基礎(chǔ)上,通過修改build.gradle的參數(shù),使各個模塊可以在library和application之間轉(zhuǎn)換.
每個模塊可以單獨(dú)運(yùn)行,開發(fā)好后組裝在一起形成完整的apk

路由框架

使用組件化和模塊化開發(fā)時,由于各個組件之間不能相互依賴(你依賴我,我又反過來依賴你),各個模塊之間的通信成為了組件化的痛點(diǎn).
為了解決這個問題,引入了路由框架
路由框架的原理是,在需要通信的文件上添加注釋,編譯時通過AbstractProcessor拿到注釋和相關(guān)的文件,創(chuàng)建一個路由表,路由表記錄注釋(路由地址)和相應(yīng)的文件信息.然后通過Apt動態(tài)生成一個類,封裝路由表中的信息,其他的模塊使用路由地址在這個Apt封裝類中拿到路由信息,實(shí)現(xiàn)模塊間的通信.

組件化的項目架構(gòu)

image.png

分為app模塊,base模塊,模塊1,模塊2,路由框架模塊
app模塊是一個殼,base模塊封裝通用的基礎(chǔ)功能,比如工具類,網(wǎng)絡(luò)請求等等
模塊一和模塊2是模擬具體的業(yè)務(wù)模塊
路由模塊負(fù)責(zé)模塊間的通信

build.gradle的配置

模塊間通過build.gradle的配置來實(shí)現(xiàn)library和application之間的轉(zhuǎn)化


image.png

首先創(chuàng)建一個config.gradle來配置一些全局的通用屬性
ext{}代表全局的屬性
isModule用來控制模塊化和組件化之間的轉(zhuǎn)換
android=[]用來配置每個模塊的sdk版本和version版本
appId用來記錄每個模塊的包名,在轉(zhuǎn)換為組件化之后,需要配置appId,不然無法當(dāng)做一個application運(yùn)行
supportLibrary表示兼容包的版本
dependencies用來表示v7包

image.png

然后再項目的build.gradle中通過apply from: "config.gradle"引入config.gradle,這樣相當(dāng)于將config.gradle中配置的屬性黏貼到Project的build.gradle中,在項目的各個模塊中就可以使用config.gradle中的屬性了

然后再來看每個模塊的build.gradle配置


image.png
image.png

首先看app模塊,app模塊是項目的入口,也是項目的殼,用來組裝各個業(yè)務(wù)模塊
apply plugin:'com.android.application'表示app模塊是一個application模塊
def cfg = rootProject.ext.android表示將config.gradle中配置的android = [] 中的屬性,賦值給cfg
appId同理
然后在android{}中使用config.gradle中android=[] 和 appId=[]中的類容
在dependencies{}中,通過isModule來決定是否添加功能模塊的依賴,如果功能模塊處于application模式下,無法添加為依賴的

image.png

image.png

再來看base模塊,base模塊是通用功能模塊
apply plugin:'com.android.library'表示base模塊是一個library模塊,可以供其他模塊依賴
同時,library模塊也通過api project(':router-core')依賴了router-core模塊

再來看看功能模塊,以module2為例


image.png

首先通過isModule來配置module2為library還是application


image.png

buildConfigField("boolean","isModule",String.valueOf(isModule))是將isModule配置進(jìn)module2的BuildConfig文件中
image.png

applicationId appId['module2']如果是組件化,添加appId

sourceSets{
  main{
      if(!isModule){
          manifest.srcFile'src/main/module/AndroidManifest.xml'
          java.srcDirs 'src/main/module/java',src/main/java"
        }else{
          manifest.srcFile'src/main/AndroidManifest.xml'
        }    
    }
}

在組件化下,使用src/main/module/AndroidManifest.xml下的清單文件,這個清單文件里面配置了啟動的Activity
同理 java.srcDirs 'src/main/module/java',src/main/java"表示,在組件化下,編譯時會編譯src/mian/module/java下的java文件


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呕诉,更是在濱河造成了極大的恐慌,老刑警劉巖台谍,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吁断,居然都是意外死亡趁蕊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門仔役,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掷伙,“玉大人,你說我怎么就攤上這事又兵∪喂瘢” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宙地。 經(jīng)常有香客問我升熊,道長,這世上最難降的妖魔是什么绸栅? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮页屠,結(jié)果婚禮上粹胯,老公的妹妹穿的比我還像新娘。我一直安慰自己辰企,他們只是感情好风纠,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著牢贸,像睡著了一般竹观。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潜索,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天臭增,我揣著相機(jī)與錄音,去河邊找鬼竹习。 笑死誊抛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的整陌。 我是一名探鬼主播拗窃,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泌辫!你這毒婦竟也來了随夸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤震放,失蹤者是張志新(化名)和其女友劉穎宾毒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澜搅,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伍俘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了勉躺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片癌瘾。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖饵溅,靈堂內(nèi)的尸體忽然破棺而出妨退,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布咬荷,位于F島的核電站冠句,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幸乒。R本人自食惡果不足惜懦底,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罕扎。 院中可真熱鬧聚唐,春花似錦、人聲如沸腔召。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臀蛛。三九已至亲桦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浊仆,已是汗流浹背客峭。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抡柿,地道東北人桃笙。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像沙绝,于是被迫代替她去往敵國和親搏明。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345