Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android Studio

深入淺出Gradle

by
Difficulty:BeginnerLength:LongLanguages:

Chinese (Traditional) (中文(繁體)) translation by Stypstive (you can also view the original English article)

作為第一個專為Android打造的IDE(集成開發環境),由Google支持的Android Studio是最值得Android開發人員期待的。 但這同時意味著必須掌握一些新技術,特別是Gradle構建系統。

本文將讓您掌握Android的新構建系統,從基礎的知識,如什麼是Gradle和它能做什麼,到深入研究一些重要的Gradle文件,以及學習如何執行和監控Gradle任務。

你將進一步了解 Android Studio 中各種不同的 Gradle 工具窗口,並學習如何項目中添加依賴,這些都不需要 Gradle 相關經驗。

掌握 Android 新構建系統的第一步是正確理解 Gradle 是什麼,以及為什麼在 Android Studio 中引入 Gradle 對 Android 開發人員來說是一個好消息。

1. 什麼是 Gradle?

在 Android Studio 中,Gradle 的集成是通過恰當命名的 Android Gradle 插件來實現的。 在 Android Studio 中,Gradle 的集成是通過恰當命名的 Android Gradle 插件來實現的。

當你考慮遷移到 Android Studio 時,如果之前從未使用過 Gradle,它可能是一個令人沮喪的入門壁壘。 但是,Gradle 能夠給 Android 開發人員提供很多幫助,所以非常值得投入一些時間來學習 Gradle 的來龍去脈。 這裡是幾個你可以使用 Gradle 做的事情。

減少新項目所需的配置

Gradle 有一套默認配置,它會自動應用於您在 Android Studio 中創建的每個項目。 如果您開發的項目不能遵守這些默認配置規則,Gradle 也很容易自定義。

聲明項目依賴關係

依賴關係可以是模塊、 JAR 文件或者庫,並且它們既可以位於本地文件系統也可以位於遠程服務器上。

測試您的項目

Gradle 自動生成一個測試目錄,並從您項目的測試源文件生成一個測試 APK,還可以在構建過程中運行測試。

生成簽名 APK

如果你將所有必要的信息,如 keyPassword keyAlias,添加到您的 Gradle 文件中,您可以使用 Gradle 來生成簽名的 APK。

從單個模塊生成多個 APK

Gradle 可以使用不同的包和配置從單個模塊生成多個 APK 。 這個特性對安卓開發人員來說特別方便,有以下幾個原因:

1. 支持各種設備

Android 平台開發中很大一部分是用來盡可能支持更多不同的 Android 設備和不同版本的 Android 操作系統。 谷歌市場甚至有多 APK 支持,因此您可以為您的 app 創建多個版本,在每個版本針對不同的設備配置,在市場中提供單獨的清單列表。

這就是為什麼引進 Gradle 的原因。 您可以使用 Android 的新構建系統從同一個模塊生成多個 APK 的不同版本。 只需要給這些不同版本提供相同的包名,您就可以將它們上傳到相同的谷歌市場清單列表。

2. 提供一個 app 的不同版本

有時,您會想要在谷歌市場中列出您的 app 的多個版本,例如,您想要提供您的 app 的免費和"Pro"版本。 同樣,您可以使用 Gradle 從同一個模塊中生成多個 APK,並給每個 APK 一個不同的包名。 之後你就可以分別上傳每個 APK 到谷歌市場中。

2. 探索 Gradle 文件

每當在 Android Studio 中創建項目時,構建系統會自動生成所有必需的 Gradle 文件。

因為每次你創建一個 Android Studio 項目,你都會遇到相同的 Gradle 文件。我們將創建一個基本示例項目,然後仔細看看這些自動生成的文件。

第一步,創建示例項目:

  1. 啟動 Android Studio。
  2. 單擊 Start a new Android Studio project
  3. 給您的項目一個名字,輸入域名,然後選擇用於存儲您的示例項目的位置。 單擊 Next
  4. 確保只有 Phone and tablet 被選中,並接受默認最低 SDK 設置。 單擊 Next
  5. 選擇 Blank Activity 然後單擊 Next
  6. 保持默認設置,然後單擊 Finish

