Android
Xamarin
AMD
Hyper-V
VisualStudio2017

AMD CPU で Hyper-V を使って Android AVD を高速化する

約 10 年振りにノートパソコンを買い替えました。

その際 VisualStudio2017 + Xamarin.Android の開発環境に手間取ったので、開発環境構築メモ。


今回やりたいこと

AMD CPU で Android AVD の高速化を目指します。

AMD って Hyper-V が利用できないと思っていたのですが、ここ最近でできるようになっていたんですね。


「Android Emulator」がAMD製CPUをサポート、「Hyper-V」での利用も可能に

https://forest.watch.impress.co.jp/docs/news/1132197.html



まとめ

思ったより手順が多かったのですが、かなり高速化されました。

スペックや設定にもよると思いますが、私の環境ですとエミュレータの起動だけなら 10 秒かからない感じです。


環境

PC スペックは以下の通りです。ThinkPad E585 の SSD 最小構成にメモリ増設してる感じです。

対象
仕様

CPU
AMD Ryzen 2500U 2GHz

Memory
16GB (8GB+8GB)

OS
Windows10 Home

ひと昔くらい前の個人サイトって自己紹介欄によく PC スペック書いてましたよね。

どうでもよい話ですが。

環境は以下の通りです。


  • Visual Studio Community 2017 v15.9.4

  • .NET Framework 4.7.03056

  • Xamarin 4.12.3.77

  • Android Emulator x86 API24


手順

以下の順で仮想環境を有効化していき Hyper-V を実現していきます。

色んな記事を参考にしたので余分な手順があったらすみません。


  1. BIOS で有効化

  2. Windows で有効化

  3. Vistual Studio で有効化

  4. HAXM で有効化


1.BIOS で有効化

タスクマネージャで CPU の仮想化が有効の方はこの手順不要です。

私は最初無効でしたので実施。

TaskManager_CPU_Virtual_Off.png

実は初 SSD ユーザなのですが、OS の起動ってめちゃ早いじゃないですか。

ですので SSD だと BIOS への入りが間に合わない場合があるようです。そのような場合はコントロールパネルから再起動時に BIOS に入ることができます。

Windows10 のコントロールパネルは [スタートメニュー] -> [Windows システムツール] -> [コントロールパネル] で起動します。

コントロールパネルの画面から [更新とセキュリティ] -> [回復] -> [再起動] を選択し、[詳細オプション] から UEFI を設定で続行。

再起動すると BIOS (UEFI) 画面に入ります。[Security] -> [Virtualization] -> [AMD V] を有効にして保存。再起動後、仮想化が有効になっていることが確認できます。

TaskManager_CPU_Virtual_On.png


2.Windows 機能で有効化

今度は Windows Hypervisor Platform を有効にする必要があるようです。

コントロールパネルから [プログラムと機能] -> [Windows の機能の有効化または無効化] から該当する項目にチェックを入れて OK。もう一度再起動を要求されますので実行。

window_function_hyper-v_on.png


3.Visual Studio アップデート

Visual Studio のプロジェクトを立ち上げると、「Andorid SDK を更新すると Windows ハイパーバイザープラットフォームを使用した~」というメッセージが出てきます。

visual_studio_hyper-v_info.png

ちなみに私は本手順の前に Andorid 環境を入れてプロジェクトも作ってました。

更新するため [ツール] -> [Android] -> [Android SDK Manager] で Tool タブから以下を更新+インストール。


  • Android SDK Platform-Tools (27.0.1 以降)

  • Android Emulator (27.3.8 以降)

  • Intel x86 Emulator Accelerator (HAXML installer)


HAMX で有効化

いざ実行し見ると、なんかまだ遅いような気がする…と思って調べていると、上記のままだと HAXM をダウンロードした状態で止まっているかもとの記事が。


エミュレータ android AMDプロセッサでAVDを起動する際のエラー

https://code.i-harness.com/ja/q/19227bd


ですので、先ほど Android SDK ツールから落としてきた HAXM を実行します。

コマンドプロンプトを起動して、以下に移動します。


{SDK_FOLDER} \ extras \ intel \ Hardware_Accelerated_Execution_Manager


{SDK_FOLDER} は環境によって異なると思いますが、私はデフォルトで以下になっています。


C:\Program Files (x86)\Android\android-sdk


以下を実行。

>cd C:\Program Files(x86)\Android\android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager

>silent_install.bat -v


実行結果

ようやく仮想環境が有効になったようです。

再度 Vistual Studio を起動し、[ツール] -> [Android] -> [Android デバイスマネージャ] から Android x86 環境のエミュレータを作成し実行すると高速化されました。

デバイス作成時のパラメータの細かい設定は他のサイトさんを参照して下さい。

適当な設定がいまだに私もよくわかっていません。。。

今回はデフォルト設定から以下を弄ってます。メモリを積んでるとこういうとき良いですね。

項目
設定値

基本デバイス
Pixel

プロセッサ
x86

OS
Nougat 7.0 API 24

hw.ramSize
2048

vm.heapSize
512

android_avd_start.gif

2 回目以降の起動はクイックブートが実現できるようになります。

エミュレータの起動だけですと 10 秒かからないのはありがたいです。