Gradle是什么

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

問(wèn)題

Stack Overflow上的提問(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'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評(píng)論 25 708
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng),請(qǐng)點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,377評(píng)論 8 72
  • Android開(kāi)發(fā)工具 Android Studio Android開(kāi)發(fā)環(huán)境,基于IntelliJ IDEA,谷歌...
    奈何心善閱讀 2,550評(píng)論 1 18
  • 就像不知道穿什么鞋子一樣,也不知道穿什么衣服。我是汗腳,這個(gè)時(shí)候穿保暖的鞋子白天熱出了汗到晚上坐在教室里反而冷,可...
    亻乍閱讀 318評(píng)論 0 0
  • 下雨了,天也變冷了 望著窗外 淅淅瀝瀝 你那里下雨了嗎? 冷了是否記得添衣…
    嗑瓜子的曉鳴閱讀 342評(píng)論 2 1

友情鏈接更多精彩內(nèi)容