引用Stack Overflow上的一個(gè)提問(wèn)以及回答。
問(wèn)題

看上去這個(gè)問(wèn)題關(guān)注的人還挺多的:
作為安卓開(kāi)發(fā)的萌新,對(duì)Gradle表示confuse。
在as中,gradle是什么,存在的目的是什么。為什么將它包含在as里面?
回答

簡(jiǎn)單說(shuō)Gradle就是一個(gè)構(gòu)建系統(tǒng)。
詳細(xì)說(shuō)來(lái):
在沒(méi)有AS,我們使用Eclipse進(jìn)行Android開(kāi)發(fā)的時(shí)候;我想并且很有可能,如果沒(méi)有Eclipse,你壓根不知道如何去構(gòu)建你的APK。
我來(lái)告訴你,沒(méi)有Eclipse如何構(gòu)建APK。
方法之一就是通過(guò)命令行。不過(guò),想要使用命令行構(gòu)建APK,首先你要清楚sdk中各個(gè)工具(如dx,aapt)是如何工作的。我想你不愿意這樣辛苦吧。感謝Eclipse,它為我們完成了這些,重要又基礎(chǔ)的細(xì)節(jié)。我們只要使用它那簡(jiǎn)單的構(gòu)建系統(tǒng),而不需要自己去敲復(fù)雜、繁瑣的命令行。
Eclipse的android構(gòu)建系統(tǒng),使用一些約定俗成的東西。例如:\src文件夾存放源代碼,\res文件夾存放資源文件。
這種構(gòu)建系統(tǒng)會(huì)將src文件夾下的.java或.xml文件編譯成.class文件,接著轉(zhuǎn)為dex文件,然后將它們打包成,親愛(ài)的APK。
相比于其他構(gòu)建系統(tǒng),Gradle是取其精華去其糟粕的集大成者。
它是基于JVM的構(gòu)建系統(tǒng),這意味著,你可以通過(guò)java寫(xiě)出來(lái)你自己的腳本。
另外,他還是基于插件的構(gòu)建系統(tǒng)。意味著,你可以通過(guò)java,Groovy甚至是kotlin來(lái)編寫(xiě)你自己的插件。然后將這個(gè)插件貢獻(xiàn)給全世界。

谷歌為什么選擇Gradle
從市場(chǎng)上選擇一個(gè)最高級(jí)的并且,你可以編寫(xiě)自己的腳本,沒(méi)有任何的學(xué)習(xí)曲線(xiàn)。不需要學(xué)習(xí)Groovy,或其他任何一門(mén)新的語(yǔ)言。所以他們?yōu)镚radle編寫(xiě)了Android plugin。
就是你們天天寫(xiě)的這個(gè):
apply plugin:'com.android.application'
如果你把這個(gè)注釋了,下面又寫(xiě)了android {}
那么報(bào)錯(cuò)Error:(10, 0) Extension with name 'android' does not exist. Currently registered extension names: [ext, kotlin]Open File
AS 項(xiàng)目自動(dòng)生成的build.gradle中的配置信息是用Groovy 寫(xiě)的。如果你在里面寫(xiě)System.out.println("Hello Gradle!");他會(huì)在控制臺(tái)輸出信息。
總結(jié):Gradle是一個(gè)基于jvm,基于插件的構(gòu)建系統(tǒng)。
build.gradle文件內(nèi)容寫(xiě)的都是默認(rèn)groovy編寫(xiě)的構(gòu)建腳本。
google為它的android編寫(xiě)了com.android.application插件。以至于我們能夠android {}
這里還有kotlin的插件
applyplugin:'kotlin-android'
applyplugin:'kotlin-android-extensions'