什么是Gradle
簡單的說,Gradle是一個構(gòu)建工具萄涯,它是用來幫助我們構(gòu)建app的副编,構(gòu)建包括編譯、打包等過程
Gradle使用的語言
Gradle構(gòu)建使用的是Groovy語言虹蓄,Groovy是一種基于JVM的動態(tài)語言,語法和Java很相似幸撕,Groovy完全兼容Java語言薇组。它支持閉包,支持DSL(領(lǐng)域特定語言 Domain Specified Language)
1.Project與Task
在Gradle中坐儿,每一個待構(gòu)建的工程是一個Project律胀,構(gòu)建一個Project需要執(zhí)行一系列Task,比如編譯貌矿、打包這些構(gòu)建過程的子過程都對應(yīng)著一個Task炭菌。具體來說,一個apk文件的構(gòu)建包含以下Task:Java源碼編譯逛漫、資源文件編譯黑低、Lint檢查、打包以生成最終的apk文件等等尽楔。
2. 插件
插件的核心工作有兩個:一是定義Task投储;而是執(zhí)行Task。也就是說阔馋,我們想讓Gradle能正常工作玛荞,完成整個構(gòu)建流程中的一系列Task的執(zhí)行,必須導入合適的插件呕寝,這些插件中定義了構(gòu)建Project中的一系列Task勋眯,并且負責執(zhí)行相應(yīng)的Task。
在新建工程的app模塊的build.gradle文件的第一行,往往都是如下這句:
apply plugin: 'com.android.application'
這句話的意思就是應(yīng)用“com.android.application“這個插件來構(gòu)建app模塊客蹋,app模塊就是Gradle中的一個Project塞蹭。也就是說,這個插件負責定義并執(zhí)行Java源碼編譯讶坯、資源文件編譯番电、打包等一系列Task。實際上"com.android.application"整個插件中定義了如下4個頂級任務(wù):
assemble: 構(gòu)建項目的輸出(apk)
check: 進行校驗工作
build: 執(zhí)行assemble任務(wù)與check任務(wù)
clean: 清除項目的輸出
當我們執(zhí)行一個任務(wù)時辆琅,會自動執(zhí)行它所依賴的任務(wù)漱办。比如,執(zhí)行assemble任務(wù)會執(zhí)行assembleDebug任務(wù)和assembleRelease任務(wù)婉烟,這是因為一個Android項目至少要有debug和release這兩個版本的輸出娩井。