建構並執行應用程式

如要查看應用程式在裝置上的外觀和行為,您需要建構並執行應用程式。Android Studio 會設定新專案,您只要點按幾下滑鼠,就能將應用程式部署至虛擬或實體裝置。

本總覽的重點在於如何使用 Android Studio 建構及執行應用程式,以便進行測試和偵錯。如要瞭解如何使用 Android Studio 建構可向使用者發布的應用程式,請參閱「建構向使用者發布的應用程式」一文。如要進一步瞭解如何在使用或不使用 Android Studio 的情況下管理及自訂建構作業,請參閱「建構設定」一文。

基本建構與執行

如要建構並執行應用程式,請按照下列步驟操作:

  1. 在工具列中,從執行設定選單中選取您的應用程式。
  2. 在目標裝置選單中,選取要執行應用程式的裝置。

    目標裝置選單。

    如果您未設定任何裝置,就必須建立 Android 虛擬裝置來使用 Android Emulator,或者連接實體裝置

  3. 按一下「Run」圖示

如果裝置出現相關錯誤或警告,您試圖啟動專案時,Android Studio 會顯示警告。針對圖像和樣式變更,系統會區分「錯誤」(所選裝置造成設定無效) 和「警告」(所選裝置可能導致非預期行為,但仍可執行)。

監控建構程序

如要查看建構程序的詳細資料,請依序選取「View」>「Tool Windows」>「Build」,或按一下工具視窗列中的「Build」圖示 。「Build」工具視窗會顯示 Gradle 為建構應用程式而執行的工作,如圖 1 所示。

圖 1. Android Studio 中的「Build」工具視窗。
  1. 「Sync」分頁:顯示 Gradle 為與專案檔案保持同步而執行的工作。如果遇到同步處理錯誤,您可以像使用「Build Output」分頁一樣,在樹狀結構中選取元素,深入瞭解該項錯誤。系統還會顯示下載影響摘要,判斷依附元件下載內容是否會對建構作業產生負面影響。
  2. 「Build Output」分頁:以樹狀結構形式顯示 Gradle 執行的工作,其中各個節點代表一個建構階段或一組工作依附元件。如果您收到建構時間或編譯時間錯誤,請檢查樹狀結構並選取某個元素來讀取錯誤輸出內容,如圖 2 所示。
    圖 2. 檢查「Build Output」視窗,查看錯誤訊息。
  3. 「Build Analyzer」分頁:提供版本的建構效能分析資訊。詳情請參閱「藉助版本分析器排解建構效能的問題」一文。
  4. 重新啟動:再次執行上次的建構動作。如果上次執行的是「Build」>「Make Selected Module」,系統就會建構目前的模組。如果上次執行的是「Build」>「Make Project」,系統會為專案中的所有模組產生中繼建構檔案。
  5. 篩選器:篩選出警告、工作,或已處理完畢的警告和工作。這樣在輸出內容中會比較容易找到問題。

如果您的建構變數採用變種版本,Gradle 也會透過叫用工作建構這些變種版本。如要查看所有可用的建構工作清單,請依序點選「View」>「Tool Windows」>「Gradle」,或按一下工具視窗列中的「Gradle」圖示

如果建構過程發生錯誤,Gradle 可能會推薦指令列選項,協助您解決問題,例如 --stacktrace--debug。如何搭配建構程序使用指令列選項:

  1. 開啟「Settings」或「Preferences」對話方塊:
    • 在 Windows 或 Linux 上,從選單列中依序選取「File」>「Settings」
    • 在 macOS 上,從選單列中依序選取「Android Studio」>「Preferences」
  2. 依序前往「Build, Execution, Deployment」>「Compiler」
  3. 在「Command-line Options」旁邊的文字欄位中,輸入指令列選項。
  4. 按一下「OK」即可儲存並結束。

Gradle 會在您下次嘗試建構應用程式時套用這些指令列選項。

