Android 開發(fā)之 Gradle那些事兒(一)

一.用Gradle編譯的項目結(jié)構(gòu)

  1. 根目錄會有一個settings.gradle塞俱、一個項目的build.gradle。
  2. 每個module下會有一個本模塊的build.gradle吏垮。


    這里寫圖片描述

settings.gradle

settings.gradle 文件定義了哪些module 應(yīng)該被加入到編譯過程障涯,通過include語句包含需要加入編譯的模塊。 例子如下:

include ':app', ':module2', ':module3', ':module3', ':module4', ':module5'

settings.gradle中可以定義方法膳汪;settings.gradle的代碼在編譯初始階段就會被執(zhí)行唯蝶。例子如下:

def String getTimeWhenStartBuild() {
    return new Date().format("yyyy/MM/dd HH:mm:ss")
}

println("開始構(gòu)建的時間是:" + getTimeWhenStartBuild())

include ':app', ':module2', ':module3', ':module3', ':module4', ':module5', ':mylibrary'
這里寫圖片描述

項目的build.gradle

項目的build.gradle文件用來配置整個項目公共的一些東西,如倉庫配置遗嗽、編譯工具類路徑配置粘我、依賴項配置、第三方插件配置等媳谁。一個包含了公共配置涂滴、額外task(含自定義task)和額外屬性的例子如下:

/**
 * buildscript 中的聲明是 "gradle腳本自身需要使用的資源"
 * 包括依賴項、第三方插件晴音、倉庫地址等
 **/
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'

    }
}
/**
 * allprojects 在多模塊項目中柔纵,用于聲明 "各模塊公共使用的倉庫地址"
 * 一般各模塊在自身模塊內(nèi)的build.gradle內(nèi)配置自身依賴的插件和庫,模塊內(nèi)的配置會替換掉此處的公共配置
 **/
allprojects {
    repositories {
        jcenter()
        mavenCentral()
        maven { url "https://jitpack.io" }
        maven {url 'https://dl.bintray.com/calvinning/maven'}
    }
}
/**
 * task的type由Gradle本身提供有Copy锤躁、Delete搁料、Sync等
 * Copy與Sync區(qū)別在于目標(biāo)目錄每次執(zhí)行任務(wù)時是否保留原文件:Copy保留,Sync不保留
 */
task clean(type : Delete) {
    delete rootProject.buildDir
}
//輸出本項目的一些信息:versionCode versionName minSdkVersion
task printProjInfo(type : getProjInfoTask)
//自定義的task需要繼承自DefaultTask
class getProjInfoTask extends DefaultTask
{
    // @TaskAction 表示該Task要執(zhí)行的動作,即在調(diào)用該Task時,printInfo()方法將被執(zhí)行
    @TaskAction
    def printInfo()
    {
        if (project.hasProperty("minSdkVersion")) {
            println "最低支持到APILevel:"+project.properties.get("minSdkVersion")
        }
        if (project.hasProperty("versionCode")) {
            println "比較版本號versionCode:"+project.properties.get("versionCode")
        }
        if (project.hasProperty("versionName")) {
            println "顯示版本號versionName:"+project.properties.get("versionName")
        }

    }
}
/**
 * ext前綴 標(biāo)識一組外置屬性參數(shù) 郭计,可供其他.gradle存取
 */

ext {
    compileSdkVersion = 25
    buildToolsVersion = "25.0.3"
    minSdkVersion = 14
    targetSdkVersion = 22

    //發(fā)布(release)時修改此處的版本號
    versionCode = 100
    versionName = "1.0.0"
}
這里寫圖片描述

比較常用的一些命令:
gradlew task1 task2 […] 執(zhí)行tasks

延伸:有四個基本的 task, Android 繼承他們分別進行了自己的實現(xiàn): assemble:對所有的 buildType 生成 apk
包霸琴。 clean:移除所有的編譯輸出文件,比如apk昭伸。 check:執(zhí)行l(wèi)int檢測編譯梧乘。
build:同時執(zhí)行assemble和check命令 gradlew build 執(zhí)行構(gòu)建 gradlew
assembleRelease 打出Release包集合 gradlew assembleDebug 打出Debug包集合 gradlew
clean 執(zhí)行清理
好了,關(guān)于根目錄的Gradle就先寫到這里庐杨,現(xiàn)在是北京時間 2017年10月17日00:56:48选调。寫文章總是沒有擼代碼來的精神,下次再寫吧灵份,擼代碼去也……

謝謝大家仁堪。完結(jié)撒花


這里寫圖片描述
這里寫圖片描述
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市填渠,隨后出現(xiàn)的幾起案子弦聂,更是在濱河造成了極大的恐慌,老刑警劉巖氛什,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莺葫,死亡現(xiàn)場離奇詭異,居然都是意外死亡屉更,警方通過查閱死者的電腦和手機徙融,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑰谜,“玉大人欺冀,你說我怎么就攤上這事∪裕” “怎么了隐轩?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長渤早。 經(jīng)常有香客問我职车,道長,這世上最難降的妖魔是什么鹊杖? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任悴灵,我火速辦了婚禮,結(jié)果婚禮上骂蓖,老公的妹妹穿的比我還像新娘积瞒。我一直安慰自己,他們只是感情好登下,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布茫孔。 她就那樣靜靜地躺著叮喳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缰贝。 梳的紋絲不亂的頭發(fā)上馍悟,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音剩晴,去河邊找鬼锣咒。 笑死,一個胖子當(dāng)著我的面吹牛李破,可吹牛的內(nèi)容都是我干的宠哄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嗤攻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了诽俯?” 一聲冷哼從身側(cè)響起妇菱,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暴区,沒想到半個月后闯团,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡仙粱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年房交,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伐割。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡候味,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出隔心,到底是詐尸還是另有隱情白群,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布硬霍,位于F島的核電站帜慢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唯卖。R本人自食惡果不足惜粱玲,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拜轨。 院中可真熱鬧抽减,春花似錦、人聲如沸撩轰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至偎箫,卻和暖如春木柬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淹办。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工眉枕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怜森。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓速挑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親副硅。 傳聞我的和親對象是個殘疾皇子姥宝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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