一、Gradle是所有Android進(jìn)階開發(fā)繞不去的坎的原因
Gradle 作為目前官方主推的構(gòu)建系統(tǒng),已經(jīng)深度應(yīng)用于 Android 的多個技術(shù)體系中,例如組件化開發(fā)、產(chǎn)物構(gòu)建、單元測試等,所以要進(jìn)行Android進(jìn)階開發(fā),必須了解、學(xué)習(xí)Gradle。
Gradle在Android進(jìn)階開發(fā)的應(yīng)用:
項(xiàng)目依賴管理:Gradle可幫助開發(fā)者管理項(xiàng)目的依賴關(guān)系,例如庫依賴、插件依賴等。通過Gradle的配置,可以自動下載和更新依賴庫,從而提高開發(fā)效率。組件化開發(fā):Gradle支持模塊化開發(fā),可以將應(yīng)用程序拆分為多個模塊,各個模塊之間可以互相獨(dú)立,便于管理和調(diào)試。自動化構(gòu)建:Gradle可以自動執(zhí)行構(gòu)建任務(wù),例如編譯代碼、打包輸出等,避免手動操作的繁瑣和出錯,從而提高開發(fā)效率。多渠道打包:Gradle支持根據(jù)不同的渠道生成不同的APK包,例如Google Play、華為應(yīng)用市場、小米應(yīng)用商店等。通過渠道打包,可以方便地進(jìn)行版本控制和統(tǒng)計(jì),并對應(yīng)不同平臺的需求進(jìn)行優(yōu)化。單元測試:Gradle內(nèi)置支持單元測試,可以方便地執(zhí)行各種單元測試,并且可以生成測試報(bào)告,幫助開發(fā)者保證代碼質(zhì)量。二、Gradle簡介
1、Gradle概念
Gradle是一個基于Apache Ant和Apache Maven概念的項(xiàng)目自動化構(gòu)建開源工具。它使用一種基于Groovy的特定領(lǐng)域語言(DSL)來聲明項(xiàng)目設(shè)置,也增加了基于Kotlin語言的kotlin-based DSL,拋棄了基于XML的各種繁瑣配置。Gradle面向Java應(yīng)用為主。當(dāng)前其支持的語言C++、Java、Groovy、Kotlin、Scala和Swift,計(jì)劃未來將支持更多的語言。
2、Gradle優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
表達(dá)性的 DSL:Gradle使用基于 Groovy 的 DSL 領(lǐng)域特定語言編寫構(gòu)建腳本,相比于傳統(tǒng)的 XML 文件,更加簡潔易讀?;?Java 虛擬機(jī):Groovy 語言基于 Java 虛擬機(jī),使得開發(fā)人員可以使用 Java / Kotlin 代碼編寫 Gradle 構(gòu)建腳本,并且只需要掌握一小部分 Groovy 語法即可輕松上手。約定優(yōu)于配置:Gradle 容易上手,具有約定優(yōu)于配置的原則,即為屬性提供默認(rèn)值,避免了在配置過程中的繁瑣和錯誤。缺點(diǎn):
向后兼容性問題:Gradle是一個快速發(fā)展的工具,新版本經(jīng)常會打破向后兼容性,這意味著從一個版本遷移到另一個版本時可能會產(chǎn)生一些問題。學(xué)習(xí)曲線略高:由于Gradle使用了DSL,需要學(xué)習(xí)該語言的語法和特性,才能更好地理解和掌握 Gradle。3、Gradle中的重要概念
Gradle:提供核心構(gòu)建流程,但不提供具體構(gòu)建邏輯;Gradle 插件:Gradle 提供的是一套核心的構(gòu)建機(jī)制,而 Gradle 插件正是運(yùn)行在這套機(jī)制上的一些具體構(gòu)建邏輯,本質(zhì)上和 .gradle 文件沒有區(qū)別。例如,我們熟悉的 Android 構(gòu)建流程就是由 Android Gradle Plugin 引入的構(gòu)建邏輯;Gradle Daemon:用于提升構(gòu)建速度的后臺進(jìn)程;Gradle Wrapper:對 Gradle 的封裝,增加了自動下載安裝 Gradle 環(huán)境的能力;環(huán)境變量 GRADLE:用于定義 Gradle 的安裝目錄;環(huán)境變量 GRADLE_USER_HOME:用于定義 Gradle 運(yùn)行過程的文件存儲目錄,例如 Gradle Wrapper 自動安裝的 Gradle 環(huán)境、構(gòu)建緩存等。4、Gradle的功能
gradle對多工程的構(gòu)建支持很出色,工程依賴是gradle的名列前茅功能。gradle支持局部構(gòu)建。支持多方式依賴管理:包括從maven遠(yuǎn)程倉庫、nexus私服、ivy倉庫以及本地文件系統(tǒng)的jars或者dirsgradle是名列前茅個構(gòu)建集成工具,與ant、maven、ivy有良好的相容相關(guān)性。輕松遷移:gradle適用于任何結(jié)構(gòu)的工程,你可以在同一個開發(fā)平臺平行構(gòu)建原工程和gradle工程。通常要求寫相關(guān)測試,以保證開發(fā)的插件的相似性,這種遷移可以減少破壞性,盡可能的可靠。這也是重構(gòu)的優(yōu)異實(shí)踐。gradle的整體設(shè)計(jì)是以作為一種語言為導(dǎo)向的,而非成為一個嚴(yán)格死板的框架。免費(fèi)開源延伸閱讀1:Gradle的 3 大特性
高度可定制:它的高度可定制化體現(xiàn)在,它以最基本的方式可定制和可擴(kuò)展的方式建模;快速:Gradle 通過重新使用以前執(zhí)行的輸出,僅處理已更改的輸入以及并行執(zhí)行任務(wù)來快速完成任務(wù)。通俗點(diǎn)就是說,第二次構(gòu)建,只構(gòu)建我們修改代碼相關(guān)的類,不會耗費(fèi)時間來構(gòu)建整個項(xiàng)目;強(qiáng)大:Gradle 是 Android 的官方構(gòu)建工具,并支持許多流行的語言和技術(shù)。