設定 Android Emulator 的硬體加速功能

如果模擬器可以使用電腦的硬體 (例如 CPU、GPU 和數據機),而不是以純軟體的形式執行,就能達到最佳效能。使用電腦硬體改善效能的功能稱為「硬體加速」

模擬器可利用硬體加速功能,透過以下兩種主要方式改善使用體驗:

  • 用於改善螢幕算繪的圖形加速功能
  • 可加快執行速度的虛擬機器 (VM) 加速功能

大多數的電腦會依預設啟用硬體加速功能。如果您的電腦未啟用這項功能,請參考本頁說明,瞭解如何設定圖形和虛擬機器 (VM) 加速功能,提升模擬器的效能。

設定圖形加速功能

圖形加速功能會使用電腦硬體 (通常是 GPU) 加快螢幕算繪速度。Android 裝置會使用 OpenGL 嵌入系統 (OpenGL ES 或 GLES) 算繪螢幕上的 2D 和 3D 圖形。

在 AVD Manager 中建立 Android 虛擬裝置 (AVD) 時,您可以指定模擬器要使用硬體或軟體模擬 AVD 的 GPU。我們建議使用速度通常會較快的硬體加速功能。然而,假使電腦使用的是與模擬器不相容的圖形驅動程式,您可能必須使用軟體加速功能。

根據預設,模擬器會基於您的電腦設定判斷是否要使用硬體或軟體圖形加速功能。假使您的 GPU 硬體和驅動程式相容,模擬器會使用 GPU。否則,模擬器會透過電腦的 CPU 使用軟體加速功能模擬 GPU 處理作業。

假使您是透過指令列啟動模擬器,可以覆寫該虛擬裝置執行個體中 AVD 的圖形加速功能設定。

需求條件

如要使用圖形加速功能,您的開發環境必須具備下列項目:

  • SDK 工具:建議使用最新版本 (最低為版本 17)
  • SDK 平台:建議使用最新版本 (最低為 Android 4.0.3,修訂版本 3)

在 AVD Manager 中設定圖形加速功能

如要設定 AVD 的圖形加速功能,請依照下列步驟操作:

  1. 開啟 AVD Manager
  2. 建立新的 AVD編輯現有的 AVD
  3. 「Verify Configuration」視窗中找到「Emulated Performance」部分。
  4. 選取「Graphics:」選項的值。
  5. 按一下 Finish (完成)。

透過指令列設定圖形加速功能

如要在透過指令列執行 AVD 時指定圖形加速功能類型,請加入 -gpu 選項,如以下範例所示:

emulator -avd avd_name -gpu mode [{-option [value]} ... ]

mode 的值可設為下列其中一個選項:

  • auto:讓模擬器根據電腦的設定選擇硬體或軟體圖形加速功能。
  • host:請使用電腦上的 GPU 進行硬體加速功能。這個選項通常為模擬器提供最高的圖像品質和效能。然而,假如圖形驅動程式在算繪 OpenGL 時發生問題,您可能需要使用 swiftshader_indirectangle_indirect 選項。
  • swiftshader_indirect:使用 SwiftShader 的 Quick Boot 相容變化版本,透過軟體加速功能算繪圖像。如果電腦無法使用硬體加速功能,建議您改用這個選項替代 host 模式。
  • angle_indirect:(僅限 Windows) 使用 ANGLE Direct3D 的 Quick Boot 相容變化版本,透過軟體加速功能算繪圖像。如果電腦無法使用硬體加速功能,建議您改用這個選項替代 host 模式。在大多數情況下,ANGLE 的效能會與使用 host 模式相似,因為 ANGLE 使用的是 Microsoft DirectX,而非 OpenGL。

    在 Windows 上,Microsoft DirectX 驅動程式會發生的問題通常比 OpenGL 驅動程式少。這個選項使用 Direct3D 11,需要搭配 Windows 7 平台更新的 Windows 10、Windows 8.1 或 Windows 7 SP1。

  • guest:使用訪客端軟體算繪功能。這個選項提供模擬器最低的圖像品質和效能。

下列 mode 選項已淘汰:

  • swiftshader:已於版本 27.0.2 淘汰,請改用 swiftshader_indirect
  • angle:已於版本 27.0.2 淘汰,請改用 angle_indirect (僅限 Windows)。
  • mesa:已於版本 25.3 淘汰,改用 swiftshader_indirect

啟用 Android UI 的 Skia 算繪功能

使用 API 級別 27 或以上的映像檔時,模擬器可以透過 Skia 算繪 Android UI。Skia 可幫助模擬器以更順暢且有效率的方式算繪圖像。

