Using AVD of Android Studio on Linux as a Android gaming emulator.
Ubuntu LinuxシステムでAndroid StudioのAVDエミュレーターを使ってゲームを遊び、さらに重たいIDEを一緒に起動せずAVDエミュレーターだけを起動する設定方法を共有します。
Android StudioはGoogleが提供するIDEで、Linux、Windows、macOSをサポートし、Androidアプリ開発に使われます。ライセンスはプロプライエタリソフトウェアです。
最大の特徴は、各バージョンのAndroidエミュレーター(Android Virtual Devices、以下AVD)を内蔵していることです。このエミュレーターでゲームは遊べるのでしょうか?理論上は可能です。Android Studioのエミュレーターはスマホ機種のエミュレート、内蔵GAPPS、GPUアクセラレーション、内蔵ARMトランスレーターlibndk、ウィンドウサイズの動的リサイズに対応しています。
例:AVDエミュレーターを使ってLinuxでGoogle Playのウマ娘ゲームをプレイ
では、なぜAndroid StudioのAVDを使うのでしょう?IvonはLinux Android Emulatorsを共有しました。その中でAndroid StudioのAVDは、Genymotion以外では、Linux上でNvidia GPUを正常に使ってAndroidスマホゲームを遊べる唯一のエミュレーターかもしれません。Google公式が提供している以上、公開前に多くのテストを経ているはずです。品質は信頼できるはずです。
LinuxでAndroidスマホゲームを実行したい場合、Waydroidが比較的よく推薦される方案で、Steam Deckで使っている人もいます。ただしWindows上のBluestacksエミュレーターに近い使用体験を求めるなら、AVDの方が近いです。
本来、Waydroidの方がより良い方案のはずでした。完全にオープンソースコミュニティで維持され、Waydroid(LXCコンテナ)はAVDエミュレーター(QEMU/KVM仮想マシン)より性能が良いです。AVDエミュレーターはいつも少しもたつきます。
実際にGeekbenchでベンチマークしたところ、同じIntel i5-10210U CPUで同じコア数を割り当てた場合、Waydroid(上)は確かにAVDエミュレーター(下)より性能が良く、Waydroidはほぼネイティブ速度でAndroidアプリを実行します。AVDには仮想化による性能損失があります。
しかしWaydroidの致命的な弱点は、IntelとAMD GPUしかサポートしていないことです。開発者によると、Nvidiaを一時的にサポートしていない理由は、NvidiaがオープンソースのAndroid側ドライバーを提供しておらず、Linux側のMesaドライバーにも問題があるためです。一方Googleは何らかのOpenGL ES変換の魔法を使い、Nvidiaドライバーを動かしています。
AVDエミュレーターの中では、LinuxホストのNvidia GPUが正常に表示されているのを確認できます。AVDエミュレーターはIntel、AMD、NvidiaのいずれでもOpenGL ESへ変換できます。
したがってNvidiaユーザーにとって、AVDはGPUアクセラレーション付きで実用可能な唯一のAndroidエミュレーター方案です。
1. 仮想化とグラフィックドライバーを確認#
- Android StudioはQEMU/KVMでエミュレーターを高速化するため、まずUbuntu PCで仮想化が有効か確認します。CPUが仮想化に対応しているか確認し、戻り値は0であってはいけません:
sudo grep -E -c '(vmx|svm)' /proc/cpuinfo- KVMカーネルモジュールが読み込まれているか確認します:
sudo lsmod | grep kvm- Nvidiaグラフィックカードを使っている場合は、Nvidiaクローズドソースドライバーをインストールすることを忘れないでください。
2. Android Studioをインストール#
Android Studioはx86_64アーキテクチャのLinux PCのみ対応しています。ディスク容量64GB以上、RAM 8GB以上、CPU 4コア以上をおすすめします。
公式サイトからダウンロードします。Flatpak方式ではインストールしないでください。
tarファイルを展開し、任意のディレクトリに置きます。私は個人的に
~/Applicationsに置いていますandroid-studio/bin/studioをダブルクリックしてAndroid Studioを起動し、初期化パッケージの完了を待ちます。New Projectを押して適当なプロジェクトを作成します
左上のTools → Create Desktop Entryを押すと、Linuxデスクトップアイコンを作成できます

3. AVDエミュレーターを追加#
左上 → Tools → Device Managerをクリック

画面左側にダウンロード済みのエミュレーターが表示されるはずです。執筆時点ではAndroid 16のイメージです

