Razl-Dazl

eyecatch

Appleシリコン搭載MacでWaydroidを動かす

Posted at — 2024-12-27

MacBook Air(M3)上のmacOSにてDebianの仮想環境を構築し、更にその上でWaydroidを導入することによりAndroidアプリの実行環境を構築しました

UTM導入

仮想環境を構築するソフトウェアは複数ありますが、今回はオープンソースのUTMを使用します

App Storeでは有料配布されていますが、本家の公式ページからは無料ダウンロードできます

インストール手順は省略

Debian環境構築

UTMでは様々なOSを動かせますが今回はDebianにしました

「Androidを直接UTM上で動作させれば良いのでは?」と思ったそこの貴方、UTMはAndroidの実行は非推奨なのです

現に、主要なLinuxディストリビューションのイメージについてはUTMのページからダウンロード出来ますが、Androidについては削除されてしまったようで・・・

Debianの導入はUTMのページから行うのが楽です

(UTMのインストール後に)上記ページの「Open in UTM」を押してUTMに遷移し、ダイアログの指示に従うとダウンロードと初期設定が自動で行われますので、メチャメチャ楽にDebian環境が構築できます

一応、Debian以外でもWaydroidの使用は可能ですが、

  • Waydroidの使用にはWayland環境である必要がある
  • ディストリビューションによってはDLに時間がかかる(多分Debianが一番早い)

ということでDebianをおすすめします

Waydroid導入

Debian上でターミナルを開いて

sudo apt install curl -y
curl -s https://repo.waydro.id | sudo bash
sudo apt install waydroid -y

を実行。curlさえ入っていなかったのでcurlの導入からです

Waydroid用のイメージの準備について

通常の使用法であれば、WaydroidのGUI上でイメージをダウンロードして実行となるわけですが、その手順を踏んだ場合、AppleシリコンなMac(上のUTM)では動作しません

Waydroidのissueによると・・・

既存のイメージは32bitをサポートしているがAppleシリコンでは32bitをサポートしないので、64bitオンリーなイメージを用意する必要がある、とのこと

issue内に64bitのイメージを用意してリンクを貼ってくれた人が居たので、そこからイメージを別途ダウンロードします

展開するとイメージが2つ(system.zipとvendor.zip)が出てくるのでこれを使用します

Waydroidのドキュメントに、自分でイメージを用意して起動する方法が書いてあるので、これに合わせてターミナルでいろいろ打っていきます

sudo mkdir -p /etc/waydroid-extra/images
sudo unzip system.zip -d /etc/waydroid-extra/images
sudo unzip vendor.zip -d /etc/waydroid-extra/images

# 必要に応じてzip削除
rm system.zip vendor.zip

あとは初期化処理を実行するだけで問題ない・・・はず

sudo waydroid init -f

Google Play開発者サービス を使えるようにする

Waydroidが正常起動した方、おめでとうございます

まだまだやる事が沢山残っています

最近のGoogleは未認証のデバイスを弾くようになりました

WaydroidをインストールしただけではGoogleの各サービスが使えず、ログインも出来ません

と言っても、ちゃんと解決方法が存在します

Waydroidを起動した状態で、ターミナルから以下を入力してデバイスIDを取得

sudo waydroid shell
ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"
android_id|XXXXXXXXXXXXXXXXXX

android_idの後に数字の羅列が出力されるので、これをGoogleの登録用フォームに入力します

登録ボタンを押してから30分くらい経つと登録が受理され、Googleの各サービスが利用できるようになります

GApps導入

今回使用したイメージにはPlayストアが入っていなかったので、別途自力でインストールしなければなりません

waydroid_scriptを使用してインストールします

実行にはPython(とpip)の環境が必要なので、そちらも整えておきます

sudo apt install python3-full
sudo apt install pip

ドキュメントにも書いてありますが、依存関係のあるパッケージを別途導入

sudo apt install lzip

waydroid_scriptをgit cloneするなりzipでダウンロードするなりして、ファイルを実行

python3 -m venv venv
venv/bin/pip install -r requirements.txt
sudo venv/bin/python3 main.py install gapps

・・・で、ここで私は1度躓きました

ファイルのダウンロードが何回も繰り返されてしまうので、よくよく見てみると「MD5が一致しないのでやり直す」といった旨が出力されていました

ソースコードを眺めてみます

GAppsのダウンロード先は、waydroid_script/stuff/gapps.pyの10行目に定義されていました

dl_links = {
        "11": {
            "x86_64": ["https://sourceforge.net/projects/opengapps/files/x86_64/20220503/open_gapps-x86_64-11.0-pico-20220503.zip", "5a6d242be34ad1acf92899c7732afa1b"],
            "x86": ["https://sourceforge.net/projects/opengapps/files/x86/20220503/open_gapps-x86-11.0-pico-20220503.zip", "efda4943076016d00b40e0874b12ddd3"],
            "arm64-v8a": ["https://sourceforge.net/projects/opengapps/files/arm64/20220503/open_gapps-arm64-11.0-pico-20220503.zip", "7790055d34bbfc6fe610b0cd263a7add"],
            "armeabi-v7a": ["https://sourceforge.net/projects/opengapps/files/arm/20220215/open_gapps-arm-11.0-pico-20220215.zip", "8719519fa32ae83a62621c6056d32814"]
        },
        "13": {
            "x86_64": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-x86_64-20231028.zip", "63ccebbf93d45c384f58d7c40049d398"],
            "x86": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-x86-20231028.zip", "f12b6a8ed14eedbb4b5b3c932a865956"],
            "arm64-v8a": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-arm64-20231028.zip", "11180da0a5d9f2ed2863882c30a8d556"],
            "armeabi-v7a": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-arm-20231028.zip", "d525c980bac427844aa4cb01628f8a8f"]
        }
    }

ダウンロード先のURLと共に、ファイルのMD5が固定値で定義されていました

SourceForge上のARM版のファイル一覧に、ソースコードの実態とともにMD5が記載されたテキストファイル(拡張子が.md5のもの)がアップされているのでそちらをDLして、正しいハッシュ値に書き換えます

私の環境では、使用するGAppsがAndroid11対応かつARM64(arm64-v8a)のものでしたので、 7790055d34bbfc6fe610b0cd263a7addを正しい値へ置き換えました

そしてmain.pyをもう一度実行・・・

無事にPlayストアが追加されました!

ここまで長かった。Appleシリコンだと一筋縄で行きませんね・・・

ブルアカが動かなかった

ブルアカをやりたかったのでダウンロードしましたが、起動しても真っ黒な画面のまま進みませんでした

ARMonARMですからそこそこのパフォーマンスで動いたらいいなぁ〜と淡い期待を抱いていましたが、動作すらせず・・・

Macでブルアカをしたいのであれば、iPhoneのミラーリングを使用するのが無難ですね

フルスクリーンに出来ないのが欠点ですが、遅延もほとんど感じないのでデイリーを回す程度であれば十分です

ただゲームが動かないとなると、MacでWaydroidを動かす意義が薄れてしまいますね・・・

また、M3チップがサポート外なので今回は試していませんが、Asahi Linux上でWaydroidを実行する手もあるので、サポートされた暁にはリベンジしようかと思います

参考

道中で記載したものは除きます

Author@zakuro

Mastodon: 396@vivaldi.net