Gradle項(xiàng)目結(jié)構(gòu)

Android群英傳讀書筆記
http://www.reibang.com/p/9df3c3b6067a 參考文章

一、Gradle認(rèn)識(shí)

Gradle本身是基于Groovy腳本語音構(gòu)建的。

二、使用gradle管理android工程

5個(gè)重要的部分

1.每個(gè)module有build.gradle
2.根目錄的build.gradle
3.gradle.properties
4.local.properties
5.settings.gradle

使用終端命令查看項(xiàng)目的結(jié)構(gòu)

tree
Paste_Image.png

根目錄的build.gradle

buildscript中的
   repositories負(fù)責(zé)指定使用的開源代碼倉(cāng)庫(kù)
   dependencies指定了gradle插件的版本
allprojects中:
   開發(fā)者對(duì)自己的項(xiàng)目進(jìn)行一些配置

1.項(xiàng)目的的build.gradle

![Upload Paste_Image.png failed. Please try again.]
android部分:這是編譯文件中最大的代碼塊或舞,關(guān)于android 的所有特殊配置都在這里,這就是由我們前面的聲明的 plugin 提供的蒙幻。
defaultConfig就是程序的默認(rèn)配置映凳,注意荣病,如果在AndroidMainfest.xml里面定義了與這里相同的屬性伏恐,會(huì)以這里的為主域滥。這里最有必要要說明的是applicationId的選項(xiàng):在我們?cè)?jīng)定義的AndroidManifest.xml中膘壶,那里定義的包名有兩個(gè)用途:一個(gè)是作為程序的唯一識(shí)別ID,防止在同一手機(jī)裝兩個(gè)一樣的程序绍在;另一個(gè)就是作為我們R資源類的包名掏婶。在以前我們修改這個(gè)ID會(huì)導(dǎo)致所有用引用R資源類的地方都要修改崔列。但是現(xiàn)在我們?nèi)绻薷腶pplicationId只會(huì)修改當(dāng)前程序的ID,而不會(huì)去修改源碼中資源文件的引用让禀。(引自參考文章)
buildTypes:定義了編譯類型摧莽,針對(duì)每個(gè)類型我們可以有不同的編譯配置庙洼,不同的編譯配置對(duì)應(yīng)的有不同的編譯命令。默認(rèn)的有debug镊辕、release 的類型油够。
dependencies:是屬于gradle 的依賴配置。它定義了當(dāng)前項(xiàng)目需要依賴的其他庫(kù)征懈。

2.Setting.gradle
這個(gè) setting 文件定義了哪些module 應(yīng)該被加入到編譯過程石咬,對(duì)于單個(gè)module 的項(xiàng)目可以不用需要這個(gè)文件

include ':app', ':smileapp', ':smileproject', ':orangeframework',':bilibili'

如果注掉了app,那么app module將不被編譯

3.Gradle Wrapper
為了解決向后兼容的問題受裹,gradle wrapper出現(xiàn)了碌补,它指定了gradle task是基于那種版本的gradle進(jìn)行編譯的,如果沒有會(huì)自動(dòng)去網(wǎng)上下載棉饶。當(dāng)然可以在setting中搜索gradle厦章,將gradle配置為使用本地的環(huán)境,因?yàn)槊總€(gè)androidstudio下載時(shí)照藻,同時(shí)會(huì)下載一個(gè)gradle環(huán)境袜啃。引入這個(gè)本地的即可。

Paste_Image.png

4.Repositories
Repositories 就是代碼倉(cāng)庫(kù)幸缕,我們平時(shí)的添加的一些 dependency 就是從這里下載的群发,Gradle 支持三種類型的倉(cāng)庫(kù):Maven,Ivy和一些靜態(tài)文件或者文件夾

三、sourceSet指定目錄結(jié)構(gòu)

androidstudio是可以指定項(xiàng)目結(jié)構(gòu)的发乔。當(dāng)我們從Eclipse遷移一些項(xiàng)目到androidstudio上時(shí)熟妓,完全不用擔(dān)心。甚至可以完成繼承eclipse的目錄樣式栏尚,以及自定義目錄起愈。通過sourceSet的引入,將文件指定為資源目錄。在android領(lǐng)域中使用sourceSets

