Android Emulator 疑難排解- Xamarin | Microsoft Docs

文章推薦指數: 80 %
投票人數:10人

本文說明如何診斷和因應使用Android Emulator 時可能發生的問題。

... 謝謝。

選擇您的開發環境. Visual Studio 2019. Visual Studio for Mac ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 Twitter LinkedIn Facebook 電子郵件 WeChat 目錄 AndroidEmulator疑難排解 發行項 04/02/2022 7位參與者 此頁面有所助益嗎? Yes No 還有其他意見反應嗎? 系統會將意見反應傳送給Microsoft:按下[提交]按鈕,您的意見反應將用來改善Microsoft產品和服務。

隱私權原則。

送出 謝謝。

本文內容 本文描述設定及執行AndroidEmulator時所發生的最常見警告訊息和問題。

此外,還會描述這些錯誤的解決方式,以及可協助您診斷模擬器問題的各種疑難排解祕訣。

Windows上的部署問題 當您部署應用程式時,模擬器可能會顯示一些錯誤訊息。

以下說明最常見的錯誤及解決方式。

部署錯誤 如果您看到有關無法在模擬器上安裝APK或無法執行AndroidDebugBridge(adb)的錯誤,請確認AndroidSDK可連線至您的模擬器。

若要確認模擬器連線,請使用下列步驟: 從AndroidDeviceManager啟動模擬器(選取您的虛擬裝置並按一下[啟動])。

開啟命令提示字元,並移至安裝adb的資料夾。

如果AndroidSDK安裝在其預設位置,則adb位於C:\ProgramFiles(x86)\Android\android-sdk\platform-tools\adb.exe;如果不是,請將此路徑修改為您電腦上AndroidSDK的位置。

輸入以下命令: adbdevices 如果可從AndroidSDK存取模擬器,模擬器應該會顯示在連接的裝置清單中。

例如: Listofdevicesattached emulator-5554device 如果模擬器未出現在此清單中,請啟動[AndroidSDK管理員]、套用所有更新,然後重新嘗試啟動模擬器。

MMIO存取錯誤 若顯示[發生MMIO存取錯誤]訊息,請重新啟動模擬器。

遺漏GooglePlayServices 若您在模擬器中執行的虛擬裝置未安裝GooglePlayServices或GooglePlay商店,則這種情況通常是由於建立的虛擬裝置未包含這些套件所造成。

當您建立虛擬裝置時(請參閱使用AndroidDeviceManager管理虛擬裝置),請務必選取下列其中一或兩個選項: Googleapi–包括虛擬裝置中的GooglePlayServices。

GooglePlay商店–包括虛擬裝置中的GooglePlay商店。

例如,此虛擬裝置將會包含GooglePlayServices和GooglePlay商店: 注意 GooglePlay商店影像僅適用於某些基底裝置類型,例如Pixel、Pixel2、Nexus5和Nexus5X。

效能問題 效能問題通常是由於下列其中一個問題所造成: 模擬器正在執行但未使用硬體加速。

在模擬器中執行的虛擬裝置未使用x86型系統映像。

下列各節會更詳細地說明這些案例。

未啟用硬體加速 如果未啟用硬體加速,從DeviceManager啟動虛擬裝置將會產生包含錯誤訊息的對話方塊,指出未正確設定WindowsHypervisor平台(WHPX): 如果未顯示此錯誤訊息,請參閱下面的硬體加速問題,以了解您可以採取哪些步驟來確認及啟用硬體加速。

已啟用加速但模擬器執行速度太慢 此問題的常見原因是未在您的虛擬裝置(AVD)中使用x86型映像。

當您建立虛擬裝置時(請參閱使用AndroidDeviceManager管理虛擬裝置),請務必選取x86型系統映像: 硬體加速問題 無論您使用Hyper-V或HAXM進行硬體加速,都可能會在電腦上遇到設定問題或與其他軟體衝突。

您可以開啟命令提示字元並輸入下列命令,來確認是否已啟用硬體加速(以及模擬器使用哪種加速方法): "C:\ProgramFiles(x86)\Android\android-sdk\emulator\emulator-check.exe"accel 此命令假設AndroidSDK是安裝在C:\Program檔的預設位置(x86)\android\android-sdk;如果沒有,請將上述路徑修改為您電腦上AndroidSDK的位置。