Gradle 文件

Gradle 文件使用特定領域語言或 DSL 定義自定義構建邏輯,並與 Gradle 插件的安卓專有元素進行交互。

Android Studio 項目由一個或多個模塊組成,這些模塊是您可以單獨構建、 測試和調試的組件。 每個模塊都有自己的構建文件,因此,每個 Android Studio 項目包含兩種 Gradle 構建文件:

  • 頂級構建文件: 你將在這裡找到項目所有模塊的通用配置選項。
  • 模塊級構建文件: 每個模塊都有自己的的 Gradle 構建文件,包含了模塊特定的設置。 絕大多數時間,您都在編輯模塊級構建文件而不是項目的頂級構建文件。

要查看這些 build.gradle 文件,請打開 Android Studio Project 面板 (通過選擇 Project 選項卡) 並展開 Gradle Scripts 文件夾。 在我們的示例項目中,列表中的前兩項是您項目的頂級和模塊級構建文件。

The first two items in the Gradle Scripts folder are the project-level and module-level Gradle build files

我們的示例項目只有單個模塊級別的構建文件,但下面的截圖給你一個提示,在多模塊項目中 Gradle Scripts 文件夾可能的樣子。

Example of how the Gradle Scripts folder looks for a multiple module project

頂級 Gradle 構建文件

每個 Android Studio 項目包含一個唯一的頂級 Gradle 構建文件。 這個 build.gradle 文件是出現在 Gradle Scripts 文件夾中的第一項,並清楚地標記為 Project

大多數情況下,您不需要對此文件進行任何更改,但了解它的內容和它在您的項目鎖扮演的角色仍然很有用。 以下便是一個典型的頂級構建文件的註釋版。

模塊級 Gradle 構建文件

除了項目級 Gradle 構建文件,每個模塊有一個自己的 Gradle 構建文件。 以下便是一個基本的模塊級 Gradle 構建文件的註釋版。

其他 Gradle 文件

除了 Build.gradle 文件,您 Gradle Scripts 文件夾中包含一些其他 Gradle 文件。 不多數情況下,你不必手動編輯這些文件,當您更改項目的任何有關配置,它們會自動更新。 然而,理解這些文件在您的項目內扮演的角色是一個不錯的主意。

gradle-wrapper.properties (Gradle Version)

此文件用來允許其他人生成代碼,即使在他們的機器上沒有安裝 Gradle。 此文件檢查是否安裝了正確版本的 Gradle,如有必要下載必要的版本。 在我們的示例 app 中,gradle wrapper.properties 包含以下內容:

settings.gradle

此文件將引用組成您項目的所有模塊。 因為我們的示例項目只有一個模塊,此文件非常直白,正如你在下面看到的那樣。

gradle.properties (Project Properties)

此文件包含您整個項目的配置信息。 它默認是空的,但您可以通過在此文件中添加內容以使您的項目應用大範圍的特性。

local.properties (SDK Location)

該文件用來告訴 Gradle 插件,它在哪裡可以找到你的 Android SDK 安裝位置 。 例如:

請注意,local.properties 包含的信息是指定安裝在 本地 的 Android SDK 的路徑。 這意味著你不應該將這個文件放在代碼版本控制中。

3. Android Studio 用戶界面

現在,您已經熟悉所有自動生成的 Gradle 文件,是時候轉向與 Gradle 構建系統交互了。 好消息是,你可以通過 Android Studio 的用戶界面與 Gradle 直接進行交互。

在 Andorid Studio 的豎直與水平邊緣,有一些用於打開的各種工具窗口的選項卡。 在接下來的幾節中,我會向您介紹一些 Android Studio 中的 Gradle 工具窗口,並展示如何通過這些窗口與 Gradle 構建系統進行交互。

Gradle 任務窗口

