Help us understand the problem. What is going on with this article?

【Xamarin.Forms】Androidエミュレータでデバッグするためにやったこと

はじめに

Xamarin.FormsでAndroidエミュレータを使ってデバッグする、というだけの作業にかなり手間取ってしまったので、備忘録としてエラーの対処法を列挙しておく。
ちなみに、エラー内容は「エミュレータのパフォーマンスのためのハードウェア高速化」や「Sytem UI isn't Responding」などなど。

また、この記事に載せていることはあくまで解決策の候補なので、試してみて失敗したら別の記事を参考にしてください。

追記:Androidエミュレータを入れる際に共通の解決策だと思うので、Android Studio使っている人にも参考になるかと。

環境

  • Visual Studio 2019
  • Windows10 home

エミュレーターのパフォーマンスのためのハードウェア高速化 (Hyper-V)

「エミュレータのパフォーマンスの向上のためにハードウェア高速化を行ってください」みたいなエラーが出たので、ここのドキュメントを参考に対処。

コマンドプロンプトを開き、下記のコマンドで自分のPCがHyper-Vをサポートしているか確認。

command
$ systeminfo

表示された内容的にHyper-Vが使えそうだったので、ドキュメントに従い、Hyper-Vの高速化を有効にした。
(正確には、ハイパーバイザープラットフォームを有効化した)

具体的には、「Windowsの機能の有効化または無効化」を開き、「Windowsハイパーバイザープラットフォーム」と「仮想マシンプラットフォーム」(※1)のチェックボックスにチェックを入れてOKボタンで完了。
(その後、PCの再起動が必要だった気がする…)
※1:ドキュメントによると「仮想マシンプラットフォーム」にチェックを入れる必要はなさそうだったが、チェック入れてみたら上手くいったので、上手くいかない人は自己責任でチェックを入れると良いかも?

ハイパーバイザープラットフォームが有効になっているかをPowerShellで確認するために、管理者権限でPowerShellを起動して下記のコマンドを入力。

PowerShell
Get-WindowsOptionalFeature -FeatureName HypervisorPlatform -Online

State: Enabledとなっていれば有効化されている。

筆者自身よく理解できていないため正確な情報ではないが、おそらくHyper-Vハイパーバイザープラットフォームのどちらか片方を有効化すれば良いらしい。
筆者の環境では、Hyper-Vの有効化方法がわからなかったので、ハイパーバイザープラットフォームを有効化した。

Xamarin側の設定

Xamarin.Formsのプロジェクトを作成し、「デバッグ > Xamarin.Androidのプロパティ > Androidオプション」と選択。
「Fast Deploymentの使用(デバッグモードのみ)」のチェックを外す。
image.png

System UI isn't responding

エミュレータ立ち上げたときにこのエラーが出たときは、「wait」を選択すれば良い。
デバッグとかビルドとかしてない状態で表示するものがないことがエラー原因だと思う(あくまで予想)
image.png

その他

一度エミュレータが正常に起動しても、Visual Studioを再び立ち上げたときや新しいプロジェクトのデバッグ時に正常に作動しない場合がある。
その際は、Android Device Managerを起動し、エミュレータの設定を確認したり、出荷時の状態にリセットしたりすると治ることが多い。

おわりに

Xamarinのインストールは、Qiitaのこの記事を参考に進めていった。しかし、エミュレータ導入方法がわからず、対処法を調べるのにかなりの時間を費やしてしまったために本記事を書いた。
また、色々と試しているうちに上手くいっただけなので、あくまでこの記事は参考程度にしてもらえると良いと思います。
ご指摘などあればコメントにお願いします。

参考サイト

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away