sourceSets{
  main{
       java.srcDirs=['src']
       res.srcDirs=['res']
       assets.srcDirs=['assets']
       jni.srcDirs=['jni']
       manifest.srcFile 'AnddroidManifest.xml'
  }
}

保留原有eclipse配置

renderscript.srcDirs=['src']
aidl.srcDirs=['src']

四抬虽、全局信息的配置

在根目錄的build.gradle中加入ext標(biāo)簽

ext{
   compileSdkVersion=23
   minSdkVersion=“23.0.01”
   .....
}

在module的gradle中引入

android{
   compileSdkVersion rootProject.ext.compileSdkVersion.
}

五官觅、動(dòng)態(tài)配置參數(shù)

gradle的參數(shù)是可以動(dòng)態(tài)添加的,例如版本號(hào)的信息

defaultConfig{
  versionCode  getVersionCode()
}
def getVersionCode(){
 ......
}

六阐污、BuildType構(gòu)建不同類型apk

使用applicationIdSuffix參數(shù)為默認(rèn)的包名添加一個(gè)后綴休涤。以此來區(qū)分不同的構(gòu)建類型。例如我們?cè)瓉淼陌莄om.guo.test笛辟。如果打debug包通過aapt工具查看包名時(shí)功氨,包名和默認(rèn)的一樣,但是加上該參數(shù)后隘膘,會(huì)在默認(rèn)的包名尾端添加該字段疑故。因?yàn)樵贏ndroid系統(tǒng)中,通過包名來區(qū)分應(yīng)用的弯菊,包名相同就是同一個(gè)應(yīng)用纵势。例子中打出來的包名為:com.guo.test.guo。

buildTypes{
  guo{
     applicationIdSuffix ".guo"
  }
}

當(dāng)我們使用了默認(rèn)構(gòu)建類型時(shí)管钳,系統(tǒng)還為我們生成了相應(yīng)的構(gòu)建語法gradle assembleGuo钦铁。
繼承其他的構(gòu)建類型
同樣我們可以繼承任何類型的配置 initWith(type_name),這樣就可以具有debug的配置。

buildTypes{
debug{
  minifyEnabled false
}
 guo.initWith(debug)
  guo{
     applicationIdSuffix ".guo"
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末才漆,一起剝皮案震驚了整個(gè)濱河市牛曹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌醇滥,老刑警劉巖黎比,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸳玩,居然都是意外死亡阅虫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門不跟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颓帝,“玉大人,你說我怎么就攤上這事窝革」撼牵” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵虐译,是天一觀的道長(zhǎng)瘪板。 經(jīng)常有香客問我,道長(zhǎng)漆诽,這世上最難降的妖魔是什么侮攀? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任史侣,我火速辦了婚禮,結(jié)果婚禮上魏身,老公的妹妹穿的比我還像新娘。我一直安慰自己蚪腐,他們只是感情好箭昵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著回季,像睡著了一般家制。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泡一,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天颤殴,我揣著相機(jī)與錄音,去河邊找鬼鼻忠。 笑死涵但,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帖蔓。 我是一名探鬼主播矮瘟,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼塑娇!你這毒婦竟也來了澈侠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤埋酬,失蹤者是張志新(化名)和其女友劉穎哨啃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體写妥,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拳球,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了耳标。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片醇坝。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖次坡,靈堂內(nèi)的尸體忽然破棺而出呼猪,到底是詐尸還是另有隱情,我是刑警寧澤砸琅,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布宋距,位于F島的核電站,受9級(jí)特大地震影響症脂,放射性物質(zhì)發(fā)生泄漏谚赎。R本人自食惡果不足惜淫僻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壶唤。 院中可真熱鬧雳灵,春花似錦、人聲如沸闸盔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迎吵。三九已至躲撰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間击费,已是汗流浹背拢蛋。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔫巩,地道東北人谆棱。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像圆仔,于是被迫代替她去往敵國(guó)和親础锐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

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