如要啟用 Skia 算繪功能,請在 adb 殼層中使用下列指令:

su
setprop debug.hwui.renderer skiagl
stop
start

設定 VM 加速功能

VM 加速功能會運用電腦的處理器,大幅提升模擬器的執行速度。名為「管理程序」的工具會透過電腦處理器提供的虛擬化擴充功能管理這種互動。本節概述使用 VM 加速功能的需求條件,並說明如何在每個作業系統上設定 VM 加速功能。

一般規定

如要搭配模擬器使用 VM 加速功能,您的電腦必須符合本節的一般需求條件。您的電腦也必須符合作業系統的其他需求。

開發環境需求

如要使用 VM 加速功能,開發環境必須符合下列需求:

  • SDK 工具:最低為版本 17;建議使用 26.1.1 以上版本
  • 採用 x86 架構系統映像檔的 AVD,適用於 Android 2.3.3 (API 級別 10) 以上版本

虛擬化擴充功能需求

除了開發環境外,電腦的處理方也必須支援下列其中一種虛擬化擴充功能技術:

  • Intel 虛擬化技術 (VT、VT-x、vmx) 擴充功能
  • AMD 虛擬化 (AMD-V、SVM) 擴充功能

大多數現代化處理器都支援這些虛擬化擴充功能。假使您不確定自己的處理器是否支援這些擴充功能,請前往製造商網站查看處理器的規格。假使您的處理器不支援這些擴充功能,則無法使用 VM 加速功能。

限制

VM 加速功能會受到下列限制:

  • 您無法在其他的 VM 中執行 VM 加速功能模擬器,例如由 VirtualBox、VMWare 或 Docker 代管的 VM。您必須直接在主機電腦上執行 VM 加速功能模擬器。
  • 視作業系統和管理程序而定,在執行 VM 加速功能模擬器時,您無法採用使用其他虛擬化技術的軟體。舉例來說,VirtualBox、VMWare 和 Docker 目前使用的是不同的虛擬化技術,因此,您無法與加速模擬器同時執行這些項目。

管理程序簡介

VM 加速功能需要使用「管理程序」,這項工具會使用電腦處理器提供的虛擬化擴充功能。

假使缺少管理程序和 VM 加速功能,模擬器就必須按區塊逐一翻譯 VM 的機器碼,才能符合主機電腦的架構。整個程序可能相當慢。採用管理程序時,VM 和主機電腦的架構即為相符,因此模擬器可透過管理程序直接在主機處理器上執行程式碼。這項改善措施會大幅提升模擬器的速度和效能。

最能發揮效用的管理程序取決於電腦的作業系統和設定。詳情請參閱下列各節的說明:

檢查是否已安裝管理程序

您可以使用模擬器 -accel-check 指令列選項,檢查電腦目前是否已安裝管理程序。

下列範例說明如何使用模擬器 accel-check 選項。在每個範例中,Sdk 是 Android SDK 的位置:

Windows:

c:\Users\janedoe\AppData\Local\Android> Sdk\emulator\emulator -accel-check
accel:
0
HAXM version 7.3.2 (4) is installed and usable.
accel

macOS:

janedoe-macbookpro:Android janedoe$ ./Sdk/emulator/emulator -accel-check
accel:
0
HAXM version 7.3.2 (4) is installed and usable.
accel

Linux:

janedoe:~/Android$ ./Sdk/emulator/emulator -accel-check
accel:
0
KVM (version 12) is installed and usable.

在 Windows 上設定 VM 加速功能

Windows 上的 VM 加速功能可採用下列三種管理程序之一:

  • Intel 硬體加速執行管理器 (HAXM)
  • AMD 處理器適用的 Android Emulator 管理程序驅動程式
  • Windows Hypervisor Platform (WHPX)

在 Windows 中選擇管理程序

請利用下列條件判斷要使用哪一個管理程序。以下章節會說明使用各管理程序設定 VM 加速功能的程序。

條件 管理程序
搭載 Intel 處理器,且不需要同時與 Android Emulator 執行 Hyper-V。 使用 Intel HAXM
搭載 Intel 處理器,並需要同時使用 Android Emulator 執行 Hyper-V。 使用 WHPX
您使用的是 AMD 處理器,且不需要同時使用 Android Emulator 執行 Hyper-V。 使用 AMD 處理器的 Android Emulator 管理程序驅動程式
搭載 AMD 處理器,需要同時在 Android Emulator 上執行 Hyper-V。 使用 WHPX

停用 Hyper-V 時再次確認

您必須先停用 Hyper-V,才能使用 Intel HAXM 或 AMD 處理器適用的 Android Emulator 管理程序驅動程式。然而,在「Windows 功能」對話方塊中取消選取「Hyper-V」可能無法保證會停用 Hyper-V。

