真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Gradle為什么這么流行

這篇文章主要為大家分析了Gradle為什么這么流行的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價(jià)值。如果感興趣的話(huà),不妨跟著跟隨小編一起來(lái)看看,下面跟著小編一起深入學(xué)習(xí)“Gradle為什么這么流行”的知識(shí)吧。

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶(hù)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、域名注冊(cè)虛擬主機(jī)、網(wǎng)絡(luò)營(yíng)銷(xiāo)、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶(hù)提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶(hù)的口碑塑造優(yōu)易品牌,攜手廣大客戶(hù),共同發(fā)展進(jìn)步。

Android Studio 占領(lǐng)市場(chǎng)后,構(gòu)建工具 Gradle 的地位無(wú)人能比,我們有必要學(xué)習(xí)、使用它來(lái)為我們創(chuàng)造價(jià)值。

在深入學(xué)習(xí) Gradle 之前,我們有必要了解下它為什么這么流行。

Android 應(yīng)用的構(gòu)建過(guò)程

Android 應(yīng)用程序的構(gòu)建過(guò)程非常復(fù)雜,如圖所示:

Gradle為什么這么流行

主要有以下幾步:

  1. 主要的資源文件(layout, values 等)都被 aapt 編譯,并且在一個(gè) R 文件中引用

  2. Java 代碼被 Java 編譯器編譯成 JVM 字節(jié)碼(.class 文件)

  3. JVM 字節(jié)碼再被 dex 工具轉(zhuǎn)換成 dalvik 字節(jié)碼(.dex 文件)

  4. 然后這些 .dex 文件、編譯過(guò)的資源文件和其他資源文件(比如圖片)會(huì)被打包成一個(gè) apk

  5. apk 文件在安裝前會(huì)被 debug/release 的 key 文件簽名

  6. 安裝到設(shè)備

幾個(gè)注意點(diǎn)

  1. 上面的步驟中***步注意是主要的資源文件,有些特別的資源文件就不會(huì)被編譯,比如 assets 目錄下的文件,raw  目錄下的文件還有圖片,都不會(huì)被編譯。只不過(guò) raw 下的文件會(huì)在 R 文件里生成 id

  2. 如果對(duì) apk 正式簽名,還需要使用 zipalign 工具對(duì) apk 進(jìn)行對(duì)齊操作,這樣做的好處是當(dāng)應(yīng)用運(yùn)行時(shí)會(huì)減少內(nèi)存的開(kāi)銷(xiāo)

通過(guò)上面的介紹可以看到,這么復(fù)雜的構(gòu)建過(guò)程如果需要人手動(dòng)去完成未免太過(guò)殘忍,于是有了各種的構(gòu)建工具。

Android 構(gòu)建的舊愛(ài):Ant, Maven

在 Gradle 之前被廣泛使用的是 Apache Ant 和 Maven。

Ant

Gradle為什么這么流行

Ant 2000 年發(fā)布,很快成為 Java 項(xiàng)目***的構(gòu)建工具。

Ant 的優(yōu)點(diǎn)就是:

  • 簡(jiǎn)單、易學(xué),不需要什么特殊準(zhǔn)備就能上手

  • 基于過(guò)程式編程思想使得構(gòu)建非常靈活

  • 后來(lái)還能支持插件。

不足之處就是使用 XML 作為腳本配置格式,除非是很小的項(xiàng)目,否則它的 XML 文件很快就大得無(wú)法管理。

Maven

Gradle為什么這么流行

Maven 發(fā)布于 2004 年。目的是解決使用 Ant 所帶來(lái)的一些問(wèn)題。

Maven 也是使用 XML 作為構(gòu)建配置的文件格式,不過(guò)文件結(jié)構(gòu)卻有了巨大的變化:

  • Ant 需要開(kāi)發(fā)者將執(zhí)行 task 所需的全部命令都列出來(lái)

  • 而 Maven 依靠約定并提供現(xiàn)成的可調(diào)用的目標(biāo)

