質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

解決済

2回答

1103閲覧

Azure VM 上のVisualStudio2017でAndroidのEmulatorが上手く動作しない

naritamago

総合スコア15

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

1グッド

0クリップ

投稿2018/07/26 04:46

編集2018/08/01 06:50

前提・実現したいこと

こんにちは。

Azure の仮想マシン上(Windows10 バージョン1803)にVisual Studio2017 を入れてXamarinを試してみようとしています。

Xamarinの空のプロジェクトを作成し、サンプルプログラムをデバッグ実行しようとしています。

発生している問題・エラーメッセージ

Android Emulatorは起動するものの、アプリが起動できず、タイムアウトしてしまいます。

~~VMの構成はGPUを積んだりはしておらずそれほどリッチな構成ではないですし、動作がもたつくのは正直仕方ないと思っているのですが、アプリが起動できないのでは何も出来ず、困っております。
~~

GPUを積んだ構成にして起動したところ、立ち上がりは非常に早くなりましたが、数回VMを再起動するとエミュレータが立ち上がらなくなります。
エラー内容としては、
「仮想マシン上で起動しているとHAXMは利用できません。現在のエミュレータで起動しようとすると動作が非常に遅くなります。」
というメッセージが表示されます。
更に、「エミュレータエンジンプログラム”x86”CPUが見つからない」とPANIC表示がコンソール上に表示され、起草しません。

仮想環境上でも利用できるAndroidエミュレータって何かあるんでしょうか?

試したこと

エミュレータの起動時に「高速化されていません」といった趣旨のポップアップが出て来るので、Microsoft公式ドキュメントや以下の記事を参考にエミュレータ高速化(Hiper-V、HAXM)を試してみましたが、どちらも仮想環境では対応していないようで、高速化できませんでした。
参考記事⇒ https://qiita.com/towtow/items/cf08b7f15c6048b4d981

補足情報(FW/ツールのバージョンなど)

仮想マシンの構成
・Windows 10 バージョン 1803
・Visual Studio 2017 Community Edition

Visual Studioの構成
・Emulator:Android_Accelerated_x86_Oreo(Android 8.1 - API27)
・Xamarinプロジェクトのコード共有の方法はShared Project
・UWPはなし

現状、仮想マシンはNugetや外部からダウンロードする都合上、インターネットとは接続可能な状態になっています。

keicha_hrs👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Azureに詳しくないためはっきりした状況がわからないので、情報提供のみですが。「無いよりまし」程度で参照していただければ。

Visual Studio InstallerでインストールできるAndroidエミュレーターは2種類あります。一方は、Googleによって提供されているAndroid SDKに付属しているもので、標準ではこちらがインストールされます。この質問で動かそうとしているのもこちらでしょう。

もう一方は、Microsoftによって提供されているVisual Studio Emulator for Androidと称されるものです。これはHyper-Vによる仮想マシン上で動作するもので、参考にされたQiitaの資料はこちらについて記しているものと思われます。こちらは個別コンポーネント選択でチェックしなければインストールされないので、多分こちらではないのでしょう。

Googleによるエミュレーターは、HAXM(別の方法もありますがここでは省きます)がインストールされていなければ起動することすらできません。「Emulatorは起動するがタイムアウトする」のと「高速化されていないというポップアップが出る」のが両立する状況がよくわからないのですが、タイムアウトするにせよAndroid端末の形をしたウィンドウが出てくるのであれば、HAXM自体は検出しているのではないかと思うのですが。

なお、HAXMとHyper-Vは競合するので、Hyper-Vが有効になったままでも起動できません。両方試したとのことですが、最終的にはHyper-Vを無効化した状態になっているでしょうか?

また、通常はエミュレーター上での描画をホストGPUがサポートできるようになっているのですが、これが利用できない環境だとソフトウェア描画になってしまうため、動作が著しく遅くなります。「GPUを積んだ環境ではない」というのがひっかかっているのかもしれません。

この辺りを元に状況を整理してみてはどうかと思います。

投稿2018/07/28 15:21

keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naritamago

2018/08/01 06:28

