LinuxのAndroidコンテナWaydroidをインストールしたときのメモ
Waydroidのインストール
公式Web(https://waydro.id/)の Docs -> How to Install -> Ubuntu/Debian and derivatives に掲載されたコマンドをそのまま実行する
Ubuntu Shell (Terminal)
# Waydroidセットアップシェルスクリプトをダウンロードするために使う sudo apt install curl # Waydroidコンテナでローカルroot証明書を使うために必要 sudo apt install ca-certificates # Waydroidセットアップスクリプトをダウンロードし、実行する # (wget コマンドで代用しても良い) curl -s https://repo.waydro.id | sudo bash # Waydroidをインストール sudo apt install waydroid
Serviceが起動しているか確認
Ubuntu Shell (Terminal)
$ systemctl status waydroid-container.service
● waydroid-container.service - Waydroid Container
Loaded: loaded (/lib/systemd/system/waydroid-container.service; enabled; v>
Active: active (running) since Tue 2025-01-28 18:25:04 JST; 22min ago
Main PID: 594 (waydroid)
Tasks: 2 (limit: 38121)
Memory: 19.6M
CPU: 168ms
CGroup: /system.slice/waydroid-container.service
└─594 /usr/bin/python3 /usr/bin/waydroid -w container start
Warning: some journal files were not opened due to insufficient permissions.
ディスプレイサーバをWaylandに切り替える
Ubuntu 22.04では、デスクトップログオン時にWaylandとXOrgが選択できるが、Waylandで起動する。
Waylandが使われているかどうかは次のコマンドで確認できる。
Ubuntu Shell (Terminal)
$ echo $XDG_SESSION_TYPE wayland
Androidイメージのインストール(初回セットアップ)
Ubuntu Shell (Terminal)
$ sudo waydroid init
Android Typeの選択肢が初期設定は「VANILLA」となっているが、Google Play Storeを利用する場合は「GAPPS」を選択する。
GAPPSを選択した場合は、次の2つのシステムイメージがダウンロードされて展開される。
・lineage-18.1-20250125-GAPPS-waydroid_x86_64-system.zip (877 MBytes)
・lineage-18.1-20250125-MAINLINE-waydroid_x86_64-vendor.zip (187 MBytes)
ディスク上に展開されたファイルのサイズは 4.7 GBytesと巨大だ。
Ubuntu Shell (Terminal)
$ sudo du -h -c -s /var/lib/waydroid/ 4.7G /var/lib/waydroid/ 4.7G 合計
Play プロテクト認定(Google Play Certification)を得る
公式Web(https://waydro.id/)の Docs -> Our Documentation -> Google Play Certification に掲載された手順を実行する。
まず、Waydroidを起動する。UbuntuのスタートメニューからWaydroidをクリックしても、Ubuntuシェルターミナルから次のコマンドを実行しても良い。
Ubuntu Shell (Terminal)
$ waydroid show-full-ui
Waydroidがフルスクリーンで起動し、Google Play Certificationが得られていない旨が(画面上部に)通知として出力される。
その状態のままで... (Waydroidのウインドウを閉じずに)
新たなUbuntuシェルターミナルを起動して、 「Google サービス フレームワーク Android ID」を表示させる。
Ubuntu Shell (Terminal)
$ 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|1234567890123456789
:/ # exit
$
表示された「Google サービス フレームワーク Android ID」を、Googleデバイス登録画面に入力し登録を行う。
Android IDを表示させたUbuntuシェルも、全画面で表示中のWaydroid画面も終了し、
登録後、数分たってから再度Waydroidを起動すると、デバイス登録が完了している。
ARM対応
x64-ARMトランスレート レイヤーのlibhoudiniを導入すると、ARM用アプリが利用できるようになる。
手法は「Waydroid を実用するために行なった加工などのまとめ」を参考にした。
Chromeosのセットアップイメージからlibhoudiniを抽出
Ubuntu Shell (Terminal)
# 抽出ツールをダウンロードする $ git clone https://github.com/BlissRoms-x86/android_vendor_google_chromeos-x86.git # 抽出ツールを実行する $ cd android_vendor_google_chromeos-x86/ $ bash ./extract-files.sh This script requires 'sudo' to mount the partitions in the ChromeOS recovery image. Continue? (Y/n) Checking ChromeOS image... chromeos_13816.82.0_hatch_recovery_stable-channel_mp-v6.bin.zip: オープンまたは読み込みに失敗しました % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1554M 100 1554M 0 0 4319k 0 0:06:08 0:06:08 --:--:-- 4555k chromeos_13816.82.0_hatch_recovery_stable-channel_mp-v6.bin.zip: OK -> Extracting recovery image -> Mounting partitions [sudo] vm のパスワード: -> Deleting old files -> Copying files Done
Waydroidシステムイメージの再ダウンロード
Ubuntu Shell (Terminal)
$ sudo waydroid init -s GAPPS -f [22:54:14] Downloading https://sourceforge.net/projects/waydroid/files/images/system/lineage/waydroid_x86_64/lineage-18.1-20250125-GAPPS-waydroid_x86_64-system.zip/download [Downloading] 877.4 MB/877.44 MB 260.65 kbps(approx.)[23:07:18] Validating system image [23:07:21] Extracting to /var/lib/waydroid/images $ ll /var/lib/waydroid/images/ 合計 2459172 drwxr-xr-x 2 root root 4096 2025-01-28 11:45:27 ./ drwxr-xr-x 9 root root 4096 2025-01-29 23:07:35 ../ -rw-r--r-- 1 root root 1958281216 2025-01-29 23:07:33 system.img -rw-r--r-- 1 root root 559882240 2025-01-28 11:45:30 vendor.img
システムイメージの空き領域を増やし、libhoudiniをコピーする
Ubuntu Shell (Terminal)
# システムイメージのサイズを1.9Gから2.3Gに増やす $ sudo e2fsck -f /var/lib/waydroid/images/system.img $ sudo resize2fs /var/lib/waydroid/images/system.img 2300M resize2fs 1.46.5 (30-Dec-2021) Resizing the filesystem on /var/lib/waydroid/images/system.img to 588800 (4k) blocks. The filesystem on /var/lib/waydroid/images/system.img is now 588800 (4k) blocks long. # システムイメージをマウントする $ mkdir /tmp/waydroid $ sudo mount -o rw /var/lib/waydroid/images/system.img /tmp/waydroid # libhoudiniをコピー $ sudo cp -r ./proprietary/houdini/* /tmp/waydroid/
システムイメージのbuild.propを書き換える
/tmp/waydroid/system/build.prop
# 変更する ro.product.cpu.abi=x86_64 ro.product.cpu.abilist=x86_64,x86,arm64-v8a,armeabi-v7a,armeabi ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi ro.product.cpu.abilist64=x86_64,arm64-v8a # 追加する ro.dalvik.vm.isa.arm=x86 ro.dalvik.vm.isa.arm64=x86_64 ro.enable.native.bridge.exec=1 ro.dalvik.vm.native.bridge=libhoudini.so
システムイメージをアンマウントし、Waydroidを起動する
Ubuntu Shell (Terminal)
$ umount /tmp/waydroid $ waydroid show-full-ui
前のセクションまでに行ったPlay プロテクト認定などを含む「ユーザ設定やデータ」は、システムイメージの上書き再インストールでは「初期化されない」ので安心してほしい。
カスタマイズ
表示サイズの設定
デフォルトでは全画面表示となるため、これを画面の一部に縮小・変更する方法。
Waydroidが起動している状態で、Waydroid Prop Optionsで設定する。
Ubuntu Shell (Terminal)
$ waydroid prop set persist.waydroid.width 800 $ waydroid prop set persist.waydroid.height 1024 # waydroid-container.service を再起動する $ systemctl restart waydroid-container.service
デフォルト値(全画面)に戻すには
Ubuntu Shell (Terminal)
$ waydroid prop set persist.waydroid.width "" $ waydroid prop set persist.waydroid.height "" $ systemctl restart waydroid-container.service
adbで接続する
WaydroidのIPアドレスが192.168.240.112の場合、公式Web「Using ADB with Waydroid」にかかれているようにPort=5555に接続し、次のようにadb shell を実行することができる。
Ubuntu Shell (Terminal)
$ adb connect 192.168.240.112:5555 connected to 192.168.240.112:5555 $ adb shell waydroid:/ $ uname -a Linux waydroid 6.8.0-51-generic #52~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Dec 9 15:00:52 UTC 2 x86_64 waydroid:/ $ exit $ adb disconnect disconnected everything
また、Ubuntu側に用意したapkをインストールする場合は次のように行う。
Ubuntu Shell (Terminal)
$ adb connect 192.168.240.112:5555 connected to 192.168.240.112:5555 $ adb install MiXplorer_v6.65.1_B24053022-arm64.apk Performing Streamed Install Success $ adb disconnect disconnected everything
Waydroidのユーザ ディスク領域にホスト側から直接アクセスする
root権限で.local/share/waydroid/data/media/0
にアクセスする。
Ubuntu Shell (Terminal)
$ sudo ls -la .local/share/waydroid/data/media/0 合計 56 drwxrwx--- 14 1023 1023 4096 1月 30 12:23 . drwxrwx--- 3 1023 1023 4096 1月 30 12:20 .. drwx------ 2 10144 10144 4096 1月 28 12:08 Alarms drwxrws--x 5 1023 1023 4096 1月 28 12:07 Android drwx------ 2 10144 10144 4096 1月 28 12:08 Audiobooks drwx------ 2 10144 10144 4096 1月 28 12:08 DCIM drwx------ 2 10144 10144 4096 1月 28 12:08 Documents drwx------ 2 10144 10144 4096 1月 28 12:08 Download drwx------ 3 10144 10144 4096 1月 28 12:08 Movies drwx------ 3 10144 10144 4096 1月 28 12:08 Music drwx------ 2 10144 10144 4096 1月 28 12:08 Notifications drwx------ 3 10144 10144 4096 1月 28 12:08 Pictures drwx------ 2 10144 10144 4096 1月 28 12:08 Podcasts drwx------ 2 10144 10144 4096 1月 28 12:08 Ringtones
また、公式Web「Setting up a shared folder」によれば、ホスト側のディレクトリをWaydroid側にマウントすることもできる。