ADVでAndroidゲームをPCで動かしてみる





環境

ディストロ:open.Yellow.os(Debianベース)

デスクトップ:X11 GNOME

グラボ:Nvidia 3050 mobile


Wayland 環境であれば Waydroid が使いやすいが、Nvidia と Wayland の相性が悪く、X11 環境でなんとかうまいことやってみる。



確認

仮想化対応の CPU か確認。

自然数が出力されれば OK。 

egrep -c '(vmx|svm)' /proc/cpuinfo


/dev/kvm があるか確認。

それっぽいパスが表示されれば OK。 

ls -l /dev/kvm || echo "/dev/kvm not present"




KVM / qemu / libvirt を入れる


sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients cpu-checker



kvm の動作確認

sudo apt install -y cpu-checker
sudo kvm-ok


INFO: /dev/kvm exists てきなパスと、KVM acceleration can be used が出力されたら OK。



kvm のグループに追加

sudo usermod -aG kvm $(whoami)


(一応、再ログイン or 再起動して)確認。

groups $(whoami)

出力に kvm が入っていたら OK。



Android Studio を入れる

snap が入っていなかったら snap を入れる。

sudo apt update
sudo apt install -y snapd

sudo snap install android-studio --classic


インストールが終わったら、アプリ一覧に Android Studio が追加されているので、ダブルクリック等で起動。



GUI に従ってインストールを進める。









Playストアからアプリを入れてみる


SDK設定

トップ画面の「More Actions」から「SDK Settings」を開く。



「SDK Tools」をひらく。

Android SDK Build-Tools、Android Emulator、Android SDK Platform-Tools(、コマンドライン使いたかったら Android SDK Command-line Tiils)にチェックが入っているか確認して OK。



AVD(仮想端末)を作る

同じくトップ画面の「More Actions」から、「Virtual Device Manager」をひらく。



任意設定

左上の + ボタンから、デバイスを追加。
Play のマークがあるデバイスがオススメ。



追加したデバイス or 「Midium Phone」の再生ボタンを押して起動!





あとはふつーにスマホと同じ。







デスクトップアプリっぽくしてみる(GNOME)

アプリのアイコンから起動できるようにしてみる。

便利ではあるが、起動にやや時間がかかる。(そのゲーム単体をパッと起動するワケではなく、仮想マシンをゼロから起動するため。)


今回は、《卍デ・スザーク卍》が実装されたと聞いて復帰したみた「デュエルマスターズ・プレイス」を入れてみる。

入れたいアプリに応じて適宜読み替えてください。



仮想マシンの名前を調べる

Android Studio を開いた状態で、

emulator -list-avds


をすると、

Pixel_6_API_34
Pixel_5_API_33

といった感じで機種が出力されるハズなので、起動したいやつをメモる。




起動したいアプリのパッケージ名を調べる

Android Studio でやってもいいが、ブラウザのPlayストアで調べるのがラク。


https://play.google.com/store/games



起動したいアプリを調べ、そのアプリのページに飛ぶと URL の id= 以降にそのアプリのパッケージ名が書いてある。

(URLが https://play.google.com/store/games のままの場合は再読み込みすると変わるハズ)





起動スクリプトをつくる

ユーザーのホーム ~/bin に、sh ファイルを作成する。


~/bin/(任意の名前).sh 

set -eu

HOME_DIR="$HOME"
ANDROID_SDK_ROOT="$HOME_DIR/Android/Sdk"
EMULATOR_BIN="$ANDROID_SDK_ROOT/emulator/emulator"
ADB_BIN="$ANDROID_SDK_ROOT/platform-tools/adb"

AVD="Pixel_Tablet"
PKG="jp.co.takaratomy.duelmastersplays"
ACTIVITY="jp.co.takaratomy.duelmastersplays/jp.co.takaratomy.duelmastersplays_native.PlaysUnityPlayerActivity"
LOG="/tmp/emulator-${AVD}.log"

if [ ! -x "$EMULATOR_BIN" ]; then
  echo "emulator binary not found: $EMULATOR_BIN" >&2
  exit 1
fi
if [ ! -x "$ADB_BIN" ]; then
  echo "adb binary not found: $ADB_BIN" >&2
  exit 1
fi

export ANDROID_SDK_ROOT="$ANDROID_SDK_ROOT"
export PATH="$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/platform-tools:$PATH"

if ! pgrep -f "emulator.*-avd ${AVD}" >/dev/null; then
  echo "Starting emulator ${AVD} (log: ${LOG})"
  "$EMULATOR_BIN" -avd "${AVD}" -gpu host -no-snapshot &> "${LOG}" &
  sleep 1
fi

"$ADB_BIN" start-server
"$ADB_BIN" wait-for-device

timeout=300
elapsed=0
interval=2
while true; do
  BOOT="$("$ADB_BIN" shell getprop sys.boot_completed 2>/dev/null | tr -d '\r' || echo "")"
  if [ "$BOOT" = "1" ]; then
    break
  fi
  if [ "$elapsed" -ge "$timeout" ]; then
    echo "Timeout waiting for Android boot (after ${timeout}s), check ${LOG}" >&2
    exit 2
  fi
  sleep $interval
  elapsed=$((elapsed + interval))
done

echo "Launching activity: ${ACTIVITY}"
"$ADB_BIN" shell am start -n "${ACTIVITY}"


変更するべきところは、最初(8~10行目)にある "AVD", "PKG", "ACTIVITY" の3つ。

それぞれ、さっき調べた、端末、アプリ、アクティビティ、を入力。


実行権限を与えて、走らせてみる。

chmod +x ~/bin/(任意の名前).sh
~/bin/(任意の名前).sh


起動したらとりあえず OK。


adb が見つからないと怒られた場合は、設定してみる。

nano ~/.bashrc


一番下とかに追記

# Android SDK
export ANDROID_SDK_ROOT="$HOME/Android/Sdk"
export PATH="$PATH:$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/platform-tools"



デスクトップのアイコンをつくる

.desktop をつくる

sudo nano ~/.local/share/applications/(任意の名前).desktop


中身を書く。(適宜中身は変えてください)

[Desktop Entry]
Type=Application
Name=デュエプレ #名前を入力!
Comment=Android Emulator Launch
Exec=/home/shiroka/bin/dueple.sh #さっき作ったshのパス
Icon=/home/shiroka/bin/fankit10.png #アイコンのパス
Terminal=false
Categories=Game;


反映

chmod +x ~/.local/share/applications/dueple.desktop
update-desktop-database ~/.local/share/applications 2>/dev/null



アプリから起動できたら OK!