硬體加速無法使用 如果Hyper-V可供使用,則會從emulator-check.exeaccel命令傳回類似下列範例的訊息: HAXMisnotinstalled,butWindowsHypervisorPlatformisavailable. 如果HAXM可供使用,則會傳回類似下列範例的訊息: HAXMversion6.2.1(4)isinstalledandusable. 如果硬體加速無法使用,則會顯示類似下列範例的訊息(如果模擬器找不到Hyper-V,則會尋找HAXM): HAXMisnotinstalledonthismachine 如果硬體加速無法使用,請參閱使用Hyper-V加速,以了解如何在您的電腦上啟用硬體加速。

不正確的BIOS設定 如果未正確設定BIOS支援硬體加速,當您執行emulator-check.exeaccel命令時,則會顯示類似下列範例的訊息: VTfeaturedisabledinBIOS/UEFI 若要修正此問題,請讓您的電腦重新開機進入BIOS並啟用下列選項: 虛擬化技術(視主機板製造商而定,可能會有不同的標籤)。

硬體強制執行資料執行防止。

如果已啟用硬體加速並正確設定BIOS,模擬器應該會使用硬體加速順利執行。

不過,由於Hyper-V和HAXM的特定問題,可能仍會造成問題,如下所述。

Hyper-V問題 在某些情況下,在[開啟或關閉Windows功能]對話方塊中同時啟用Hyper-V和WindowsHypervisor平台可能會無法適當地啟用Hyper-V。

若要確認是否已啟用Hyper-V,請使用下列步驟: 在Windows搜尋方塊中,輸入powershell。

以滑鼠右鍵按一下搜尋結果中的WindowsPowerShell,然後選取[以系統管理員身分執行]。

在PowerShell主控台中,輸入下列命令: Get-WindowsOptionalFeature-FeatureNameMicrosoft-Hyper-V-All-Online 如果未啟用Hyper-v,則會顯示類似下列範例的訊息,指出已停用hyper-v的狀態: FeatureName:Microsoft-Hyper-V-All DisplayName:Hyper-V Description:Providesservicesandmanagementtoolsforcreatingandrunningvirtualmachinesandtheirresources. RestartRequired:Possible State:Disabled CustomProperties: 在PowerShell主控台中,輸入下列命令: Get-WindowsOptionalFeature-FeatureNameHypervisorPlatform-Online 如果未啟用程式管理器,將會顯示類似下列範例的訊息,指出Hypervisor平臺的狀態已停用: FeatureName:HypervisorPlatform DisplayName:WindowsHypervisorPlatform Description:EnablesvirtualizationsoftwaretorunontheWindowshypervisor RestartRequired:Possible State:Disabled CustomProperties: 如果未啟用Hyper-V及/或Hypervisor平台,請使用下列PowerShell命令予以啟用: Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Hyper-V-All Enable-WindowsOptionalFeature-Online-FeatureNameHypervisorPlatform-All 這些命令完成之後,請重新開機。

如需啟用Hyper-V的詳細資訊(包括使用部署映像服務與管理工具啟用Hyper-V的技術),請參閱安裝Hyper-V。

HAXM問題 HAXM問題通常是與其他虛擬化技術發生衝突、設定不正確或HAXM驅動程式過期所導致的結果。

