Windows 365のCloud PCの検証を進めていますが、業務として、アプリの検証のためAndroid Studioをインストールして、Android Emulatorを起動したいというものがありました。 ハマったので、まとめておきます。
tl;dr
- Android Emulatorを起動するためには、Hyper-Vの有効化が必要
- Hyper-Vを有効にするには4 vCPU以上が必要
普通にインストールして動かす
Windows 365のCloud PC上にAndroid Studioをインストールして、イメージをダウンロードしてきました。 これで▶️を押せば普通は起動するのですが、
Install Android Emulator hypervisor driverとエラーが出て、OKを押すとインストールに進みます。
なんだけど、StartService FAILED with error 4294967201というエラーでサービスの開始に失敗する。
AEHDは、GitHubから別途インストールできるのですが、インストールしても、Install Android Emulator hypervisor driverのエラーは出てくるのが謎
Hyper-Vを有効にする
StartService FAILED with error 4294967201のエラーで調べてみると、Hyper-V云々の話が出てきたので、有効にしてみます。 Windows 365は仮想PCなので、nested virtualizationということになります。
ここに 4vCPU 以上のクラウド と書かれているので、Cloud PCのスペックを4vCPUに変更しました。
そして、管理者権限のPowershellでコマンドを実行します。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
再起動してHyper-Vが有効になります。
もう一度試す
Hyper-Vが有効になったCloud PCでAndroid Emulatorを起動します。 だいぶ待たされるけど無事Virtual Deviceが起動しました。やったね。
ちなみにAEHDを削除してもAEHD云々の警告は出ず、起動します。 (Android Emulator hypervisor driver is a hypervisor to accelerate Android Emulator ということで、パフォーマンスに影響はあるかもしれない)
ということで、これをAppとして配布するように準備します。
Hyper-Vの有効化アプリ
必要な人だけ有効にするよう、アプリとして配布します。
こちらの記事を参考にさせてもらいました。
いつもの Microsoft Win32 Content Prep Tool でintunewinファイルを作成します。 以下のファイルを含めます。
enable.ps1
#Check if Hyper-V is enabled and enable it if necessary if((Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor).State -eq "Disabled") { Write-host "Enabling Microsoft Hyper-V...." Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart } else { Write-host "Microsoft Hyper-V was already succesfully installed" }
disable.ps1
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -NoRestart
Intune管理センターのアプリからWindowsのアプリを Windowsアプリ (Win32) で作成して intunewinファイルをアップロードします。
プログラムの画面では以下を設定します。
- インストール コマンド:
Powershell.exe -NoProfile -ExecutionPolicy ByPass -File .\enable.ps1
- アンインストールコマンド:
Powershell.exe -NoProfile -ExecutionPolicy ByPass -File .\disable.ps1
- デバイスの再起動: Intuneによってデバイスの必須の再起動が強制実行されるようにする
必要条件では、必要な論理プロセッサの最小数を4に設定します。
検出規則では、カスタム検出スクリプトを使用するようにし、以下のスクリプトをアップロードします。
$exit_code = -1 if((Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor).State -eq "Enabled") { $exit_code = 0 } else { $exit_code = 1 } Write-Output "Exit Code: $exit_code" exit $exit_code
Android Studioの配布
Android StudioのexeファイルをWin32 Content Prep Toolでintunewinファイルに変換して、粛々と設定する流れですが、
- プログラム
- インストール コマンド:
android-studio-2024.1.1.11-windows.exe /S
- アンインストール コマンド:
"C:\Program Files\Android\Android Studio\uninstall.exe" /S
- インストール コマンド:
- 検出ルール
- 検出規則:
ファイル C:\Program Files\Android\Android Studio\bin
- 検出規則:
と、依存関係として、先に作成したHyper-V有効化のアプリの自動インストールを設定してください。