はじめに
Xamarin.FormsでAndroidエミュレータを使ってデバッグする、というだけの作業にかなり手間取ってしまったので、備忘録としてエラーの対処法を列挙しておく。
ちなみに、エラー内容は「エミュレータのパフォーマンスのためのハードウェア高速化」や「Sytem UI isn't Responding」などなど。
また、この記事に載せていることはあくまで解決策の候補なので、試してみて失敗したら別の記事を参考にしてください。
追記:Androidエミュレータを入れる際に共通の解決策だと思うので、Android Studio使っている人にも参考になるかと。
環境
- Visual Studio 2019
- Windows10 home
エミュレーターのパフォーマンスのためのハードウェア高速化 (Hyper-V)
「エミュレータのパフォーマンスの向上のためにハードウェア高速化を行ってください」みたいなエラーが出たので、ここのドキュメントを参考に対処。
コマンドプロンプトを開き、下記のコマンドで自分のPCがHyper-V
をサポートしているか確認。
$ systeminfo
表示された内容的にHyper-V
が使えそうだったので、ドキュメントに従い、Hyper-Vの高速化を有効にした。
(正確には、ハイパーバイザープラットフォームを有効化した)
具体的には、「Windowsの機能の有効化または無効化」を開き、「Windowsハイパーバイザープラットフォーム」と「仮想マシンプラットフォーム」(※1)のチェックボックスにチェックを入れてOKボタンで完了。
(その後、PCの再起動が必要だった気がする…)
※1:ドキュメントによると「仮想マシンプラットフォーム」にチェックを入れる必要はなさそうだったが、チェック入れてみたら上手くいったので、上手くいかない人は自己責任でチェックを入れると良いかも?
ハイパーバイザープラットフォームが有効になっているかをPowerShellで確認するために、管理者権限でPowerShellを起動して下記のコマンドを入力。
Get-WindowsOptionalFeature -FeatureName HypervisorPlatform -Online
State: Enabled
となっていれば有効化されている。
筆者自身よく理解できていないため正確な情報ではないが、おそらくHyper-V
かハイパーバイザープラットフォーム
のどちらか片方を有効化すれば良いらしい。
筆者の環境では、Hyper-V
の有効化方法がわからなかったので、ハイパーバイザープラットフォーム
を有効化した。
Xamarin側の設定
Xamarin.Formsのプロジェクトを作成し、「デバッグ > Xamarin.Androidのプロパティ > Androidオプション」と選択。
「Fast Deploymentの使用(デバッグモードのみ)」のチェックを外す。
System UI isn't responding
エミュレータ立ち上げたときにこのエラーが出たときは、「wait」を選択すれば良い。
デバッグとかビルドとかしてない状態で表示するものがないことがエラー原因だと思う(あくまで予想)
その他
一度エミュレータが正常に起動しても、Visual Studioを再び立ち上げたときや新しいプロジェクトのデバッグ時に正常に作動しない場合がある。
その際は、Android Device Managerを起動し、エミュレータの設定を確認したり、出荷時の状態にリセットしたりすると治ることが多い。
おわりに
Xamarinのインストールは、Qiitaのこの記事を参考に進めていった。しかし、エミュレータ導入方法がわからず、対処法を調べるのにかなりの時間を費やしてしまったために本記事を書いた。
また、色々と試しているうちに上手くいっただけなので、あくまでこの記事は参考程度にしてもらえると良いと思います。
ご指摘などあればコメントにお願いします。
参考サイト
- https://docs.microsoft.com/ja-jp/xamarin/android/get-started/installation/android-emulator/hardware-acceleration?tabs=vswin&pivots=windows#hyper-v-win
- https://docs.microsoft.com/ja-jp/xamarin/android/get-started/installation/android-emulator/troubleshooting?pivots=windows#accel-issues-win
- https://qiita.com/koji716jp/items/ed93c0a9513bf261a835