HAXM處理序未執行 如果已安裝HAXM,您可以開啟命令提示字元並輸入下列命令,來確認HAXM處理序是否正在執行: scqueryintelhaxm 如果HAXM處理序正在執行,您應該會看到類似下列結果的輸出: SERVICE_NAME:intelhaxm TYPE:1KERNEL_DRIVER STATE:4RUNNING (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE:0(0x0) SERVICE_EXIT_CODE:0(0x0) CHECKPOINT:0x0 WAIT_HINT:0x0 如果STATE不是設定為RUNNING,請參閱STATE(如何使用IntelHardwareAcceleratedExecutionManager)來解決問題。

HAXM虛擬化衝突 HAXM可能與其他使用虛擬化的技術發生衝突,例如Hyper-V、WindowsDeviceGuard及某些防毒軟體: hyper-v–如果您在2018年4月更新Windows10之前使用Windows版本(組建1803)和hyper-v已啟用,請依照停用hyper-v的步驟執行,以啟用HAXM。

deviceguard–deviceguard和CredentialGuard可防止在Windows的電腦上停用hyper-v。

若要停用DeviceGuard和CredentialGuard,請參閱停用DeviceGuard。

防毒軟體–如果您正在執行使用硬體輔助虛擬化((例如Avast))、停用或卸載此軟體、重新開機,然後重試Android模擬器的防毒軟體。

不正確的BIOS設定 如果您在WindowsPC上使用HAXM,除非在BIOS中啟用虛擬化技術(IntelVT-x),否則HAXM將無法運作。

如果已停用VT-x,則當您嘗試啟動AndroidEmulator時,會收到類似下列錯誤: 此電腦符合HAXM的要求,但未開啟Intel虛擬化技術(VT-x)。

若要修正此錯誤,請讓電腦開機進入BIOS,同時啟用VT-x和SLAT(第二層位址轉譯),然後讓電腦重新啟動回到Windows。

停用Hyper-V 如果您使用的是Windows1020184月更新(1803組建)以前的Windows版本,而且啟用了HYPER-V,您必須停用HYPER-V並重新啟動電腦,才能安裝及使用HAXM。

如果您使用Windows1020184月更新(1803組建)或更新版本,AndroidEmulator27.2.7版或更新版本可以使用HYPER-V(不是HAXM)為硬體加速,因此沒有必要停用HYPER-V。

您可以遵循下列步驟從控制台停用Hyper-V: 在Windows搜尋方塊中輸入Windows功能,然後在搜尋結果中選取[開啟或關閉Windows功能]。

取消核取[Hyper-V]: 重新啟動電腦。

或者,您可以使用下列PowerShell命令來停用Hyper-VHypervisor: Disable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Hyper-V-Hypervisor IntelHAXM和MicrosoftHyper-V不可同時啟動。

不幸的是,不重新啟動電腦就沒有辦法在Hyper-V和HAXM之間進行切換。

如果已啟用DeviceGuard和CredentialGuard,在某些情況下使用上述步驟將無法成功停用Hyper-V。

如果您無法停用Hyper-V(或是在停用後仍然無法安裝HAXM),請使用下一節的步驟來停用DeviceGuard和CredentialGuard。

停用DeviceGuard DeviceGuard和CredentialGuard可能會防止在Windows電腦上停用Hyper-V。

此情況通常會發生在已加入網域且由組織進行設定和控制的電腦上。

在Windows10上,使用下列步驟來查看DeviceGuard是否正在執行: 在Windows搜尋方塊中輸入系統資訊,然後在搜尋結果中選取[系統資訊]。

在[系統摘要]中,查看[DeviceGuard虛擬化型安全性]是否存在且處於[執行中]狀態: 如果已啟用DeviceGuard,請使用下列步驟來停用它: 確認[Hyper-V]已停用(位於[開啟或關閉Windows功能]下方),如上一節所述。

在Windows的搜尋方塊中,輸入gpedit.msc,然後選取[編輯群組原則]搜尋結果。

這些步驟會啟動[本機群組原則編輯器]。

在本機群組原則編輯器中,流覽至[電腦設定系統管理範本系統>裝置防護: 將[開啟虛擬化型安全性]變更為[已停用](如上所示),然後結束[本機群組原則編輯器]。

在Windows搜尋方塊中,輸入cmd。

當[命令提示字元]在搜尋結果中出現時,以滑鼠右鍵按一下[命令提示字元],然後選取[以系統管理員身分執行]。

複製下列命令,並將之貼入命令提示字元視窗(如果磁碟機Z:正在使用中,請改為挑選未使用的磁碟機代號): mountvolZ:/s copy%WINDIR%\System32\SecConfig.efiZ:\EFI\Microsoft\Boot\SecConfig.efi/Y bcdedit/create{0cb3b571-2f2e-4343-a879-d86a476d7215}/d"DebugTool"/applicationosloader bcdedit/set{0cb3b571-2f2e-4343-a879-d86a476d7215}path"\EFI\Microsoft\Boot\SecConfig.efi" bcdedit/set{bootmgr}bootsequence{0cb3b571-2f2e-4343-a879-d86a476d7215} bcdedit/set{0cb3b571-2f2e-4343-a879-d86a476d7215}loadoptionsDISABLE-LSA-ISO,DISABLE-VBS bcdedit/set{0cb3b571-2f2e-4343-a879-d86a476d7215}devicepartition=Z: mountvolZ:/d 重新啟動您的電腦。

在開機畫面上,您應該會看到類似下列訊息的提示: DoyouwanttodisableCredentialGuard?\(是否要停用CredentialGuard?\) 出現提示時,請按下指定的按鍵來停用CredentialGuard。

重新啟動電腦之後,再次檢查以確定Hyper-V已停用(如先前步驟中所述)。

如果Hyper-V仍未停用,您已加入網域之電腦的原則可能正在阻止您停用DeviceGuard或CredentialGuard。

在此情況下,您可以要求網域管理員給予特例,讓您能夠選擇不使用CredentialGuard。

或者,如果您必須使用HAXM,您可以使用未加入網域的電腦。

其他疑難排解祕訣 下列建議在診斷AndroidEmulator問題方面通常很有幫助。

從命令列啟動模擬器 如果模擬器並未執行,您可以從命令列將它啟動(而不是從VisualStudio中)來檢視其輸出。

一般而言,AndroidEmulatorAVD映像會儲存在下列位置(請以您的Windows使用者名稱取代username): C:\Users\使用者名稱\.android\avd 您可以傳入AVD的資料夾名稱來使用此位置的AVD映像啟動模擬器。

例如,此命令會啟動名為Pixel_API_27的AVD: "C:\ProgramFiles(x86)\Android\android-sdk\emulator\emulator.exe"-partition-size512-no-boot-anim-verbose-featureWindowsHypervisorPlatform-avdPixel_API_27-propmonodroid.avdname=Pixel_API_27 此範例假設AndroidSDK是安裝在C:\Program檔案的預設位置(x86)\android\android-sdk;如果沒有,請將上述路徑修改為您電腦上AndroidSDK的位置。

當您執行此命令時,它會在模擬器啟動時產生多行輸出。

具體而言,如果硬體加速已啟用並正常運作(在此範例中使用HAXM進行硬體加速),則會列印類似下列範例的程式碼行: emulator:CPUAcceleration:working emulator:CPUAccelerationstatus:HAXMversion6.2.1(4)isinstalledandusable. 檢視DeviceManager記錄 通常,您可以檢視DeviceManager記錄來診斷模擬器問題。

這些記錄會寫入下列位置: C:\Users\使用者名稱\AppData\Local\Xamarin\Logs\16。

0 您可以使用文字編輯器(例如[記事本])來檢視每個DeviceManager.log檔案。

下列範例記錄項目指出在電腦上找不到HAXM: ComponentIntelx86EmulatorAccelerator(HAXMinstaller)r6.2.1[Extra:(IntelCorporation)]notpresentonthesystem macOS上的部署問題 當您部署應用程式時,模擬器可能會顯示一些錯誤訊息。

以下說明最常見的錯誤及解決方式。

部署錯誤 如果您看到有關無法在模擬器上安裝APK或無法執行AndroidDebugBridge(adb)的錯誤,請確認AndroidSDK可連線至您的模擬器。

若要確認連線,請使用下列步驟: 從AndroidDeviceManager啟動模擬器(選取您的虛擬裝置並按一下[啟動])。

開啟命令提示字元,並移至安裝adb的資料夾。

如果AndroidSDK安裝在其預設位置,則adb會位於~/Library/Developer/Xamarin/android-sdk-macosx/platform-tools/adb;如果不是,請將此路徑修改為您電腦上的AndroidSDK位置。

輸入以下命令: adbdevices 如果可從AndroidSDK存取模擬器,模擬器應該會顯示在連接的裝置清單中。

例如: Listofdevicesattached emulator-5554device 如果模擬器未出現在此清單中,請啟動[AndroidSDK管理員]、套用所有更新,然後重新嘗試啟動模擬器。

MMIO存取錯誤 如果顯示[發生MMIO存取錯誤],請重新啟動模擬器。

遺漏GooglePlayServices 如果您在模擬器中執行的虛擬裝置未安裝GooglePlayServices或GooglePlay商店,這種情況通常是由於建立的虛擬裝置未包含這些套件所造成。

當您建立虛擬裝置時(請參閱使用AndroidDeviceManager管理虛擬裝置),請務必選取下列其中一或兩項: Googleapi–包括虛擬裝置中的GooglePlayServices。

GooglePlay商店–包括虛擬裝置中的GooglePlay商店。

例如,此虛擬裝置將會包含GooglePlayServices和GooglePlay商店: 注意 GooglePlay商店影像僅適用於某些基底裝置類型,例如Pixel、Pixel2、Nexus5和Nexus5X。

效能問題 效能問題通常是由於下列其中一個問題所造成: 模擬器正在執行但未使用硬體加速。

在模擬器中執行的虛擬裝置未使用x86型系統映像。

下列各節會更詳細地說明這些案例。

未啟用硬體加速 如果未啟用硬體加速,當您將應用程式部署至AndroidEmulator時,則會快顯包含訊息的對話方塊,例如[裝置會在未加速狀態下執行]。

如果您不確定電腦上是否已啟用硬體加速(或您想要了解哪個技術提供加速),請參閱下面的硬體加速問題,以了解您可以採取哪些步驟來確認及啟用硬體加速。

已啟用加速但模擬器執行速度太慢 此問題的常見原因是未在虛擬裝置中使用x86型映像。

當您建立虛擬裝置時(請參閱使用AndroidDeviceManager管理虛擬裝置),請務必選取x86型系統映像: 硬體加速問題 無論您使用Hypervisor架構或HAXM進行模擬器的硬體加速,都可能會遇到由於安裝問題或macOS版本已過期所造成的問題。

下列各節可協助您解決此問題。

Hypervisor架構問題 如果您在新版Mac上使用macOS10.10或更新版本,AndroidEmulator會自動使用Hypervisor架構進行硬體加速。

不過,某些舊版Mac或執行macOS10.10以前版本的Mac可能不會提供Hypervisor架構支援。

若要判斷您的Mac是否支援Hypervisor架構,請開啟終端機並輸入下列命令: sysctlkern.hv_support 如果您的Mac支援Hypervisor架構,上述命令將會傳回下列結果: kern.hv_support:1 如果您的Mac上沒有Hypervisor架構可用,您可以遵循使用HAXM加速中的步驟執行,以改用HAXM進行加速。

HAXM問題 如果AndroidEmulator未正確啟動,此問題通常是由於HAXM的相關問題所造成。

HAXM問題通常是與其他虛擬化技術發生衝突、設定不正確或HAXM驅動程式過期所導致的結果。

請使用安裝HAXM中所述的步驟,來嘗試重新安裝HAXM驅動程式。

其他疑難排解祕訣 下列建議在診斷AndroidEmulator問題方面通常很有幫助。

從命令列啟動模擬器 如果模擬器並未執行,您可以從命令列將它啟動(而不是從VisualStudioforMac中)來檢視其輸出。

一般而言,AndroidEmulatorAVD映像會儲存在下列位置: ~/.android/avd 您可以傳入AVD的資料夾名稱來使用此位置的AVD映像啟動模擬器。

例如,此命令會啟動名為Pixel_2_API_28的AVD: ~/Library/Developer/Xamarin/android-sdk-macosx/emulator/emulator-partition-size512-no-boot-anim-verbose-featureWindowsHypervisorPlatform-avdPixel_2_API_28-propmonodroid.avdname=Pixel_2_API_28 如果AndroidSDK安裝在其預設位置,則模擬器會位於~/Library/Developer/Xamarin/android-sdk-macosx/emulator目錄;如果不是,請將此路徑修改為您電腦上的AndroidSDK位置。

當您執行此命令時,它會在模擬器啟動時產生多行輸出。

具體而言,如果硬體加速已啟用並正常運作(在此範例中使用Hypervisor架構進行硬體加速),則會列印類似下列範例的程式碼行: emulator:CPUAcceleration:working emulator:CPUAccelerationstatus:Hypervisor.FrameworkOSXVersion10.13 檢視DeviceManager記錄 通常,您可以檢視DeviceManager記錄來診斷模擬器問題。

這些記錄會寫入下列位置: ~/Library/Logs/XamarinDeviceManager 您可以按兩下AndroidDevices.log檔案以在主控台應用程式中開啟它來檢視每個檔案。

下列範例記錄項目指出找不到HAXM: ComponentIntelx86EmulatorAccelerator(HAXMinstaller)r6.2.1[Extra:(IntelCorporation)]notpresentonthesystem 本文內容



請為這篇文章評分?