Waydroid是Anbox配合Halium技術開發的LXC Android容器,可在GNU/Linux系統執行Android APP。

- 作業系統:Arch Linux
- Linux核心版本:6.2.2
- Waydroid映像檔版本:LineageOS 18 (Android 11)
由於圖形驅動程式的緣故,目前Waydroid只支援Intel和AMD的顯示卡,Nvidia顯示卡建議直接放棄。
Waydroid會直接使用電腦顯示卡硬體加速,因此跑3D遊戲沒什麼問題。
Waydroid映像檔有內建GAPPS,可以使用Google Play。
若Waydroid無法啟動,請善用sudo systemctl status waydroid-container
和waydroid log
和sudo waydroid logcat
查看錯誤訊息。
Waydroid必須使用Wayland顯示協定,用此指令檢查目前的工作階段是否為Wayland:
若顯示X11代表不是Wayland。GNOME和KDE可在登入畫面切換至Wayland工作階段。
如果想在X11工作階段使用Waydroid,請安裝Weston。
Waydroid要求Linux核心支援binder核心模組,但Arch Linux預設的linux
核心並無開啟此選項,因此需要從AUR安裝binder_linux-dkms
補齊。
1
| yay -S binder_linux-dkms
|
安裝後載入binder核心模組
1
| sudo modprobe binder_linux
|
- 從AUR安裝Waydroid:
1
2
| yay -S python-pyclip
yay -S waydroid
|
- 初始化Waydroid,下載含有GAPPS的Android 11系統映像檔。
1
| sudo waydroid init -s GAPPS -f
|
- 啟動Waydroid容器服務
1
2
3
| sudo systemctl start waydroid-container
# 開機自動啟動
sudo systemctl enable waydroid-container
|
接著點選應用程式列表的「Waydroid」圖示開啟主畫面,或者使用指令:waydroid show-full-ui

若Waydroid沒有網路,允許其通過防火牆:
1
2
3
4
| sudo ufw allow 53
sudo ufw allow 67
sudo ufw default allow FORWARD
sudo ufw reload
|
Waydroid第一次開機可能會收到Device is not Play Protect certified
的通知,無法登入Google帳號。

此時要執行casualsnek的指令稿取得Waydroid的裝置ID。該指令會印出一長串數字。
1
2
3
4
5
6
7
8
| sudo pacman -S lzip sqlite
cd ~
git clone https://github.com/casualsnek/waydroid_script
cd ~/waydroid_script
sudo python3 -m pip install -r requirements.txt
cd ~/waydroid_script
sudo python3 main.py -i
|
- 開啟裝置註冊頁面,登入Google帳號,輸入裝置ID註冊,等個半小時應該就能登入Google帳號了。如果還是不行就重新啟動Waydroid容器服務:
1
| sudo systemctl restart waydroid-container
|
- 現在可以安裝APP了,Google Play和F-Droid會自動篩出適合x86架構的APP。

很多APP只為手機的ARM架構打造,但大多數電腦都是x86架構,為此你需要安裝ARM轉譯器才能執行ARM架構的APP。
目前ARM→x86的轉譯器有libhoudini和libndk,前者比後者穩定些。
- 執行casualsnek的指令稿安裝libhoudini:
1
2
| cd ~/waydroid_script
sudo python3 main.py -l
|
- 重啟Waydroid
1
| sudo systemctl restart waydroid-container
|
- 試著安裝Subway Surfers這款小遊戲。如果開的起來代表ARM轉譯器正常運作。
- 用指令開啟Waydroid主畫面
- 啟動/停止Waydroid容器服務
1
2
| sudo systemctl start waydroid-container
sudo systemctl stop waydroid-container
|
- Waydroid在啟動後可以進入Android Shell,並且有Root權限
- Waydroid用此指令安裝APK
1
| waydroid app install <APK檔案>.apk
|
- 讓Waydroid開啟多視窗模式,變成好像Linux的原生應用程式一般。啟動後按F11切換
1
2
| waydroid prop set persist.waydroid.multi_windows true
sudo systemctl restart waydroid-container
|
- 如果要完全移除Waydroid:
1
2
3
4
| waydroid session stop
sudo systemctl stop waydroid-container
yay -Rsn waydroid
sudo rm -rf /var/lib/waydroid /home/.waydroid ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid
|
Nivida跑Waydroid建議直接放棄,或者改用內顯。硬要用軟體渲染效能很差。
- 編輯
/var/lib/waydroid/waydroid_base.prop
,加入以下內容改用軟體渲染。
1
2
| ro.hardware.gralloc=default
ro.hardware.egl=swiftshader
|
- 重新啟動Waydroid服務
1
| sudo systemctl restart waydroid-container
|
- 再點選應用程式列表的Waydorid圖示啟動。
- 啟動Weston
- 啟動Waydrid主畫面
1
2
| export XDG_SESSION_TYPE=wayland
waydroid show-full-ui
|