對 Android Emulator 的已知問題進行疑難排解

本頁列出 Android Emulator 的已知問題、解決方法和疑難排解提示。如果您遇到未列於此處的問題,或是無法成功運用本文所述的解決方法,請回報錯誤

一般問題


Google 地圖未顯示在 Android Emulator 擴充控制項中

自 5 月中旬起,34.2.13 以下版本的 Android Emulator 將不再在擴充控制項中提供可用的 Google 地圖。舊版模擬器隨附的 Chromium 版本與 Google 地圖 Javascript API 不相容。

檢查磁碟空間是否足夠

為了避免因可用磁碟空間不足造成當機和停止運作,模擬器會在啟動時檢查可用磁碟空間是否足夠,如果可用空間未達至少 5 GB,則不會啟動。如果模擬器無法啟動,請檢查是否有足夠的可用磁碟空間。

防毒軟體

許多安全與防毒軟體軟體套件都會監控每次的讀寫作業,因此使用這類軟體可能會降低 Android Emulator 等工具的效能。

許多防毒套件可讓您將特定應用程式加入信任應用程式清單,如此一來,列出的應用程式便能在不影響效能的情況下運作。如果儲存或載入 AVD 快照時效能不佳,您可以將 Android Emulator 應用程式新增為防毒軟體中的信任應用程式,藉此提升此效能。

防毒軟體套件之間的效能影響不同。如果除了作業系統內建的防毒軟體外還安裝了其他防毒軟體,您可以執行簡單的測試,藉此判斷哪個防毒軟體會在模擬器載入及儲存相關作業時大幅影響效能。

部分防毒軟體可能不支援 Android Emulator。

如果您使用的是 Avast 軟體,而且在執行 Android Emulator 時發生問題,請停用 Avast「Troubleshooting」設定中的「Use nested virtualization when available」和「Enable Hardware assisted virtualization」。此外,停用 Avast 硬體虛擬化功能後,請確保 HAXM 已再次正確設定,並從 SDK Manager 中完整地重新安裝最新版 HAXM。

在 Windows 上,有時 AVD 會在使用 HAXM 時凍結,只要完全解除安裝 McAfee,即可解決這個問題。

Windows:釋出 RAM 和確認負載

模擬器啟動後,就必須初始化 Android 訪客作業系統的 RAM。在 Windows 中,模擬器會要求 Windows 在啟動時計入全部的訪客記憶體,即使實際作業期間,記憶體仍可能按需求進行分頁。模擬器會在啟動時要求全部的記憶體,原因在於 Windows 較為保守,必須確保擁有足夠的可用實體 RAM 和分頁檔來容納整個可能的工作組。此要求能為最糟的情況做好準備,也就是所有訪客記憶體被快速占用,完全沒有機會捨棄或釋出記憶體。

有時候,模擬器要求 Windows 考量到完整的訪客記憶體大小,要求超過目前的修訂版本限制,也就是所有可用的實體 RAM 和分頁檔總數。在這種情況下,Windows 無法保證最壞的工作集將符合實體 RAM 或分頁檔,且模擬器無法啟動。

在一般情況下,為分頁檔分配的硬碟空間容量加上實體 RAM 就足以滿足模擬器的大多數用途。不過,如果您因為超過確認負載限制而無法啟動模擬器,建議您檢查目前的確認負載。您可以前往 Windows 工作管理員中的「效能」分頁查看這項資訊。如要開啟工作管理員,請按下 Ctrl+Shift+Esc 鍵。

如要透過幾種方法降低超過修訂版本限制的可能性:

  • 先啟動未使用的應用程式和檔案再啟動模擬器,以釋出實體 RAM。
  • 停用第三方記憶體管理和記憶體壓縮公用程式。這些公用程式可能因效能不佳而導致超過確認負載,使系統更接近確認負載限制。
  • 為 Windows 分頁檔使用「系統管理大小」,以便更靈活地動態增加分頁檔大小,進而提高確認負載限制,以因應模擬器和其他應用程式增加的需求。

    如要進一步瞭解確認負載,以及彈性設定最能提升效能的原因,請參閱這篇 Microsoft 文章