進階建構與執行功能

以 Android Studio 預設的方式建構及執行應用程式,應足以測試簡單的應用程式。不過,您可以使用這些建構和執行功能處理更進階的用途:

  • 如要在偵錯模式下部署應用程式,請按一下「Debug」圖示 。在偵錯模式下執行應用程式,即可在程式碼中設定中斷點、在執行階段期間檢查變數並評估運算式,以及執行偵錯工具。詳情請參閱「為應用程式偵錯」一文。

  • 如果您的應用程式規模較大且較複雜,請使用「Apply Changes」,而不要點選「Run」圖示 。這樣就不必在每次部署變更時重新啟動應用程式,可為您節省時間。如要進一步瞭解「套用變更」功能,請參閱「透過『套用變更』展開逐步部署」一節。

  • 如果您使用的是 Jetpack Compose,可以利用「即時編輯」這項實驗功能即時更新可組合項,不須重新點選「Run」圖示 。這可讓您專注於編寫 UI 程式碼,盡量減少干擾。詳情請參閱「即時編輯功能 (實驗功能)」一節。

  • 如果應用程式有多個版本 (或建構變化版本),您可以透過「Build Variants」工具視窗選擇要部署的建構變化版本。如要進一步瞭解如何執行特定建構變化版本,請參閱「變更建構變化版本」一節。

  • 如要微調應用程式安裝、啟動和測試選項,您可以變更執行/偵錯設定。如要進一步瞭解如何建立自訂執行/偵錯設定,請參閱「建立執行/偵錯設定」一節。

  • 建議您依據開發需求使用 Android Studio,但您也可以透過指令列將應用程式部署至虛擬或實體裝置。詳情請參閱「透過指令列建構應用程式」。

透過「套用變更」展開逐步部署

在 Android Studio 3.5 以上版本中,套用變更功能可讓您將程式碼和資源變更推送到執行中的應用程式,無需重新啟動應用程式。在某些情況下,也無需重新啟動目前的活動。如要部署及執行小幅增量的變更,同時保留裝置目前的狀態,就能透過這項彈性功能控制應用程式的重新啟動範圍。

套用變更功能會使用 Android JVMTI 實作中的各項功能 (搭載 Android 8.0 (API 級別 26) 以上版本的裝置支援這些功能)。如要進一步瞭解「套用變更」的運作方式,請參閱「Android Studio Project Marble: Apply Changes」一文。

需求條件

您必須符合下列條件,才能使用變更變更動作:

  • 使用偵錯建構變數建構應用程式的 APK。
  • 將應用程式部署至搭載 Android 8.0 (API 級別 26) 以上版本的目標裝置或模擬器。

使用套用變更

如果您要將變更部署至相容裝置,請使用下列選項:

「Apply Changes and Restart Activity」圖示 「Apply Changes and Restart Activity」圖示:套用資源和程式碼變更時,嘗試重新啟動活動但不重新啟動應用程式。一般來說,如果您已修改現有資源或方法主體中的程式碼,就可以採用這個選項。

您也可以按下 Control + Alt + F10 鍵 (在 macOS 上為 Control + Command + Shift + R 鍵) 來執行這項操作。

「Apply Code Changes」圖示 「Apply Code Changes」圖示:嘗試僅套用程式碼變更,而不重新啟動任何項目。一般來說,如果您已修改方法主體中的程式碼,但未修改任何資源,就可以採用這個選項。如果您已同時修改程式碼和資源,請改用「Apply Changes and Restart Activity」

您也可以按下 Control + F10 鍵 (在 macOS 上為 Control + Command + R 鍵) 來執行這項操作。

「Run」圖示 :部署所有變更並重新啟動應用程式。如果您無法透過任何「套用變更」選項套用所做變更,請採用這個選項。如要進一步瞭解哪些變更類型需要重新啟動應用程式,請參閱「『套用變更』的限制」一節。

為「套用變更」啟用備用執行功能