不僅如此,Maven 更重要的一個(gè)進(jìn)步是具備從網(wǎng)絡(luò)上自動(dòng)下載依賴(lài)的能力(當(dāng)然 Ant 后來(lái)通過(guò) Ivy  也具備了這個(gè)功能),這革命性地改變了我們開(kāi)發(fā)軟件的方式。

Maven 的缺點(diǎn)是:

  • 依賴(lài)管理不能很好地處理相同庫(kù)文件不同版本之間的沖突(Ivy在這方面更好一些)

  • XML 作為配置文件的格式有嚴(yán)格的結(jié)構(gòu)層次和標(biāo)準(zhǔn),定制化目標(biāo)很困難

Maven 主要解決了依賴(lài)管理的問(wèn)題,然而使用 XML 的錯(cuò)誤使它重蹈覆轍,實(shí)際上用 Maven  很難寫(xiě)出復(fù)雜、定制化的構(gòu)建腳本,在大型項(xiàng)目中,它經(jīng)常什么“特別的”事還沒(méi)干就有幾百行代碼,甚至不如 Ant。

前輩們?cè)诜词∏皟煞N構(gòu)建工具的錯(cuò)誤之后,提出了 DSL (Domain Special Language,  領(lǐng)域?qū)S谜Z(yǔ)言)的概念,目標(biāo)是設(shè)計(jì)一套能夠解決特定領(lǐng)域問(wèn)題的語(yǔ)言。在構(gòu)建這方面,DSL 的一個(gè)成功案例就是 Gradle。

Android 構(gòu)建的新歡:Gradle

Gradle為什么這么流行

2012 年發(fā)布的 Gradle 深刻吸取前面幾位前輩的經(jīng)驗(yàn)和教訓(xùn),集大家之所成,做了很多改進(jìn)。

Gradle 有約定優(yōu)于配置的原則,即為設(shè)置和屬性提供默認(rèn)值,這使得它比 Ant 或者 Maven 更容易上手。

Gradle 構(gòu)建腳本不再使用 xml ,而是使用基于 Groovy 的 DSL 進(jìn)行書(shū)寫(xiě)(Groovy 是一種基于 Java 虛擬機(jī)的動(dòng)態(tài)語(yǔ)言,因此  Android 開(kāi)發(fā)者看著會(huì)很熟悉),從而使得構(gòu)建腳本比用 Ant 和 Maven 寫(xiě)的更清晰、簡(jiǎn)潔,下面是實(shí)現(xiàn)同樣目標(biāo)的 Maven 代碼和 Gradle  代碼對(duì)比:

Gradle為什么這么流行

Gradle 既有 Ant 的強(qiáng)大和靈活,又有 Maven 的依賴(lài)管理,支持插件且易于使用。因此一推出就獲得廣泛關(guān)注,2013 年被 Google 選為  Android Studio 的默認(rèn)構(gòu)建工具。

Gradle 設(shè)計(jì)的方式使得它可以很容易地?cái)U(kuò)展構(gòu)建和插入到現(xiàn)有的構(gòu)建過(guò)程中,Google 推廣 Gradle 和 Android Studio  時(shí),目標(biāo)是讓代碼復(fù)用、構(gòu)建 variant、配置和定制構(gòu)建過(guò)程變得更加簡(jiǎn)單。

有人可能擔(dān)心是否需要專(zhuān)門(mén)去學(xué)習(xí)新語(yǔ)言 Groovy,《Gradle for Android》書(shū)中專(zhuān)門(mén)提到:

Groovy 代碼非常易讀,如果你學(xué)習(xí)過(guò) Java,那么學(xué)習(xí) Groovy 的曲線(xiàn)不會(huì)陡峭。 如果你想構(gòu)建自己的任務(wù)和插件,那么對(duì) Groovy  有更深層次的理解尤為重要。 不過(guò)因?yàn)?Groovy 是基于 Java 虛擬機(jī)的,所以你完全可以用 Java 或者其他基于 Java  虛擬機(jī)的語(yǔ)言來(lái)編寫(xiě)你的自定義插件。

