Android StudioとAMD製CPU

Android Emulator

Android Studioに付属している公式のエミュレータは仮想化にHAXM(Hardware Accelerated Execution Manager)を利用しており、HAXMはIntel製CPUしかサポートしていませんでした。

AMDユーザはAndroid Emulatorを利用できない状態でしたが、2018年にエミュレータがAMD製CPUをサポートし、Windows Hypervisor Platformを利用することによりエミュレータを利用可能となりました。

※ Windows Hypervisor PlatformはWindows 10 Homeでも利用できます。

Windows ver.1903からのクラッシュ

エミュレータが起動できて順調だったはずですが、残念ながら2019年に新たな問題が生じ、Android Emulatorがクラッシュする状態となっています。

developercommunity.visualstudio.com

実際にエミュレータを起動させてみると一度立ち上がりはしますが、以下のエラーが出て終了してしまいます。※パス等一部修正しています。

00:00  Emulator: ***\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: WHPX: Failed to emulate MMIO access with EmulatorReturnStatus: 2 (InternalEmulationFailure )
00:00  Emulator: ***\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: whpx_vcpu { emulator=***, window_registered=false, interruptable=true, tpr=0, apic_base=fee00900, interruption_pending=false }
00:00  Emulator: ***\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: WHV_MEMORY_ACCESS_CONTEXT { Instruction={ size=16, bytes='A1 F0 00 E0 FE 80 CC 01 A3 F0 00 E0 FE C7 05 50 ' }, AccessInfo={ AccessType=0, GpaUnmapped=1, GvaValid=0, AsUINT32=4 }, Gpa=fee000f0, Gva=0 }
00:00  Emulator: ***\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe: WHPX: Failed to exec a virtual processor
00:00  Emulator: Warning: QObject::~QObject: Timers cannot be stopped from another thread ((null):0, (null))
00:00  Emulator: Process finished with exit code 3

どうもWindows ver.1903からのバグのようで、つぎの(つぎの)アップデートの2020年まで問題は修正されないようです。

2019/07時点での解決策(ただしチャレンジ)

上記でリンクしたコミュニティによると、Windows Insider Programで最新版のビルド18932を適用すれば修正できるようです。

ただし、同ビルドは安定版ではなく、また適用されるとInsider Programの設定をスローに戻せなくなってしまうようなので(戻すにはクリーンインストールが必要)、今後の利用に支障をきたす可能性があります。

blogs.windows.com

実験して支障がないか紹介したいところですが、こわくて実行できませんでした。 業務用のPCはIntel CPUなので、そこまで困っていないというのもあります。肝が据わっていなくてすみません。

AMDのシェアはIntelを追い越す勢いだそうで、AMD好きとしては引き続き応援したいところです。
ただニッチな開発の面でみるとこのような問題がおこる可能性は高いわけで、占有率トップの製品を利用すべきかなと悩んでしまいますね。

追記

最新ビルドをインストールして解決しました。

blog.misatowater.com