メインコンテンツへスキップ

LinuxでAndroid Studioエミュレーターをスマホゲーム用に使う考え方(Playストア+Nvidia GPUアクセラレーション+AVD単独実行)

·
カテゴリー Linuxシステム Linuxソフト
タグ Linux QEMU-KVM Android Scrcpy
目次

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のウマ娘ゲームをプレイ

title.webp

では、なぜ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. 仮想化とグラフィックドライバーを確認
#

  1. Android StudioはQEMU/KVMでエミュレーターを高速化するため、まずUbuntu PCで仮想化が有効か確認します。CPUが仮想化に対応しているか確認し、戻り値は0であってはいけません:
sudo grep -E -c '(vmx|svm)' /proc/cpuinfo
  1. KVMカーネルモジュールが読み込まれているか確認します:
sudo lsmod | grep kvm
  1. Nvidiaグラフィックカードを使っている場合は、Nvidiaクローズドソースドライバーをインストールすることを忘れないでください。

2. Android Studioをインストール
#

Android Studioはx86_64アーキテクチャのLinux PCのみ対応しています。ディスク容量64GB以上、RAM 8GB以上、CPU 4コア以上をおすすめします。

  1. 公式サイトからダウンロードします。Flatpak方式ではインストールしないでください。

  2. tarファイルを展開し、任意のディレクトリに置きます。私は個人的に~/Applicationsに置いています

  3. android-studio/bin/studioをダブルクリックしてAndroid Studioを起動し、初期化パッケージの完了を待ちます。

  4. New Projectを押して適当なプロジェクトを作成します

  5. 左上のTools → Create Desktop Entryを押すと、Linuxデスクトップアイコンを作成できます

    screenshot_20250607_142315.webp

3. AVDエミュレーターを追加
#

  1. 左上 → Tools → Device Managerをクリック

    screenshot_20250606_143929.webp

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

    screenshot_20250606_144035.webp

  3. 他のバージョンが必要な場合は+をクリックし、Create New Virtual Deviceで追加します。たとえば私はPixel 9 Pro XLを選び、Android 16バージョンを設定し、Google Play内蔵イメージを選択しました。(注:この端末はパンチホール画面で、AVDエミュレーターもパンチホール画面を一緒にエミュレートします。完全な画面が欲しい場合は古い機種を選んでください。)

  4. Additional Settingsを押してエミュレーター性能を調整します。少なくとも64GBのストレージ、さらに4GB以上のRAMと4つのCPUコアを割り当てます。ただしGoogle Playを含むイメージは全速で使えないため、設定ファイルを手動で変更する必要があります。

    screenshot_20250607_142737.webp

  5. ダウンロード後、Show on diskをクリックし、設定ファイルconfig.iniを編集します

    screenshot_20250607_142815.webp

  6. 以下の内容を変更します(なければ自分で追加)

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=
  1. その後起動し、Googleアカウントにログインして初期化を完了し、シャットダウンします。

4. IDEを起動せずAVDエミュレーターだけを起動
#

Android Studioの問題は重すぎることです。IDE実行時は非常にリソースを食います。IDEを開かず、AVDだけを単独実行できます。

  1. Android Studioの依存パッケージは~/Android/に置かれます

  2. エミュレーター一覧を表示します。例:Pixel_9_Pro_XL

~/Android/Sdk/emulator/emulator -list-avds
  1. IDEを開かずAVDだけを起動したい場合は、このコマンドで起動します:
~/Android/Sdk/emulator/emulator -avd "模擬器機型"

GPUが2つある場合は、Nvidia PRIMEの方式で、エミュレーターのグラフィックアクセラレーションにNvidia GPUを指定できます。

  1. これをLinuxデスクトップショートカットにして、Linuxアプリケーション一覧へ追加します
vim ~/.local/share/applications/emulator_pixel_9_pro_xl.desktop
  1. 以下のコマンドを入力します。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
  1. これでLinuxデスクトップのショートカットをクリックしてAVDエミュレーターを起動できます。

    screenshot_20250607_143901.webp

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

    screenshot_20250607_144248.webp

5. QtScrcpyと組み合わせてキーマッピングを使う
#

主な接続手段としてScrcpyに切り替えます。QTScrcpyはキーマッピングに対応しており、キーボードでタッチ操作を制御できます。

AVDエミュレーター起動コマンドに-no-window -gpu hostパラメータを追加すると、エミュレーターのウィンドウを出さず、GPUアクセラレーションを維持できます。

~/Android/Sdk/emulator/emulator -avd "模擬器機型" -no-window -gpu host

次にADBで現在PC上のデバイスを一覧表示します

screenshot_20250607_140947.webp

接続をクリック

screenshot_20250607_141637.webp

6. 複数アプリを起動
#

複数のAVDを同時実行する必要はありません。リソースを食いすぎます。

Android 15の仮想デュアルディスプレイ機能を使えば十分です。

AVDエミュレーターの設定 → Displayをクリックし、画面を1つ追加します。

screenshot_20250607_144619.webp

追加された画面で他のアプリを実行できます。ただし大型ゲームを動かす場合は、エミュレーターに割り当てたRAMが十分かどうかも考慮する必要があります。サブ画面は画面方向に追従して回転しないようです。

7. アプリがクラッシュする場合
#

AVDにはlibndkが内蔵されており、ARM変換の問題でクラッシュすることがあります。

できるだけx86_64アーキテクチャのAPKを探し、ARMトランスレーターのクラッシュによる可能性を減らしてください。

ゲームがエミュレーターを検出してクラッシュしている可能性もあります。AVDはあくまで開発用エミュレーターです。ゲームがエミュレーター疑いで遊ばせてくれないなら、まあどうしようもありません~

Play Integrity APIはハードウェア対応が必要なので、エミュレーター内で通過することは不可能です。

參考資料
#

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。