Gradle 的關(guān)鍵概念及構(gòu)建生命周期

Gradle 中兩個(gè)關(guān)鍵的概念:項(xiàng)目和任務(wù)。

每個(gè) build.gradle 構(gòu)建腳本文件代表一個(gè)項(xiàng)目 project:

Gradle為什么這么流行

任務(wù) task 定義在構(gòu)建腳本里:

Gradle為什么這么流行

每次構(gòu)建至少包括一個(gè)項(xiàng)目,每個(gè)項(xiàng)目里又至少包括一個(gè)任務(wù)。

構(gòu)建生命周期

一個(gè) Gradle 構(gòu)建通常包括下面三個(gè)階段:

1.初始化

項(xiàng)目實(shí)例會(huì)在這時(shí)被創(chuàng)建,如果這個(gè)項(xiàng)目里有多個(gè) module,或者依賴(lài)多個(gè) library,并且它們都有對(duì)應(yīng)的 build.gradle  文件,就會(huì)創(chuàng)建多個(gè)項(xiàng)目實(shí)例

2.配置

在這個(gè)階段構(gòu)建腳本被執(zhí)行,并且為每個(gè)項(xiàng)目實(shí)例創(chuàng)建和配置任務(wù)

3.執(zhí)行

在這個(gè)階段 Gradle 將根據(jù)構(gòu)建腳本的配置決定哪些任務(wù)會(huì)被執(zhí)行

不同任務(wù)之間可能有 相互依賴(lài),因此在配置階段 Gradle  會(huì)生產(chǎn)依賴(lài)關(guān)系圖,沒(méi)有依賴(lài)的任務(wù)通常會(huì)被優(yōu)先執(zhí)行,然后一個(gè)接一個(gè)執(zhí)行其他任務(wù)。一旦一個(gè)任務(wù)被執(zhí)行過(guò),就不會(huì)被再次執(zhí)行。

Gradle Wrapper

Gradle 在不斷的發(fā)展,有可能存在新版本不兼容舊版本的情況,于是官方為我們提供了 Gradle  Wrapper,就是為了兼容和適配不同版本,確保構(gòu)建是可重復(fù)的。

普通的 Gradle 腳本命令是:

gradle ...

而 Gradle Wrapper 命令只是在 gradle 后加了個(gè) w:

gradlew ...

在 Mac 下略微有些不同:

./gradlew ...

開(kāi)發(fā)者或者自動(dòng)構(gòu)建系統(tǒng)可以通過(guò)使用 wrapper 來(lái)運(yùn)行 gradle 命令,由它來(lái)搞定兼容等問(wèn)題。因此我們甚至都不需要安裝 gradle,直接使用  gradle wrapper 即可,就像 Android Studio 里推薦的一樣:

Gradle為什么這么流行

上圖我并沒(méi)有使用 wrapper,是因?yàn)楫?dāng)你運(yùn)行 gradlew 命令時(shí),gradle wrapper 會(huì)自動(dòng)下載需要但是你沒(méi)有的 gradle  版本并使用。 這在多人協(xié)作時(shí),很可能因?yàn)閯e人修改了 gradle 版本、上傳到 git,然后導(dǎo)致你運(yùn)行命令時(shí)需要下載半天。

不過(guò)官方還是推薦使用 wrapper,畢竟這樣更穩(wěn)定。

關(guān)于“Gradle為什么這么流行”就介紹到這了,更多相關(guān)內(nèi)容可以搜索創(chuàng)新互聯(lián)以前的文章,希望能夠幫助大家答疑解惑,請(qǐng)多多支持創(chuàng)新互聯(lián)網(wǎng)站!


文章名稱(chēng):Gradle為什么這么流行
新聞來(lái)源:http://weahome.cn/article/poodds.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部