您可以使用 Gradle 任務窗口瀏覽和執行不同的任務,這些任務是將您的項目編譯成可執行應用程序中執行所涉及的各項任務。

若要打開 Gradle 任務窗口,請單擊 Android Studio 右側的 Gradle 選項卡。 如果您自定義了您的 Android Studio 用戶界面,導致找不到 Gradle 選項卡,那麼您可以依次選擇 View > Tool Windows > Gradle

在 Gradle 任務選項卡中,雙擊您的項目和您的模塊。 你會看到有關此模塊的所有 Gradle 任務的列表。

Select the Gradle tab to reveal the Gradle tasks window

當您在 Gradle 任務窗口中的雙擊一個任務時,它開始執行並在另一個 Gradle 窗口中輸出顯示,這個窗口是 Gradle Console

Gradle Console

Gradle 控制台顯示 Gradle 任務執行的輸出,包括任何錯誤消息或警告。

若要打開 Gradle 控制台,請選擇您 IDE 右下角的 Gradle Console 選項卡。 如果您自定義了 Android Studio 的用戶界面,並找不到此選項卡,您總是可以通過選擇 View > Tool Windows > Gradle Console 來代替。

讓我們去 Gradle 控制台兜一圈。 在 Gradle 任務窗口中,找到 assemble 任務,然後雙擊它,這個任務用於生成即將發布您的應用程序的發布版本。 當 assemble 任務執行時,任務的輸出顯示在 Gradle 控制台中。

Gradle 控制台然後將要么通知您,您的項目已成功構建,要么它將顯示"構建失敗"的消息,同時還有您構建失敗原因的有關信息。

Example of the assemble task output in the Gradle Console

Terminal

您還可以從 Android Studio 集成的 Terminal 運行 Gradle 任務。 如果您知道到底什麼 Gradle 任務要執行,比起在 Gradle Console 中瀏覽任務列表,終端通常更快,更方便。

要打開終端,單擊位於 Android Studio 左下角的 Terminal 選項卡或選擇 View > Tool Windows > Gradle Console。 然後終端被打開,並且已經選定當前目錄。 然後,您就可以通過鍵入任務到終端,並按鍵盤上的 Return Enter 鍵執行 Gradle 任務。

4. 添加依賴

在本節中,我們將探討如何使用 Gradle 來管理您的項目模塊依賴關係、 本地二進製文件依賴關係和遠程二進製文件依賴關係。

當向項目中添加依賴關係時,Gradle 提供了幾個選項。

選項 1:拖拽文件到項目的 libs/ 目錄

相關 build.gradle 文件將自動更新。

選項 2:手動修改 build.gradle 文件

打開您的 build.gradle 文件並在依賴項節添加新的構建規則。 例如,如果您想要添加谷歌服務,您的項目依賴項節將會看起來是這樣:

選項 3:使用 Android Studio 的用戶界面

Project 面板中,Control+Click 您要添加依賴的模塊,然後選擇 Open Module Settings

Add a dependency via the Android Studio UI

Add a dependency via the Android Studio UI 選擇 Dependencies 選項卡,緊接著選擇左下角的 + 按鈕。 你可以選擇以下列表中的選項:

  • Library Dependency
  • File Dependency
  • Module Dependency

然後,您可以輸入要添加到您的項目中的依賴的詳細信息。 例如,如果你選擇 Library Dependency,Android Studio 顯示一個庫列表供您選擇。

一旦您添加了您的依賴,請檢查您的模塊級 build.gradle 文件。 它應該會自動更新以包含新的依賴關係。

總結

這篇文章已經向你介紹了在一個典型的 Android Studio 項目中所有你能找到的自動生成的 Gradle 構建文件,尤其是頂級和模塊級 Gradle 構建文件。 您還學習瞭如何通過 Android Studio 的用戶界面直接與 Gradle 構建系統進行交互。

如果你有興趣學習更多 Gradle 相關知識,你將會在 Android developer website Gradle website 上發現很多補充信息。

关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.