来源与许可:本篇包含 Ivon Huang 的《Waydroid使用技巧:解決沒網路、觸控沒反應、註冊Play商店、安裝ARM轉譯器》的整理与改编。原文及本篇基于原文的改编部分按 CC BY-SA 4.0 提供,须署名并以相同方式共享。本篇选编部分章节,并补充命令示例、安全提示与版本边界;原作者经验与本站补充说明应分别理解。2026-10-09 补充本许可说明。此说明仅适用于上述来源材料及其改编,不将该许可扩展至本站其他内容,也不表示原作者认可本站。
适用范围与操作前提#
命令和输出使用通用示例。内核、镜像、包与服务版本会影响具体行为,阅读时应结合所用版本的文档核对。
修改容器、镜像、挂载和防火墙前先备份 Android 数据并停止相关会话;带删除或强制停止的示例可能丢失数据。NixOS 的系统与用户环境配置应通过 Nix 管理,通用 Linux 的 apt/pacman、直接写 /etc 和 pip 安装段落不用于 NixOS 宿主。重建的 build、test、switch 与启动后的功能验证是不同阶段。
本文整理自 Ivon Huang 的原文,保留繁体中文内容。原剪藏有部分命令缺失,下方以官方接口补齐必要示例;历史现象不保证适用于当前版本。
窗口与桌面集成#
若是點選其他 APP 圖示(從 Linux 桌面的圖示啟動,而不是點 Android 桌面的圖示),則 APP 會以獨立視窗啟動,分別顯示在 Linux 桌面的工作列,視窗大小固定。依然一次只能執行一個 APP,無法同時執行。切換 APP 視窗,則另外一個 APP 會暫停,例如遊戲 APP 的畫面會凍結,Youtube 會停止播放。這些 APP 無法使用通知欄,且點選返回鍵的話,APP 視窗就會自動關閉,但不會完全停止執行。
如果啟用「多視窗模式」的話(啟動方法見下),則 Linux 桌面的 Waydroid 圖示會消失,然後從 Linux 桌面啟動 APP 就可以調整視窗大小,且能夠同時執行,不會因為切換 APP 而暫停。當你點選打叉或者返回鍵,APP 視窗會關閉,但不會完全停止執行。
Waydroid 的文字剪貼簿與輸入法整合是不同功能;可在 Android 安裝適合的輸入法,不限定為 Gboard。宿主輸入法的可用性依圖形/輸入整合而異。
2. Waydroid 的操作指令#
Waydroid 執行時的 Android 系統資料放在 ~/.local/share/waydroid/data/,系統映像檔位於/var/lib/waydroid,APP 圖示位於~/.local/share/applications/
啟動 Waydroid 容器服務
停止 Waydroid 容器服務
如何更新 Android 系統?用此指令停止容器,並下載最新映像檔:
用指令開啟 Waydroid 主畫面
查看系統錯誤訊息
Waydroid 可以用指令安裝 APK
用以下指令進入 Android shell,內建 Root 權限,能夠執行 Android Shell 指令。
Wyadroid 啟動後會自動開啟 ADB 偵錯,可以從 Linux 宿主機啟動 ADB 與其配對。IP 位址可以在 Androi 系統設定 → 關於手機找到。
如何開啟開發人員選項?開啟 Android 系統設定 → 關於手機 → 版本號碼,點五下。之後 Android 系統設定 → 系統就會出現開發人員選項(通常按畫面提示點擊版本號 7 次)。
3. 將 Waydroid 語言改成中文#
在 Android 的界面開啟 Settings → System → Languages,加入中文,並將滑桿拉到最上面。
Android 的時間應該會在調整語言之後,自動依照時區和網路時間同步。
4. 解決 Waydroid 沒有網路#
請嘗試開放防火牆通訊埠,依照發行版不同防火牆也不同,可能有 Firewalld、UFW、iptables 等等。 Ubuntu 的 UFW 指令: Fedora 的 Firewalld 指令: 再重新啟動 Waydroid: 如果還是不行,可能是 Waydroid 跟 Docker 網路衝突。我們沒有必要關閉 Docker,只要修改 Waydroid 網路設定檔: LXC_USE_NFT 是網路腳本变量,先核對目前套件,不將它追加到 LXC config 當有效選項: 再重新啟動 Waydroid 應該就可以了。
5. Google Play 商店裝置註冊#
Waydroid 基於 LineageOS 建置,你應該在安裝 Waydroid 的時候就下載了內建 GMS 服務的映像檔。但是第三方 ROM 不向 Google 註冊裝置的話,是無法存取 Google Play 商店的。
- 進入 Android 的 shell
- 執行以下指令,會迸出一長串代碼,即 GMS 的裝置 ID。如果沒有輸出,請確認 Waydroid 是否有正常連上網路。
- 到 Google裝置註冊,填入該代碼
- 等待服務反映註冊狀態後再重啟;自認證不保證所有 Play 商店或完整性檢查問題都會消失。
6. 安裝 ARM 轉譯器解決 APP 閃退問題#
ARM 架構的電腦可以跳過此步驟。
鑑於大多數電腦都是 x86 架構,而許多手遊只提供 ARM 架構的 APK,因此需要一個將 ARM 指令翻譯成 x86 的指令的軟體。
如何確認 APP 只有 ARM 架構?預設沒有 ARM 轉譯器的情況下,Google Play 可能不會顯示特定 APP。或者在安裝 APK 後,透過 Package Manager查看這個 APP 是否含有/lib/x86_64 的函式庫,如果只有 ARM,那麼開起來會閃退。需要安裝 ARM 轉譯器。
目前 ARM 轉譯器有 Intel 研發的「libhoudini」和 Google 研發的「libndk」,都是專有軟體。部分社群建議按 CPU 廠商選擇,但不能視為已證實的性能保證;鏡像版本、指令集與應用更需要實測。可能有的 APP 可以在其中一個運作,另一個卻不行,需要多方測試。請注意不要同時安裝兩個 ARM 轉譯器。要安裝另外一個的時候,你應該執行下述的指令稿,選取 Remove 舊的再安裝新的轉譯器。
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
- 執行指令稿,用空白鍵選取
libhoudini或者libndk,然後 Enter 安裝,安裝 ARM 轉譯器。ARM 轉譯器嚴格對應 Android 版本,不可以跨版本混用。 - 重啟 Waydroid
- 有時候 Google Play 可能還是不會顯示 x86 架構以外的應用程式,為此您需要到 ApkMirror 找 ARM 架構的 APK 來裝,看能否正常開啟。
- 如果 ARM 轉譯器執行特定 APP 有問題,嘗試到 Waydroid的Github issue回報,看看有沒有社群製作的 patch 能用。例如針對《蔚藍檔案》遊戲,有玩家製作了這個指令稿 修復登入崩潰的問題。
- 更新 Waydroid 系統之後可能需要重裝 ARM 轉譯器。
多視窗模式 (multi window mode) 對需要直向使用的 APP 很有幫助,也能讓多個 APP 同時執行。
10. 用以下指令設定為 true,讓 Waydroid 開啟多視窗模式,允許在同一個畫面執行多個 APP。
11. 建議在 Android 開發人員選項開啟「允許自由形式視窗」。
12. 之後 Linux 應用程式選單的 Waydroid 圖示就會消失(仍可透過 waydroid show-full-ui 指令開啟 Android 主畫面),只剩下 APP 圖示。
13. APP 開啟後,會變得好像 Linux 的原生應用程式一般,能夠自由調整視窗大小。
14. 有些 APP 可能依然會以全螢幕啟動,需要按 F11 切換視窗模式,再按一次 F11 進入全螢幕。
15. 若有 APP 進入全螢幕模式,則其他 APP 會暫停,就無法同時執行二個以上 APP 了,最好維持視窗化。
16. 因為在多視窗模式下無法使用 Android 的多工界面,所以要完全中止 APP 執行,只能開啟 Android Settings → 應用程式,強制停止 APP。
原作者記錄 Android 13 的部分視窗管理限制,有些 APP 縮放後會壞掉,或者根本無法縮放。覺得出問題的話就把這功能關掉: 另外,Android 也有內建「自由形式」視窗功能,從多工畫面啟動,這會讓 APP 只在 Waydroid 的視窗內自由縮放。
8. 多開 APP,同時執行多個 APP#
Waydroid 設計上沒辦法開啟多個實例 (instances) ,所以不能一個 APP 同時登入二個帳號達成多開。但是你可以透過 Shelter 的工作設定檔功能,在一個 Android 系統雙開 APP。 依照 Waydroid 設計,APK 安裝之後會在 Linux 桌面的應用程式列表顯示各個 Android APP 的圖示,點這裡啟動就能夠執行多個 APP。但是得開啟「多視窗模式」,才能「同時」執行二個以上 APP。 如果多視窗模式下,有 APP 不願意視窗化,堅持全螢幕該怎麼辦?善用桌面環境的虛擬桌面。GNOME、KDE Plasma、Hyprland、COSMIC 都有虛擬桌面 (virtual desktop,或稱 workspace) 的功能,如果 APP 啟動會佔滿目前虛擬桌面的整個畫面,要使用另一個 APP 就是切換到下一個虛擬桌面再啟動。每個工作區就能分別執行各自的 APP。
9. Linux 與 Waydroid 共享目錄#
Waydroid 啟動後的資料位於 ~/.local/share/waydroid/data/media/0/ 目錄。這裡是 Android 的內部儲存空間,需要 Root 權限才能存取。
如果使用 KDE Dolphin 檔案管理器 6.0 以上版本進入,可以申請 Root 權限強制讀取 Android 的檔案。
或者,使用掛載一般權限目錄的方式來存取檔案。為了不影響其他檔案,我建議在兩邊新增一個專門用於共享的資料夾 WaydroidShared。使用 mount 指令,將 Linux 的~/WaydroidShared掛載到 Waydroid 裡面的WaydroidShared 資料夾:
您也可以用 ADB 指令無線傳輸檔案。Waydroid 的 IP 到 Android 系統設定 → 關於查看。
adb connect Waydroid的IP:5555
adb push "本機目錄" "Android的目錄"
部份 APP 會要求開啟 Wifi 才能下載,不然會以為你只有行動數據,那麼就如它所願,開啟 fake wifi。
使用 waydroid app list 指令,查看 APP 的套件名稱。
使用以下語法設定:
waydroid prop set persist.waydroid.fake_wifi "套件名稱"
例如給 Mihon 漫畫閱讀器開啟模擬 Wifi,並在該 APP 設定開啟允許非 Wifi 下載,然後重新啟動容器:
使用 waydroid app list 指令,用於查看 APP 的套件名稱。
有些 APP 認不到滑鼠點擊,需要啟用 fake touch:
waydroid prop set persist.waydroid.fake_touch "套件名稱"
例如給 Fate/Go 遊戲開啟模擬觸控,然後重新啟動容器: 如果 APP 開啟模擬觸控之後還是無法點選,請考慮使用其他方案,譬如:搭配Scrcpy操作Waydroid 安裝 Rotation Control 這類 APP,即可強制調整 Waydroid 螢幕方向。 Waydroid 可能無法調整成直向螢幕解析度,除非你使用可以旋轉螢幕的 Linux 平板。
13. 調整 APP 音量#
開啟 Android 系統設定 → 音訊,調整音量。
實體鍵無法控制 Android 容器內的音量,所以得另外安裝調整音量的 APP。放在 Android 桌面當作小工具,或者是用 Sound Quick Settings,新增一個音量調整按鈕到 Android 通知欄。
Linux 桌面的音量控制面板可以單獨將 Waydroid 的輸出靜音,譬如 pavucontrol。
另外,Waydroid 可以存取 Linux 的麥克風,Android APP 應該能夠正常錄製音效。麥克風音量同樣能夠從 pavucontrol 控制面板調整。
若有多個 APP 在執行,要單獨將特定 APP 靜音的話,建議使用 ShizuTools 的 MixedAudio 功能。
Android 的多工畫面有單個 APP 的截圖按紐。
Linux 端沒有快捷鍵能夠觸發 Android 硬體鍵的截圖,所以就用 Linux 端的截圖軟體吧。
或者,安裝 Screenshot Tile,Android 的通知欄就會多出一個原生截圖按鈕。
15. 防止 APP 偵測到 Root 或模擬器導致閃退#
有時候 APP 不給安裝或閃退,不是因為 ARM 轉譯的問題,而是 APP 認為你的裝置不安全。
Waydroid 的 Play Integrity API 等級連最基本的都無法通過,因此部份 APP 會拒絕執行。
此外需要 DRM 的 APP 也會無法播放。
這種解法就比較複雜,看是要安裝 Magisk 來隱藏 Root,亦或是偽裝機型。參見:Waydroid躲避Root偵測 & 安裝Magisk與LSPosed
Waydroid 的 Android APP 圖示位於 ~/.local/share/applications/waydroid.*
寫個指令稿於 Waydroid 關閉後刪除之。
如果不方便使用 Wayland 工作階段,就用巢狀 Wayland 工作階段解決。
參見:在Linux X11桌面用Weston啟動Waydroid,不依賴Wayland協定桌面
原作者在 Nvidia 驅動 575 時記錄:Waydroid 只支援 Intel 與 AMD 的顯示卡,不支援 Nvidia。如果硬要在 Nvidia 顯示卡跑的話就只能改用軟體渲染啟動 Waydroid。此模式下無效能可言,無法玩遊戲。
註解:有人做了一個 waydroid-choose-gpu.sh 指令稿能夠選取 Waydroid 使用的 GPU,似乎能解決 Nvidia + Intel 配置的顯示卡問題,在 Nvidia 作為主顯示卡的情況下強制使用 Intel 顯示卡渲染,但因為 Waydroid 需要桌面合成器協助,同一 GPU 可能減少 dma-buf 跨裝置兼容問題,但不是普遍強制要求,因此這個指令稿似乎只在 Intel + AMD 的配置有效。
17. 初始化 Waydroid
18. 編輯設定檔
19. 填入以下內容,啟用 SwiftShader
20. 套用變更
21. 重新啟動 Waydroid
補齊剪藏中的操作入口#
sudo systemctl start waydroid-container
waydroid session start
waydroid show-full-ui
waydroid log
waydroid app install /path/to/example.apk
sudo waydroid shell
waydroid prop set persist.waydroid.multi_windows true
waydroid session stop共享專用目錄前建立兩邊目錄,確認權限與資料範圍;不把整個 home 共享到 Android。停止會話、備份,再對專用目錄使用 bind mount,並檢查容器映射是否可見。
mkdir -p ~/WaydroidShared
# Android 資料目錄的建立/權限按現場使用者和映像核對
sudo mount --bind ~/WaydroidShared ~/.local/share/waydroid/data/media/0/WaydroidSharedSwiftShader 的啟動期配置在 /var/lib/waydroid/waydroid.cfg 的 [properties] 中:
[properties]
ro.hardware.gralloc=default
ro.hardware.egl=swiftshader先停止使用中的會話,再按已安裝版本執行 sudo waydroid upgrade --offline 並重啟容器。此操作可能重建生成屬性,備份自定義設定。
核对依据#
参考与延伸
根据技术笔记重新整理,示例使用通用名称。