環境
ディストロ: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!