keicha_hrsさん、回答ありがとうございます。情報参考になります。 HAXMについてですが、たぶんインストールされていません。intelhaxm.exeを実行しましたが、「VT not supported エラー」が出てしまい、HAXMは(Hardware Acceleratedの名が示すとおり)仮想環境では使えないと推測しています。HAXMが無ければ起動すらできないとのことですが、VMを再起動してエミュレータを再起動したらAndroidのウィンドウすら立ち上がらなくなってしまいました。そうなると最初に起動できたのが謎ですが・・・ Hyper-Vについては、途中で挫折したのでした。というのも[Windows機能のオンオフ]ウィンドウで、[Hyper-V]>[Hyer-V Platform]が非アクティブ状態なので、こちらも仮想環境上では有効化できないと推測しています。 なので、最終的にはHyper-Vは無効化しています。 また、VMをGPUを積んだ構成にしてみたら立ち上がりは劇的に改善されましたが、動作はかなりモタつき、使用に耐えるものではありませんでした。(これもHAXMが無いのにウィンドウが立ち上がっているのが謎なんですが・・・)
keicha_hrs

2018/08/02 06:10 編集

Visual StudioのメニューからAndroidデバイスマネージャーを開いたときに、作成済みのAVDのProcessorがx86_64またはx86になっているでしょうか(自分で設定を変更していなければなっているはずですが)。HAXMなどのサポートが効くのはx86_64またはx86のみです。 AndroidエミュレーターではARMなど他のCPUエミュレーションも対応していますが、それらにはHAXMの効果はありません。他のCPUエミュレーションならば仮想環境でも起動すると思うのですが、遅くて実用には耐えないでしょう。 それから、エミュレーターをコマンドプロンプトから実行したときのメッセージを確認してみてください。エミュレーターのコマンドは、<SDKのインストールフォルダー>\emulator\emulator.exeです。コマンドプロンプトでemulatorフォルダーに移動して、 emulator -avd <AVD名> と入力すると起動することができます。<AVD名>は作成済みのAVDの名前ですが、 emulator -list-avds と入力すると一覧が出るので、それを参照して入力してください。コマンドで起動しようとしたときに、HAXMなどのサポートがないと emulator: ERROR: x86_64 emulation currently requires hardware acceleration! というメッセージが表示されて起動すらしないはずです。HAXMを検出していると、 HAX is working and emulator runs in fast virt mode. というメッセージが表示されます。HAXMがシステム上どうなっているのかということは、これで確認できると思います。 それでHAXMが使えないと区切りがついたとして、もう一つ試せることはWindowsハイパーバイザープラットフォーム(WHPX)を有効にしてみることでしょうか。Androidエミュレーターは、最近になってHAこれによる高速化もサポートするようになりました。「Windowsの機能の有効化と無効化」の中に、「Windowsハイパーバイザープラットフォーム」という項目があるので、これにチェックを入れて再起動するという手順になります。これを有効にして先のようにコマンドプロンプトで実行したときに、エミュレーターがWHPXを検出していれば、 Windows Hypervisor Platform accelerator in operational というメッセージが表示されます。これもHyper-Vがサポートされていない環境では使えないと思うので、期待薄かもしれないのですが。 ただ、調べてみるとAzureでNested Hyper-Vが使えるといった情報は見当たりますね。 https://azure.microsoft.com/en-us/blog/nested-virtualization-in-azure/ これによるものだと思いますが、最初に記したHyper-Vが必要なMicrosoft EmulatorをAzure仮想マシン上で動かしたという記事も見当たります。 https://anthonychu.ca/post/azure-v3-vm-nested-hyperv-virtualization/ Hyper-Vが使える環境なら、WHPXを有効にしてGoogleのエミュレーターを動かすことも可能なのではないかと思うのですが、自分で試せる環境がないので確認まではできません。 出せる情報としてはここまででしょうか・・・。
naritamago

2018/08/03 09:10

keicha_hrsさん、情報ありがとうございます。 早速コマンドプロンプトからの起動を試してみました。 ・x86_64:コメントの通りHAXMが検出されず、起動できませんでした。 ・WHPX有効化後:以下のメッセージが表示され起動できず。 CPU acceleration status: Android Emulator does not suport nested virtualization. Your VM host:'Microsoft Hv(Hyper-V)' x86エミュレータの高速化は諦めて、ARMアーキテクチャに変えたらとりあえず動かすことはできたので、勉強の間はこれで行こうかと思います。。。(そこまで早さが要求される処理をするつもりはない) 色々調べていただき、心から感謝いたします。ありがとうございました。
guest

0

自己解決

仮想マシンをGPUを積んだ構成にし、エミュレータのCPUをx86アーキテクチャからARMアーキテクチャにしたら無事動かすことができました。
ARMアーキテクチャでは高速化できない?ので動作はもたつきますが、全く使用に耐えないというほどではないです。
・・・GPUによる恩恵がどれほどかは検証できてないのでその内やりたいと思いますが、この質問自体はこの辺りで閉じようと思います。

投稿2018/08/06 00:46

naritamago

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問