Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

おぎろぐはてブロ

なんだかんだエンジニアになって10年以上

Windows 365でAndroid StudioのAndroid Emulatorを使えるようにIntuneで配布する

Windows 365のCloud PCの検証を進めていますが、業務として、アプリの検証のためAndroid Studioをインストールして、Android Emulatorを起動したいというものがありました。 ハマったので、まとめておきます。

tl;dr

  • Android Emulatorを起動するためには、Hyper-Vの有効化が必要
  • Hyper-Vを有効にするには4 vCPU以上が必要

普通にインストールして動かす

Windows 365のCloud PC上にAndroid Studioをインストールして、イメージをダウンロードしてきました。 これで▶️を押せば普通は起動するのですが、

Virtual Device

Install Android Emulator hypervisor driverとエラーが出て、OKを押すとインストールに進みます。

AEHDをインストールしろと言われる

インストール画面

なんだけど、StartService FAILED with error 4294967201というエラーでサービスの開始に失敗する。

StartService FAILED with error 4294967201

AEHDは、GitHubから別途インストールできるのですが、インストールしても、Install Android Emulator hypervisor driverのエラーは出てくるのが謎

github.com

Hyper-Vを有効にする

StartService FAILED with error 4294967201のエラーで調べてみると、Hyper-V云々の話が出てきたので、有効にしてみます。 Windows 365は仮想PCなので、nested virtualizationということになります。

ここに 4vCPU 以上のクラウド と書かれているので、Cloud PCのスペックを4vCPUに変更しました。

learn.microsoft.com

そして、管理者権限のPowershellでコマンドを実行します。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

learn.microsoft.com

再起動してHyper-Vが有効になります。

もう一度試す

Hyper-Vが有効になったCloud PCでAndroid Emulatorを起動します。 だいぶ待たされるけど無事Virtual Deviceが起動しました。やったね。

Virtual Deviceが起動する

ちなみにAEHDを削除してもAEHD云々の警告は出ず、起動します。 (Android Emulator hypervisor driver is a hypervisor to accelerate Android Emulator ということで、パフォーマンスに影響はあるかもしれない)

ということで、これをAppとして配布するように準備します。

Hyper-Vの有効化アプリ

必要な人だけ有効にするよう、アプリとして配布します。

こちらの記事を参考にさせてもらいました。

endpointcave.com

いつもの 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有効化のアプリの自動インストールを設定してください。