多點觸控功能無法在工具視窗中運作

模擬器會在工具視窗中執行,但此時包括雙指平移在內的多點觸控手勢無法運作。如要啟用多點觸控手勢,請在獨立視窗中啟動模擬器

模擬器會降低藍牙音訊輸出的效能

如果您使用藍牙耳機,可能會發現模擬器執行時,藍牙耳機的音訊輸出效能降低 (問題 183139207)。發生這種情況是因為模擬器會在啟動時開啟耳機的麥克風,導致耳機以較差的音質切換至雙工模式。

為避免發生這種情況,在 Android 虛擬裝置 (AVD) 的 config.ini 檔案中加入 hw.audioInput=no,藉此停用模擬器中的麥克風。如要尋找 AVD 的 config.ini 檔案,請在裝置管理工具中前往 AVD,然後點選其溢位選單並選取「Show on Disk」

Android 虛擬裝置無法在 Chrome 作業系統上啟動

在 Chrome 作業系統中,Android 虛擬裝置 (AVD) 可能會因為缺少 libnss3 依附元件而無法啟動。如要順利啟動 AVD,請執行 sudo apt install libnss3 來手動安裝 libnss3 程式庫。

Wear OS 的腕部傾斜感應器警告

在 Wear OS 上,模擬器可能會針對手腕傾斜感應器重複記錄下列訊息: the host has not provided value yet for sensorHandle=16

開發人員可以放心忽略這些警告。

內嵌模擬器視窗過小

如果機器的解析度較低 (例如 1024x768),在 Android Studio 的工具視窗中執行模擬器時,可能難以讀取模擬器畫面。為了讓模擬器獲得更多空間,請關閉「Device Manager」工具視窗 (如果該視窗已開啟)。此外,您還可以透過 Android Studio 提取模擬器視窗。方法是在模擬器視窗中依序點選「Settings」>「View Mode」,然後選取「Window」而非「Dock Pinned」

圖像問題


Android Emulator 更新後執行速度緩慢

許多外部因素可能導致 Android Emulator 在更新後開始緩慢執行。如要進行疑難排解,建議您採取下列步驟:

  • 如果您是使用 Intel GPU (特別是 Intel HD 4000),請務必下載並安裝最新的 Intel 繪圖驅動程式。
  • 如果您的機器同時搭載 Intel GPU 和獨立 GPU,請在裝置管理工具中停用 Intel GPU,以確保您使用的是獨立的 GPU。
  • 使用 -gpu swiftshader 模式執行模擬器。如要進一步瞭解如何在指令列上設定圖形加速選項,請參閱「設定硬體加速」。
  • 如果您不使用 IPv6 連線,請確認路由器並未使用 IPv6 位址。

如果 Android Emulator 的執行速度仍然緩慢,請回報錯誤並加上必要的 Android Emulator 詳細資料,讓我們展開調查。

錯誤:找不到 vulkan-1.dll

如果模擬器因 vulkan-1.dll cannot be found 錯誤而無法啟動,您可能需要更新模擬器。如要在 Android Studio 中更新模擬器,請依序點選「Tools」>「SDK Manager」,然後安裝 Android 平台的最新穩定版本。

或者,如果您不需要任何使用 Vulkan 圖形庫的應用程式,可以透過加上標記 -feature -Vulkan 的指令列啟動模擬器,藉此關閉 Vulkan。

無法建立快照

系統不支援建立內含 Vulkan 圖形庫的模擬器快照。如要在不使用 Vulkan 的情況下執行模擬器,請透過加上 -feature -Vulkan 標記的指令列啟動模擬器。或者,如果您想在開發工作流程中使用快照,可以解除安裝並避免使用內含 Vulkan 的應用程式,例如 API 30 以上版本的 Chrome。

無法正確開啟網頁

從 API 級別 30 開始,Chrome 會使用 Vulkan 圖形庫做為算繪後端,而且可能會在特定機器上發生相容性問題。如果 Chrome 無法正確算繪,請嘗試透過加上 -feature -Vulkan 標記的指令列啟動模擬器

GPU 驅動程式警告 - 改回使用軟體