Windows 10 中有許多功能會以隱含形式啟用 Hyper-V 功能。啟用這些功能時,使用者甚至可能不知道 Hyper-V 已啟用。這些功能包括:

  • 虛擬機器平台
  • Windows Hypervisor Platform
  • Windows 沙箱
  • 核心隔離
  • Credential Guard

此外,Linux 版本 2 的 Windows 子系統需要使用虛擬機器平台,也表示其需要使用 Hyper-V。此處所列並非完整清單;如果您發現應該加入的項目,歡迎透過回報錯誤的方式通知我們。

停用 Hyper-V 時,請再次確認上述功能是否也已停用。請參閱 Microsoft 說明文件和下列範例,瞭解如何停用各項功能。

部分平台在關閉時無法立即停用 Hyper-V,當此情況發生時,Windows 作業系統不會傳回錯誤,而且 Hyper-V 在「Windows 功能」對話方塊中會顯示為停用。假使發生這類問題,請透過 Microsoft 的 Issue Tracker 回報錯誤。

在 Windows 上使用 Intel HAXM 設定 VM 加速功能

電腦必須符合下列規定,才能安裝並使用 Intel HAXM:

  • 採用搭載虛擬化技術 (VT-x)、Intel EM64T (Intel 64) 功能的 Intel 處理器,然後執行停用 (XD) 位元功能
  • 64 位元的 Windows 10、Windows 8 或 Windows 7 (或是搭載 64 位元處理器的 32 位元版本作業系統)
  • 在 Windows 10 或 8 上,您必須在「Windows 功能」對話方塊中關閉 Hyper-V。

如要安裝 Intel HAXM 驅動程式,請按照下列步驟操作:

  1. 開啟 SDK Manager
  2. 按一下「SDK Update Sites」分頁標籤,然後選取「Intel HAXM」
  3. 按一下「OK」
  4. 下載完畢後,執行安裝程式。

    一般來說,您可以在下列位置找到安裝程式:sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe

  5. 使用精靈完成安裝作業。

  6. 安裝 Intel HAXM 之後,請使用以下指令列指令,確認虛擬化驅動程式是否正常運作:

    sc query intelhaxm
    

    隨即顯示的狀態訊息包含下列資訊:

    SERVICE_NAME: intelhaxm
           ...
           STATE              : 4  RUNNING
           ...
    

詳情請參閱在 Windows 上使用 Intel HAXM 的安裝操作說明

如要調整 Intel HAXM 核心擴充功能可用的記憶體量,請再次執行安裝程式。

如要解除安裝 Intel HAXM,請使用安裝程式或 Windows 控制台。解除安裝 Intel HAXM 前,請關閉所有執行中的 x86 模擬器。

使用 AMD 處理器適用的 Android Emulator 管理程序驅動程式在 Windows 上設定 VM 加速功能

電腦必須符合下列需求,才能安裝及使用適用於 AMD 處理器的 Android Emulator 管理程序驅動程式:

  • 採用安全虛擬機器 (SVM) 技術的 AMD 處理器
  • 64 位元的 Windows 10、Windows 8 或 Windows 7 (不支援 32 位元的 Windows)
  • 在 Windows 10 或 8 上,您必須在「Windows 功能」對話方塊中關閉 Hyper-V。

AMD 處理器適用的 Android Emulator 管理程序驅動程式可透過 Android Studio 4.0 Canary 5 以上版本中的 SDK Manager,或從 GitHub 中進行安裝。

如要從 SDK Manager 安裝,請按照下列步驟操作:

  1. 依序選取「Tools」>「SDK Manager」。
  2. 按一下「SDK Tools」分頁標籤,然後選取「Android Emulator Hypervisor Driver for AMD Processors」
  3. 按一下「OK」,下載並安裝 AMD 處理器適用的 Android Emulator 管理程序驅動程式。
  4. 安裝完成後,請使用以下指令列指令,確認驅動程式是否正常運作:

    sc query gvm
    

    隨即顯示的狀態訊息包含下列資訊:

    SERVICE_NAME: gvm
           ...
           STATE              : 4  RUNNING
           ...
    

    下列錯誤訊息表示 BIOS 中未啟用 SVM,或 Hyper-V 未停用:

    SERVICE_NAME: gvm
           ...
           STATE              : 1  STOPPED
           WIN32_EXIT_CODE    : 4294967201 (0xffffffa1)
           ...
    

您也可以透過 GitHub 下載並安裝 AMD 處理器適用的 Android Emulator 管理程序驅動程式。解壓縮驅動程式套件後,請以管理員權限在指令列中執行 silent_install.bat