他のバージョンが必要な場合は+をクリックし、Create New Virtual Deviceで追加します。たとえば私はPixel 9 Pro XLを選び、Android 16バージョンを設定し、Google Play内蔵イメージを選択しました。(注:この端末はパンチホール画面で、AVDエミュレーターもパンチホール画面を一緒にエミュレートします。完全な画面が欲しい場合は古い機種を選んでください。)
Additional Settingsを押してエミュレーター性能を調整します。少なくとも64GBのストレージ、さらに4GB以上のRAMと4つのCPUコアを割り当てます。ただしGoogle Playを含むイメージは全速で使えないため、設定ファイルを手動で変更する必要があります。

ダウンロード後、Show on diskをクリックし、設定ファイル
config.iniを編集します
以下の内容を変更します(なければ自分で追加)
disk.dataPartition.size=64G # エミュレーター仮想ディスク容量
hw.audioInput=yes # 音声入力
hw.audioOutput=yes # 音声出力
hw.cpu.ncore=4 # エミュレーターのコア数。PC性能に応じて調整
hw.ramSize=6144 # エミュレーターRAM
PlayStore.enabled=true # Google Playを強制有効化
tag.display=Google Play
tag.id=google_apis_playstore
# エミュレーターにスマホ枠を表示したくない場合は以下3行を削除
skin.name=
skin.path=- その後起動し、Googleアカウントにログインして初期化を完了し、シャットダウンします。
4. IDEを起動せずAVDエミュレーターだけを起動#
Android Studioの問題は重すぎることです。IDE実行時は非常にリソースを食います。IDEを開かず、AVDだけを単独実行できます。
Android Studioの依存パッケージは
~/Android/に置かれますエミュレーター一覧を表示します。例:
Pixel_9_Pro_XL
~/Android/Sdk/emulator/emulator -list-avds- IDEを開かずAVDだけを起動したい場合は、このコマンドで起動します:
~/Android/Sdk/emulator/emulator -avd "模擬器機型"GPUが2つある場合は、Nvidia PRIMEの方式で、エミュレーターのグラフィックアクセラレーションにNvidia GPUを指定できます。
- これをLinuxデスクトップショートカットにして、Linuxアプリケーション一覧へ追加します
vim ~/.local/share/applications/emulator_pixel_9_pro_xl.desktop- 以下のコマンドを入力します。Wayland下でAVDがおかしい場合は、
Exec=の後ろに環境変数env WAYLAND_DISPLAY=を追加し、XWaylandで起動するようにします。
[Desktop Entry]
Categories=Development;IDE;
Exec="/home/user/Android/Sdk/emulator/emulator" -avd "Pixel_9_Pro_XL"
Icon=/home/user/Android/Sdk/skins/pixel_9_pro_xl/back.png
Name=Pixel 9 Pro Emulator
NoDisplay=false
Type=ApplicationこれでLinuxデスクトップのショートカットをクリックしてAVDエミュレーターを起動できます。

AVDエミュレーター右上の三点をクリックして設定を開き、Show window frame around deviceをクリックすると枠が表示され、AVDエミュレーターウィンドウをリサイズできます。

5. QtScrcpyと組み合わせてキーマッピングを使う#
主な接続手段としてScrcpyに切り替えます。QTScrcpyはキーマッピングに対応しており、キーボードでタッチ操作を制御できます。
AVDエミュレーター起動コマンドに-no-window -gpu hostパラメータを追加すると、エミュレーターのウィンドウを出さず、GPUアクセラレーションを維持できます。
~/Android/Sdk/emulator/emulator -avd "模擬器機型" -no-window -gpu host次にADBで現在PC上のデバイスを一覧表示します
接続をクリック
6. 複数アプリを起動#
複数のAVDを同時実行する必要はありません。リソースを食いすぎます。
Android 15の仮想デュアルディスプレイ機能を使えば十分です。
AVDエミュレーターの設定 → Displayをクリックし、画面を1つ追加します。
追加された画面で他のアプリを実行できます。ただし大型ゲームを動かす場合は、エミュレーターに割り当てたRAMが十分かどうかも考慮する必要があります。サブ画面は画面方向に追従して回転しないようです。
7. アプリがクラッシュする場合#
AVDにはlibndkが内蔵されており、ARM変換の問題でクラッシュすることがあります。
できるだけx86_64アーキテクチャのAPKを探し、ARMトランスレーターのクラッシュによる可能性を減らしてください。
ゲームがエミュレーターを検出してクラッシュしている可能性もあります。AVDはあくまで開発用エミュレーターです。ゲームがエミュレーター疑いで遊ばせてくれないなら、まあどうしようもありません~
Play Integrity APIはハードウェア対応が必要なので、エミュレーター内で通過することは不可能です。


