引用Stack Overflow上的一個(gè)提問以及回答屋确。
問題
看上去這個(gè)問題關(guān)注的人還挺多的:
作為安卓開發(fā)的萌新撮奏,對Gradle表示confuse隅要。
在as中,gradle是什么研底,存在的目的是什么埠偿。為什么將它包含在as里面?
回答
簡單說Gradle就是一個(gè)構(gòu)建系統(tǒng)榜晦。
詳細(xì)說來:
在沒有AS冠蒋,我們使用Eclipse進(jìn)行Android開發(fā)的時(shí)候;我想并且很有可能乾胶,如果沒有Eclipse抖剿,你壓根不知道如何去構(gòu)建你的APK。
我來告訴你识窿,沒有Eclipse如何構(gòu)建APK斩郎。
方法之一就是通過命令行。不過腕扶,想要使用命令行構(gòu)建APK,首先你要清楚sdk中各個(gè)工具(如dx吨掌,aapt)是如何工作的半抱。我想你不愿意這樣辛苦吧脓恕。感謝Eclipse,它為我們完成了這些窿侈,重要又基礎(chǔ)的細(xì)節(jié)炼幔。我們只要使用它那簡單的構(gòu)建系統(tǒng),而不需要自己去敲復(fù)雜史简、繁瑣的命令行乃秀。
Eclipse的android構(gòu)建系統(tǒng),使用一些約定俗成的東西圆兵。例如:\src文件夾存放源代碼跺讯,\res文件夾存放資源文件。
這種構(gòu)建系統(tǒng)會將src文件夾下的.java或.xml文件編譯成.class文件殉农,接著轉(zhuǎn)為dex文件刀脏,然后將它們打包成,親愛的APK超凳。
相比于其他構(gòu)建系統(tǒng)愈污,Gradle是取其精華去其糟粕的集大成者。
它是基于JVM的構(gòu)建系統(tǒng)轮傍,這意味著暂雹,你可以通過java寫出來你自己的腳本。
另外创夜,他還是基于插件的構(gòu)建系統(tǒng)杭跪。意味著,你可以通過java挥下,Groovy甚至是kotlin來編寫你自己的插件揍魂。然后將這個(gè)插件貢獻(xiàn)給全世界。
谷歌為什么選擇Gradle
從市場上選擇一個(gè)最高級的并且棚瘟,你可以編寫自己的腳本现斋,沒有任何的學(xué)習(xí)曲線。不需要學(xué)習(xí)Groovy偎蘸,或其他任何一門新的語言庄蹋。所以他們?yōu)镚radle編寫了Android plugin。
就是你們天天寫的這個(gè):
apply plugin:'com.android.application'
如果你把這個(gè)注釋了迷雪,下面又寫了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)目自動生成的build.gradle中的配置信息是用Groovy 寫的限书。如果你在里面寫System.out.println("Hello Gradle!");他會在控制臺輸出信息。
總結(jié):Gradle是一個(gè)基于jvm章咧,基于插件的構(gòu)建系統(tǒng)倦西。
build.gradle文件內(nèi)容寫的都是默認(rèn)groovy編寫的構(gòu)建腳本。
google為它的android編寫了com.android.application插件赁严。以至于我們能夠android {}
這里還有kotlin的插件
applyplugin:'kotlin-android'
applyplugin:'kotlin-android-extensions'