Appleシリコン搭載MacでWaydroidを動かす
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を実行する手もあるので、サポートされた暁にはリベンジしようかと思います
参考
道中で記載したものは除きます