當您點選「Apply Changes and Restart Activity」或「Apply Code Changes」後,Android Studio 會建構新的 APK 並判斷是否可套用變更。如果無法套用變更,且會導致「套用變更」功能出錯,Android Studio 會改為提示您點選「Run」圖示 「Run」圖示,以便再次執行應用程式。

如果不想在每次發生這種情形時收到提示,可將 Android Studio 設為在無法套用變更時自動重新執行應用程式。如要啟用這項行為,請按照下列步驟操作:

  1. 開啟「Settings」或「Preferences」對話方塊:

    • 在 Windows 或 Linux 上,從選單中依序選取「File」>「Settings」
    • 在 macOS 上,從選單中依序選取「Android Studio」>「Preferences」
  2. 依序前往「Build, Execution, Deployment」>「Deployment」

  3. 勾選相關核取方塊,為這一或兩項「套用變更」操作啟用自動備用執行功能。

  4. 按一下「OK」

因平台而異

套用變更的部分功能會依附於特定 Android 平台版本。如要套用這類變更,應用程式必須部署至搭載該 Android 版本或以上的裝置。舉例來說,新增方法需要使用 Android 11 以上版本。

套用變更的限制

「套用變更」的設計旨在加快應用程式部署程序。不過,此功能的使用時機有一些限制。

需要重新啟動應用程式的程式碼變更

您必須重新啟動應用程式,才能套用部分程式碼和資源變更,包括:

  • 新增或移除欄位
  • 移除方法
  • 變更方法簽章
  • 變更方法或類別的修飾符
  • 變更類別沿用設定
  • 變更列舉中的值
  • 新增或移除資源
  • 變更應用程式資訊清單
  • 變更原生資料庫 (SO 檔案)
程式庫與外掛程式

有些程式庫和外掛程式會自動變更應用程式的資訊清單檔案或資訊清單中參照的資源。這些自動更新會干擾套用變更功能,原因如下:

  • 如果程式庫或外掛程式變更應用程式的資訊清單,您就無法使用套用變更功能,必須重新啟動應用程式才能看到變更。
  • 如果程式庫或外掛程式更動了應用程式的資源檔案,您就無法採取點選「Apply Code Changes」圖示 「Apply Code Changes」圖示 的方式。您必須改為點選「Apply Changes and Restart Activity」圖示 「Apply Changes and Restart Activity」圖示 或重新啟動應用程式,才能看到變更。

如要避免受到這些限制影響,不妨停用偵錯建構變化版本的所有自動更新。

舉例來說,Firebase Crashlytics 在每次建構過程中會使用不重複的建構 ID 更新應用程式資源,進而讓您無法使用「Apply Code Changes」圖示 「Apply Code Changes」圖示,因此您必須重新啟動應用程式的活動才能看到變更。只要停用這個行為,即可搭配偵錯版本使用「Apply Code Changes」 和 Crashlytics。

直接參照已安裝 APK 內容的程式碼

如果程式碼會直接參照裝置上安裝的應用程式 APK 內容,在您點選「Apply Code Changes」圖示 「Apply Code Changes」圖示 後,該程式碼可能會導致系統當機或出現異常行為。之所以發生這種行為,是因為您點選「Apply Code Changes」後,裝置上的基礎 APK 會在安裝期間遭到替換。在這類情況下,您可以改為點選「Apply Changes and Restart Activity」圖示 「Apply Changes and Restart Activity」圖示 或「Run」圖示 「Run」圖示

如果您在使用「套用變更」功能時遇到任何其他問題,請回報錯誤

即時編輯

「即時編輯」是 Android Studio 中的實驗功能,可讓您即時更新模擬器和實體裝置中的可組合項。透過這項功能,您可以在編寫與建構應用程式的過程中盡量減少切換畫面,進而長時間專注於編寫程式碼,不受干擾。

進一步瞭解「即時編輯」

