快轉到主要內容

Waydroid使用技巧:解決沒網路、觸控沒反應、註冊Play商店、安裝ARM轉譯器

· 民國114年乙巳年
·
切換繁體/簡體
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid Linux Android
目錄

這篇是針對Linux的Android容器「Waydroid」所寫的一篇綜合性文章。Ivon將會討論一些使用上常常會遇到的問題。

請先在系統上安裝Waydroid:Ubuntu安裝Waydroid

Waydroid的操作指令
#

Waydroid執行時的Android系統資料放在~/.local/share/waydroid/data/,系統映像檔位於/var/lib/waydroid,APP圖示位於~/.local/share/applications/

啟動Waydroid容器服務

sudo systemctl start waydroid-container

停止Waydroid容器服務

sudo systemctl stop waydroid-container

如何更新Android系統?用此指令下載最新版內建GAPPS的映像檔

sudo waydroid init -s GAPPS -f

用指令開啟Waydroid主畫面

waydroid show-full-ui

查看系統錯誤訊息

waydroid log

sudo waydroid logcat

Waydroid可以用指令安裝APK

waydroid app install <APK檔案路徑>.apk

用以下指令進入Android ADB shell,內建Root權限

sudo waydroid shell

註冊裝置才可以使用Google Play商店
#

Waydroid基於LineageOS建置,雖然內建GMS服務,但是第三方ROM不向Google註冊裝置的話,是無法存取Google Play商店的。

  1. 進入Android的shell
sudo waydroid shell
  1. 執行以下指令,會迸出一長串代碼,即GMS的裝置ID(如果沒有輸出,請確認Waydroid是否有正常連上網路)
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\";"
  1. Google裝置註冊,填入該代碼

  2. 等30分鐘後,重新啟動Waydroid,就可以使用Play商店了。

sudo systemctl restart waydroid-container

安裝ARM轉譯器libhoudini
#

ARM架構的電腦可以跳過此步驟。

鑑於大多數電腦都是x86架構,而許多手遊只提供ARM架構的APK。因此需要一個將ARM指令翻譯成x86的指令的軟體。目前ARM → x86的轉譯器有Intel研發的libhoudini和Google研發的libndk,都是專有軟體,前者比後者穩定些。

  1. 取得casualsnek製作的指令稿
sudo apt install lzip

cd ~

git clone https://github.com/casualsnek/waydroid_script

cd waydroid_script

python3 -m venv venv

venv/bin/pip install -r requirements.txt

cd ~/waydroid_script
  1. 執行指令稿安裝libhoudini。用空白鍵選取Houdini然後Enter安裝。
sudo venv/bin/python3 main.py
  1. 重啟Waydroid
sudo systemctl restart waydroid-container
  1. 有時候Google Play可能還是不會顯示x86架構以外的應用程式,為此您需要到ApkMirror找ARM架構的APK來裝,看能否正常開啟。

解決Waydroid沒有網路的問題
#

請嘗試開放防火牆通訊埠,依照發行版不同防火牆也不同,可能有Firewalld、UFW、iptables等等。

以UFW為例,開放以下通訊埠:

sudo ufw allow 53

sudo ufw allow 67

sudo ufw default allow FORWARD

sudo ufw reload

再重新啟動Waydroid:

sudo systemctl restart waydroid-container

APP模擬Wifi連線
#

部份APP會要求開啟Wifi才能使用,那麼就如它所願,開啟fake wifi。

安裝Package Manager,用於查看APP的套件名稱。

使用以下語法設定:

waydroid prop set persist.waydroid.fake_wifi "套件名稱"

例如給Fate/Go遊戲開啟模擬Wifi:

waydroid prop set persist.waydroid.fake_wifi "com.aniplex.fategrandorder"

APP模擬觸控點擊
#

安裝Package Manager,用於查看APP的套件名稱。

有些APP認不到滑鼠點擊,需要啟用fake touch:

waydroid prop set persist.waydroid.fake_touch "套件名稱"

例如給Fate/Go遊戲開啟模擬觸控:

waydroid prop set persist.waydroid.fake_touch "com.aniplex.fategrandorder"

如果APP開啟模擬觸控之後還是無法點選,請考慮使用其他方案,譬如搭配Scrcpy操作Waydroid

開啟多視窗懸浮模式
#

以下指令讓Waydroid開啟多視窗模式,變成好像Linux的原生應用程式一般。啟動後按F11暫時改回來。

waydroid prop set persist.waydroid.multi_windows true

sudo systemctl restart waydroid-container

有些APP可能依然會以全螢幕啟動,需要按F11進入視窗模式。

Linux與Waydroid共享資料夾
#

為了不影響其他檔案,我建議在兩邊新增一個專門用於共享的資料夾WaydroidShared

使用mount指令,將Linux的~/WaydroidShared掛載到Waydroid裡面的WaydroidShared資料夾:

sudo mount --bind  ~/WaydroidShared ~/.local/share/waydroid/data/media/0/WaydroidShared

sudo chmod -R 777 ~/.local/share/waydroid/data/media/0/WaydroidShared

您也可以用ADB指令無線傳輸檔案。Waydroid的IP到Android系統設定 → 關於查看。

adb connect Waydroid的IP:5555

adb push "本機目錄" "Android的目錄" 

不想要Waydroid APP圖示出現在Linux桌面
#

Waydroid的Android APP圖示位於~/.local/share/applications/waydroid.*

寫個指令稿於Waydroid關閉後刪除之。

強制旋轉APP螢幕方向
#

安裝Rotation Control這類APP,即可強制調整Waydroid螢幕方向。

你可能會需要用到SecondScreen調整螢幕解析度。

調整APP音量
#

開啟Android系統設定 → 音訊,調整音量。

實體鍵無法控制Android容器內的音量,所以得另外安裝調整音量的APP。放在Android桌面當作小工具。

Linux宿主機的PulseAudio控制面板可以單獨將Waydroid的輸出靜音。

APP截圖
#

沒有快捷鍵能夠觸發Android的截圖,所以就用Linux端的截圖軟體吧。

或者,安裝Screenshot Tile,Android的通知欄就會多出一個原生截圖按鈕。

多開APP
#

Waydroid設計上沒辦法開啟多個實例。

但是你可以透過Shelter的工作設定檔功能,在一個Android系統雙開APP。

在X11桌面啟動Waydroid
#

如果不方便使用Wayland工作階段,就用巢狀Wayland工作階段解決。

  1. 安裝Weston合成器套件
sudo apt install weston
  1. 開啟終端機,輸入weston指令啟動巢狀Wayland工作階段,將視窗放到最大。

  2. 再開啟Weston的終端機,啟動Waydroid

waydroid show-full-ui

Nvidia顯示卡以軟體渲染強制啟動Waydroid
#

撰文當下Waydroid只支援Intel與AMD的顯示卡,不支援Nvidia。如果硬要在Nvidia顯示卡跑的話就只能改用軟體渲染啟動Waydroid。此模式下無效能可言,無法玩遊戲。

  1. 初始化Waydroid
sudo waydroid init -s GAPPS -f
  1. 編輯設定檔
sudo vim /var/lib/waydroid/waydroid.cfg
  1. 填入以下內容,啟用SwiftShader
[properties]
ro.hardware.gralloc=default
ro.hardware.egl=swiftshader
  1. 套用變更
waydroid upgrade --offline
  1. 重新啟動Waydroid
sudo systemctl restart waydroid-container

參考資料
#

相關文章

樹莓派同時裝Linux與Android APP ~ Waydroid安裝教學
分類   資訊科技 虛擬機與容器技術
標籤   Raspberry Pi Waydroid Android Linux
ReDroid教學:用Docker跑Android系統,在x86電腦玩ARM手機遊戲
分類   資訊科技 虛擬機與容器技術
標籤   ReDroid Android Docker Linux Scrcpy
Linux跑Android APP,Ubuntu安裝Waydroid教學
分類   資訊科技 虛擬機與容器技術 Linux玩遊戲
標籤   Waydroid Ubuntu Android

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。