快轉到主要內容

Linux用Android Studio模擬器玩手遊的思路(Play商店 + Nvidia GPU加速 + 單獨執行AVD)

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Linux好用軟體
標籤   Linux QEMU-KVM Android Scrcpy
目錄

Using AVD of Android Studio on Linux as a Android gaming emulator.

分享如何在Ubuntu Linux系統用Android Studio的AVD模擬器玩遊戲,並設定只啟動AVD模擬器,而不要一併開啟笨重IDE的方法。

Android Studio是Google推出的IDE,支援Linux、Windows、macOS系統,用於開發Android APP之用。授權屬於專有軟體。

最大的特點是內建各版本的Android模擬器(Android Virtual Devices,下面簡稱AVD),這個模擬器能不能玩遊戲呢?理論上是可以的。Android Studio的模擬器能夠模擬手機型號、內建GAPPS、支援GPU加速、內建ARM轉譯器libndk、動態縮放視窗大小。

範例:使用AVD模擬器在Linux遊玩Google Play的賽馬娘遊戲

title.webp

那麼為什麼要用到Android Studio的AVD呢?Ivon分享過Linux的Android模擬器一覽,在這之中,Android Studio的AVD可能是除了Genymotion以外,唯一能在Linux上正常使用Nvidia GPU玩Android手遊的模擬器了。由於是Google官方推出的,必定是經過許多測試才放出來給大家使用的。

本來,Waydroid應該是更好的方案的,完全由開源社群維護,Waydroid(LXC容器)比AVD模擬器(QEMU/KVM虛擬機)效能要好。AVD模擬器總是卡卡的。

我實際用Geekbench跑分測試,同一個Intel i5-10210U CPU,分配同核心數的情況下,Waydroid(上)性能確實比AVD模擬器(下)要好,Waydroid幾乎是以原生的速度執行Android APP。

但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電腦有無開啟虛擬化。確認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電腦。建議磁碟空間64GB以上,RAM 8GB以上,CPU 4核心以上C。

  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 # 模擬器核心數,依照電腦性能調整
hw.ramSize=6144 # 模擬器RAM

PlayStore.enabled=true # 強制開啟Google Play
tag.display=Google Play
tag.id=google_apis_playstore

# 不想要模擬器顯示手機邊框的將以下三行刪除
skin.name=
skin.path=
  1. 然後開機,登入Google帳號,完成初始化,然後關機。

4. 單獨啟動AVD模擬器,不啟動IDE
#

Android Studio的問題就是太笨重了,執行IDE的時候非常吃資源。我們可以單獨執行AVD,而不用開啟IDE。

  1. Android Studio的依賴套件會放到~/Android/

  2. 列出模擬器列表,譬如Pixel_9_Pro_XL

~/Android/Sdk/emulator/emulator -list-avds
  1. 只要啟動AVD而不要開啟IDE的話,用這個指令啟動:
~/Android/Sdk/emulator/emulator -avd "模擬器機型"

如果你有兩個GPU,可以用Nvidia PRIME的方式指定使用Nvidia GPU用於模擬器的圖形加速。

  1. 我們把它做成一個Linux桌面捷徑,加到Linux應用程式列表
vim ~/.local/share/applications/emulator_pixel_9_pro_xl.desktop
  1. 填入以下指令。如果AVD在Wayland下怪怪的,在Eexc=後面加一個環境變數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列出目前電腦上的裝置

screenshot_20250607_140947.webp

點選連線

screenshot_20250607_141637.webp

6. 多開APP
#

我們沒有必要同時執行多個AVD,太吃資源了。

利用Android 15的虛擬雙螢幕功能就可以了。

按一下AVD模擬器的設定 → Display,新增一塊螢幕。

screenshot_20250607_144619.webp

多出來的螢幕就能用來執行其他APP。不過跑大型遊戲還要考慮到模擬器分配的RAM是否足夠。副螢幕似乎不會跟著旋轉方向。

7. 如果APP閃退
#

AVD內建libndk,可能會因為ARM轉譯有問題閃退。

盡量找x86_64架構的APK,減少因為ARM轉譯器崩潰的機會。

也可能是遊戲偵測到模擬器閃退。AVD就只是個開發用模擬器,如果遊戲偵測到疑似模擬器不給玩,那也沒啥辦法~

Play Integrity API需要硬體支援,不可能在模擬器裡面通過。

參考資料
#

相關文章

想在電腦跑Android APP?介紹幾個Linux系統「Android手遊模擬器」的解決方案
分類   Linux系統 Linux好用軟體
標籤   Linux Waydroid Android-X86 ReDroid Bliss OS Android
ActivityWatch教學,自動紀錄Linux電腦螢幕使用時間
分類   Linux系統 Linux好用軟體
標籤   Linux Windows Android
Linux系統以Flatpak格式安裝Android Studio和Flutter SDK
分類   Linux系統 Linux好用軟體
標籤   Flatpak Android Linux

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。