變更建構變化版本

根據預設,在您點選「Run」圖示 UI 按鈕 後,Android Studio 會建構應用程式的偵錯版本,不過這只能在開發期間使用。

如要變更 Android Studio 使用的建構變化版本,請執行下列任一操作:

  • 在選單中依序選取「Build」>「Select Build Variant」
  • 在選單中依序選取「View」>「Tool Windows」>「Build Variants」
  • 按一下工具視窗列中的「Build Variants」分頁標籤。

如果專案沒有原生/C++ 程式碼,「Build Variants」面板會有兩個資料欄:「Module」和「Active Build Variant」。模組的「Active Build Variant」值會決定 IDE 部署至已連結裝置的建構變數,並且顯示在編輯器中。

圖 9. 「Build Variants」面板會為沒有原生/C++ 程式碼的專案提供兩個資料欄。

如要切換建構變數,請按一下模組的「Active Build Variant」儲存格,然後從清單中選擇所需變數。

如果專案含有原生/C++ 程式碼,「Build Variants」面板會有三個資料欄:

  • Module
  • Active Build Variant
  • Active ABI

模組的「Active Build Variant」值會決定 IDE 部署至裝置的建構變化版本,並且顯示在編輯器中。以原生模組來說,「Active ABI」值會決定編輯器使用的 ABI,但不會影響部署的內容。

圖 10.「Build Variants」面板會為含有原生/C++ 程式碼的專案新增「Active ABI」欄。

如要變更建構變數或 ABI,請按一下「Active Build Variant」或「Active ABI」資料欄的儲存格,然後從清單中選擇所需變數或 ABI。在您變更所選項目之後,IDE 會自動同步處理專案。變更應用程式或資料庫模組的任一資料欄後,該變更會套用至所有從屬資料列。

根據預設,新專案會設定兩個建構變化版本:偵錯變化版本和發布變化版本。您需要建構發布變化版本,為公開發布應用程式做好準備。如要依據不同的功能或裝置需求,定義應用程式的其他變化版本,您可以定義其他建構變化版本

Android Studio「Build Variants」對話方塊中的衝突

Android Studio 的「Build Variants」對話方塊可能會顯示錯誤訊息,指出建構變數之間的衝突,如下所示:

「Build Variant」視窗顯示變數衝突錯誤

這項錯誤並不表示 Gradle 發生建構問題,而是代表 Android Studio IDE 無法解析所選模組變數之間的符號。

舉例來說,如果您的模組 M1 依附於 M2 模組的 v1 變數,但 M2 已在 IDE 中選取 v2 變數,IDE 中就會有未解析的符號。我們假設 M1 依附於僅由 v1 提供的類別;如果選取 v2,IDE 就無法識別該類別,因而無法解析該類別名稱,以致於在 M1 模組的程式碼中顯示錯誤。

IDE 無法同時載入多個變化版本的程式碼,因此系統會顯示這些錯誤訊息。不過,就您應用程式的建構作業而言,在這個對話方塊中所選的變化版本不會受到任何影響,因為 Gradle 在建構應用程式時,使用的是 Gradle 建構作業方案中指定的原始碼,而非 IDE 目前載入的項目。

變更執行/偵錯設定

當您首次執行應用程式時,Android Studio 會使用預設的執行設定。這個執行設定會指定要透過 APK 或 Android App Bundle 部署應用程式,以及要執行的模組、要部署的套件、要啟動的活動、目標裝置、模擬器設定、Logcat 選項等等。

預設的執行/偵錯設定會建構 APK、啟動預設專案活動,並使用「Select Deployment Target」對話方塊選取目標裝置。如果預設設定不適用於您的專案或模組,您可以自訂執行/偵錯設定,甚至在專案、預設和模組層級建立新設定。

如要編輯執行/偵錯設定,請依序選取「Run」>「Edit Configurations」。詳情請參閱「建立及編輯執行/偵錯設定」一文。