如果您收到 GPU 驅動程式回溯警告,表示您可能使用的是系統不支援的 GPU。GPU 預設使用自動模式,可能會選用軟體轉譯。如果選擇硬體,應可強制要求 GPU 採用硬體轉譯 (系統仍可能顯示警告訊息)。

如果不是 Play 商店的圖片,您可以依序點選「裝置管理工具」-> 3 點圖示 ->「編輯」,完成這項操作。如果是 Play 商店圖片,您需要手動編輯以下 2 個設定檔:

~/.android/your_avd_name.avd/config.ini

~/.android/your_avd_name.avd/hardware-qemu.ini

並將 hw.gpu.mode 變更為 host

請注意,這麼做可能會降低模擬器的穩定性。詳情請參閱錯誤說明。

模擬器無法在 Windows Chrome 遠端桌面上啟動

如果在 Windows 上使用 Chrome 遠端桌面時,模擬器無法啟動,目前建議的解決方法是使用 -gpu 主機或 -gpu swiftshader 等 GPU 標記。

macOS 在硬體轉譯模式下運作異常

在搭載 Apple Silicon 的 Mac 裝置上,當您選取硬體轉譯模式時,模擬器會使用適用於 Vulkan API 的 MoltenVK 程式庫。雖然 MoltenVK 通常可提供更出色的效能,但這個程式庫不支援所有 Vulkan 功能。如果發生相容性問題 (例如著色器編譯失敗、應用程式中的圖形錯誤或異常終止),請透過 AVD 設定將算繪模式變更為軟體,或使用 -gpu swiftshader 指令列引數。

或者,您也可以使用 -feature -Vulkan 引數停用 Vulkan 支援功能,繼續在 GLES 應用程式上使用硬體加速功能。

網路問題


沒有網際網路連線:找不到伺服器 DNS 位址

如果模擬器無法連線到網際網路,請嘗試使用 -dns-server “2001:4860:4860::8844,2001:4860:4860::8888,8.8.8.8,8.8.4.4” 選項透過指令列啟動模擬器。這個指令提供以半形逗號分隔的 Google 公用 DNS IP 位址清單。如要進一步瞭解 Google 公用 DNS,請參閱裝置的 Google 公用 DNS

沒有網際網路連線:DNS 解析問題

/etc/resolv.conf 檔案中的 DNS 位址有時無法正常運作。如要解決這個問題,請使用 -dns-server 8.8.8.8-dns.server 2001:4860:4860::8888 選項透過指令列啟動模擬器,以連線到僅限 IPv6 的網路。

舊問題 (在已淘汰的模擬器或舊系統上)


無法啟動 AVD

如果系統產生新版模擬器的當機報告,AVD 可能會無法啟動 (問題 #281725854)。但請放心,使用者必須符合以下條件,才會發生此問題:從 Canary 33.x 版更新至 32.1.13 版,且在上次執行 33.x 版時當機,之後也未重新啟動 AVD,因此 %TEMP%/tmp 目錄仍處於開啟狀態。如果遇到這個問題,請嘗試清除 %TEMP% 目錄 (Linux 或 macOS 上為 /tmp)。

Windows:如果 AVD 名稱中含有萬國碼 (Unicode),模擬器將無法啟動

在 Windows 系統中,裝置管理工具會根據預設,在 C:\Users\<name>\.android\avd 中建立 Android 虛擬裝置 (AVD)。不過,如果 AVD 名稱 (<name>) 含有萬國碼 (Unicode),模擬器就無法透過這個預設位置正確啟動 AVD。

這個問題在 Emulator 31.3.6 以上版本中已修正。如要解決這個問題,請依序選取「Tools」>「SDK Manager」,以更新模擬器。

解決這個問題的另一個方法是,在建立 AVD 之前,將環境變數 ANDROID_SDK_HOME 設為自訂目錄。舉例來說,您可以建立 C:\Android\home 目錄,然後將 ANDROID_SDK_HOME 設為這個新建的目錄。詳情請參閱環境變數相關說明。

管理程序無法模擬 x86 Android 系統所需的某些 CPU 功能

管理程序通常無法模擬某些 x86 Android 系統所需的 CPU 功能,例如 Streaming SIMD Extensions (SSE)