安裝成功後,系統會顯示以下輸出內容:

升級安裝會產生下列輸出內容,其中包含有關已解除安裝舊版驅動程式的訊息:

以管理員權限在指令列中執行下列指令,即可解除安裝 AMD 處理器適用的 Android Emulator 管理程序驅動程式:

   sc stop gvm
   sc delete gvm

使用 Windows Hypervisor Platform 設定 VM 加速功能

電腦必須符合下列要求,才能啟用 WHPX:

如要在 Windows 上安裝 WHPX,請按照下列步驟操作:

  1. 在 Windows 桌面的 Windows 圖示上按一下滑鼠右鍵,然後選取「應用程式與功能」
  2. 在「Related Settings」下,按一下「Programs and Features」
  3. 按一下「開啟或關閉 Windows 功能」
  4. 選取「Windows Hypervisor Platform」

  5. 按一下「確定」

  6. 安裝完成後,請重新啟動電腦。

在 macOS 上設定 VM 加速功能

在 Mac OS X v10.10 Yosemite 以上版本中,Android Emulator 預設會使用內建的 Hypervisor.Framework,如果 Hypervisor.Framework 無法進行初始化,即會改用 Intel HAXM。

如要在無法使用 Hypervisor.Framework 的情況下使用 macOS 的 VM 加速功能,您必須安裝 Intel HAXM 核心擴充功能。

如要安裝 Intel HAXM 核心擴充功能,請按照下列步驟操作:

  1. 開啟 SDK Manager
  2. 按一下「SDK Update Sites」分頁標籤,然後選取「Intel HAXM」
  3. 按一下「OK」
  4. 下載完畢後,執行安裝程式。

    一般來說,您可以在下列位置找到安裝程式:sdk/extras/intel/Hardware_Accelerated_ExecutionManager/IntelHAXMversion.dmg

  5. 按照畫面上的指示完成安裝程序。

  6. 安裝完成後,使用以下指令列指令,確認新的核心擴充功能運作正常:

    kextstat | grep intel
    

    隨即顯示的狀態訊息包含以下擴充功能名稱,表示已載入核心擴充功能:

    com.intel.kext.intelhaxm
    

詳情請參閱 Intel HAXM 安裝操作說明

如要調整 Intel HAXM 核心擴充功能可用的記憶體量,請再次執行安裝程式。

如要停止使用 Intel HAXM 核心擴充功能,請將其解除安裝。解除安裝前,請先關閉所有執行中的 x86 模擬器,然後在指令列中執行下列指令:

sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh

在 Linux 上設定 VM 加速功能

Linux 系統可透過 KVM 軟體套件支援 VM 加速功能。按照操作說明在 Linux 系統上安裝 KVM,並確認 KVM 已啟用。如果是 Ubuntu 系統,請參閱 Ubuntu KVM 安裝相關說明。

需求條件

執行 KVM 需要特定的使用者授權。請確認您具備 KVM 安裝操作說明中指定的充分權限。

如要在 Linux 上使用 VM 加速功能,您的電腦也必須符合下列條件:

  • 適用於 Intel 處理器:支援虛擬化技術 (VT-x)、Intel EM64T (Intel 64) 功能,以及已啟用執行停用 (XD) 位元功能。
  • AMD 處理器:支援 AMD 虛擬化 (AMD-V)。

查看 Linux 目前是否已安裝 KVM

模擬器 -accel-check 指令列選項可讓您檢查是否已安裝 KVM。或者,您也可以安裝包含 kvm-ok 指令的 cpu-checker 套件。

下列範例說明如何使用 kvm-ok 指令。

  1. 安裝 cpu-checker 套件:

    $ sudo apt-get install cpu-checker
    $ egrep -c '(vmx|svm)' /proc/cpuinfo
    

    1 或以上的輸出內容表示已支援虛擬化。輸出為 0 表示 CPU 不支援硬體虛擬化。

  2. 執行 kvm-ok 指令:

    $ kvm-ok
    

    預期的輸出內容:

    INFO: /dev/kvm exists
    KVM acceleration can be used
    

    如果出現以下錯誤訊息,表示您還是可以執行虛擬機器。但是,沒有 KVM 擴充功能,虛擬機器的速度會變慢。

    INFO: Your CPU does not support KVM extensions
    KVM acceleration can NOT be used
    

在 Linux 上安裝 KVM

使用下列指令安裝 KVM:

Cosmic (18.10) 以上版本:

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

Lucid (10.04) 以上版本:

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Karmic (9.10) 以下版本:

sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils