Latest News

首頁 » 2025 完美避坑版:Windows 11 原生运行安卓 (Waydroid) 完整教程

2025 完美避坑版:Windows 11 原生运行安卓 (Waydroid) 完整教程

專案亮點:

  • 極度純淨: 採用“編譯即焚”策略,只保留幾百MB的內核檔案,不佔用幾十GB的C盤空間。
  • 相容性無敵: 完美支援 ARM 架構(微信、抖音、王者榮耀、吃雞)。
  • 功能全開: 自帶谷歌服務框架 (GAPPS),支援 Magisk Root,銀行 App 指紋支付全過。

⚠️ 避坑指南(必讀):

  • 代理報錯: 如果看到 “WSL 不支援 localhost 代理” 的紅色提示,請直接忽略,做完第四階段會自動修復。
  • 下載慢: 起始化安卓時下載速度可能較慢,請耐心等待,盡量不要手動中斷。
  • 目錄問題: 教學中所有指令都已包括 cd ~,請嚴格複製,不要自己亂切目錄。

第一階段:準備一次性編譯環境

1. 起始化 WSL

右鍵“開始選單” -> 終端 (管理員),輸入以下指令啟用 Linux 子系統支援:

# 安裝 WSL 功能並啟用虛擬機平台
wsl --install

完成後重啟電腦

2. 安裝編譯工具

重啟後進入 WSL (Ubuntu),執行以下指令安裝構建 Linux 內核所需的依賴包:

# 回到使用者主目錄
cd ~
# 更新軟體源並安裝編譯所需的依賴包 (如 gcc, make, git 等)
sudo apt update && sudo apt install -y build-essential flex bison dwarves libssl-dev libelf-dev cpio qemu-utils git bc pahole unzip

3. 下載源程式碼

設定 Git 快取以防止下載大檔案失敗,並克隆微軟官方的 WSL2 內核源程式碼:

# 確保在主目錄操作
cd ~
# 設定 Git 快取區為 500MB,防止下載大檔案中斷
git config --global http.postBuffer 524288000
# 關閉 SSL 驗證,防止因網路問題導致連線失敗
git config --global http.sslVerify false
# 建立存放內核的目錄並進入
mkdir -p ~/kernel && cd ~/kernel
# 克隆微軟官方 WSL2 內核源程式碼 (6.6.y 版本),--depth=1 表示只下載最新一次送出,節省流量
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git --depth=1 --branch linux-msft-wsl-6.6.y
# 進入源程式碼目錄
cd WSL2-Linux-Kernel

第二階段:編譯內核與驅動 (VHDX 專案)

1. 配置內核

這裡使用 6.6.x 內核的新版配置。這些指令將開啟安卓運行所需的 Binder IPC 通信機制:

# 1. 複製微軟官方提供的 WSL 預設配置檔案
cp Microsoft/config-wsl .config

# 2. 修改配置檔案,追加 Android 支援和 PSI 效能監控支援
cat >> .config <<EOF
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDERFS=y
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
CONFIG_PSI=y
EOF

# 3. 根據新修改的配置,自動更新其他依賴選項
make olddefconfig

2. 編譯並打包

這一步耗時約 15-20 分鐘,將編譯內核並生成獨立的驅動磁碟檔案:

# 使用所有 CPU 核心並行編譯內核 (加快速度)
make -j$(nproc)

# 安裝編譯好的模組到 modules 目錄
make INSTALL_MOD_PATH="$PWD/modules" modules_install
# 精簡驅動檔案,去除不必要的除錯符號,減小體積
find ./modules/lib/modules/$(make -s kernelrelease) -name '*.ko' -exec strip --strip-unneeded {} \;

# 賦予腳本執行權限
sudo chmod +x Microsoft/scripts/gen_modules_vhdx.sh
# 運行微軟官方腳本,將 modules 目錄打包成 modules.vhdx 虛擬磁碟檔案
sudo ./Microsoft/scripts/gen_modules_vhdx.sh "$PWD/modules" $(make -s kernelrelease) modules.vhdx

3. 匯出檔案

注意: 執行完這一步會自動離開 WSL。

# 在 D 盤建立資料夾 (你可以改成其他盤符,但後面配置要對應)
sudo mkdir -p /mnt/d/MyWaydroid
# 複製編譯好的內核檔案 (bzImage) 到 D 盤
sudo cp arch/x86/boot/bzImage /mnt/d/MyWaydroid/bzImage
# 複製打包好的驅動磁碟 (modules.vhdx) 到 D 盤
sudo cp modules.vhdx /mnt/d/MyWaydroid/modules.vhdx
# 提示成功並離開 WSL
echo "✅ 匯出成功,準備離開..."
exit

第三階段:重設環境

Windows PowerShell (管理員) 中執行以下指令,刪除剛才的編譯環境,釋放空間:

# 登出並刪除 Ubuntu 系統,清理編譯產生的垃圾檔案
wsl --unregister Ubuntu

第四階段:配置正式環境

1. 重裝 Ubuntu

# 重新安裝一個干淨的 Ubuntu
wsl --install -d Ubuntu
# 注意:進入系統後設定好使用者名密碼,然後輸入 exit 離開!
exit

2. 配置 .wslconfig (解決代理和記憶體問題)

在 PowerShell 中執行(確保路徑是雙斜槓 `\\`)。此配置將啟用鏡像網路(解決代理問題)並掛載我們在第二階段編譯的內核:

# 定義配置內容變量
$config = @"
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
memory=8GB
processors=4
kernel=D:\\MyWaydroid\\bzImage
kernelModules=D:\\MyWaydroid\\modules.vhdx

[experimental]
ignoredPorts=53
"@
# 將配置寫入使用者主目錄下的 .wslconfig 檔案
Set-Content -Path "$env:USERPROFILE\.wslconfig" -Value $config
# 強制關閉 WSL 以應用新配置
wsl --shutdown

第五階段:安裝與關鍵修復 (必做!)

重新輸入 wsl 進入 Ubuntu。

1. 修復 BinderFS (解決 “ls: cannot access” 報錯)

※→ 新版內核必須手動掛載驅動,否則無法啟動!
cd ~
# 1. 建立 binderfs 掛載點目錄
sudo mkdir -p /dev/binderfs

# 2. 將 binder 檔案系統掛載到該目錄
sudo mount -t binder binder /dev/binderfs

# 3. 建立軟連結,讓 Waydroid 能在預設路徑找到驅動
sudo ln -s /dev/binderfs/binder /dev/binder
sudo ln -s /dev/binderfs/hwbinder /dev/hwbinder
sudo ln -s /dev/binderfs/vndbinder /dev/vndbinder

# 4. 修改 fstab 檔案,確保開機自動掛載驅動
echo "binder /dev/binderfs binder nofail 0 0" | sudo tee -a /etc/fstab

# 5. 驗證是否成功 (如果輸出 /dev/binder 則成功)
ls /dev/binder

2. 安裝 Waydroid

# 更新軟體源並安裝基礎依賴工具
sudo apt update && sudo apt install -y curl ca-certificates python3-pip python3-venv weston

# 加入 Waydroid 官方軟體源
curl https://repo.waydro.id | sudo bash
# 安裝 Waydroid 主程式
sudo apt install -y waydroid

3. 起始化 (自動下載)

這一步會下載約 800MB 的鏡像,請保持網路通暢,耐心等待,不要中斷

# 起始化 Waydroid,-s GAPPS 表示下載帶谷歌框架的版本,-f 表示強制重設
sudo waydroid init -s GAPPS -f
看到 “Waydroid initialized successfully” 即為成功!

第六階段:修改更新、Root 與銀行認證

1. 啟動 Waydroid

在安裝後續修改更新前,先啟動一次 UI 確保基礎環境標準:

# 啟動 Waydroid 圖形介面
waydroid show-full-ui

2. 修復 Play Protect 認證 (解決 Google 彈窗)

Waydroid 預設未通過谷歌認證,這會導致 Google Play 無法登入並瘋狂彈窗。我們需要手動註冊裝置 ID。

A. 取得 Android ID

在 Ubuntu 終端執行以下指令:

# 進入安卓 Shell,查詢 Google 服務資料庫中的 Android ID
sudo waydroid shell sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"

(輸出結果應為一串純數字,例如:345678901234567)

B. 註冊裝置

  1. 複製上面查詢到的那串數字。
  2. 點擊訪問 Google 裝置註冊頁面 (google.com/android/uncertified)
  3. 登入你的谷歌帳號,將數字貼上到輸入框中,點擊 “註冊 (Register)”。

C. 清除快取生效

註冊後通常需要等待 5-10 分鐘生效。生效後執行以下操作:

  1. 進入 Waydroid 安卓介面。
  2. 開啟 Settings (設定) -> Apps (應用) -> See all apps
  3. 找到 Google Play Store -> Storage & cache -> Clear storage (清除資料)
  4. 找到 Google Play Services -> Storage & cache -> Clear storage (清除資料)
  5. 重啟 Waydroid。

3. 安裝 ARM 轉譯與 Magisk (交談式)

為了運行 ARM 應用(如微信、王者榮耀)並取得 Root 權限,執行以下腳本:

cd ~
# 清理舊的腳本目錄 (如果有)
sudo rm -rf waydroid_script
# 克隆第三方安裝腳本倉庫
git clone https://github.com/casualsnek/waydroid_script
cd waydroid_script
# 建立 Python 虛擬環境,防止污染系統環境
python3 -m venv venv
# 啟動虛擬環境
source venv/bin/activate
# 安裝腳本需要的 Python 庫
pip install -r requirements.txt
# 運行主腳本
sudo venv/bin/python3 main.py

ߎ핦㍤휦쇥헯

  • 上下鍵: 搬移游標。
  • 空白鍵: 選中/取消選中(請務必選中 LibhoudiniMagisk)。
  • 換行鍵: 確認執行安裝。

安裝完成後,離開虛擬環境:

# 離開 Python 虛擬環境
deactivate

⚠️ 注意: 安裝完後,請務必重啟一次 Waydroid 才能看到 Magisk 圖示:

# 停止 Waydroid 會話
waydroid session stop
# 重新顯示 UI
waydroid show-full-ui

4. 通過 Play Integrity 認證(解決銀行 App 閃退)

為了讓銀行 App 標準使用不閃退,請按以下步驟操作:

A. 基礎配置

  1. 在安卓裡找到 Magisk (或 Kitsune Mask) 圖示開啟。
  2. 點擊 Magisk 右上角齒輪 -> 開啟 Zygisk -> 重啟 Waydroid。

B. 下載模組 (直接在安卓內操作)

開啟 Waydroid 安卓系統自帶的瀏覽器,訪問以下連結下載 ZIP 包:

下載的檔案預設會儲存在安卓的 Downloads 資料夾中。

C. 刷入與配置

  1. 在 Magisk -> 模組 -> 從本地安裝,找到 Downloads 資料夾,依次刷入剛才下載的兩個 zip。
  2. 在 Magisk -> 設定 -> 配置排除清單 (Configure DenyList)
  3. 點擊右上角選單 -> 顯示系統應用
  4. 勾選 銀行 App王者榮耀
  5. 注意: 因為安裝了 Zygisk-Assistant,設定裡的“遵守排除清單 (Enforce DenyList)”開關建議關閉
  6. 重啟 Waydroid,大功告成!

第七階段:效能釋放 —— 開啟 GPU 硬體加速

⚠️ 重要提示:
我們預設使用了 swiftshader (CPU 編譯) 以確保 100% 成功啟動。
如果你想追求高效能(比如王者榮耀 60 幀、介面絲滑),可以按以下專案嘗試開啟 GPU 加

方案A:開啟 GPU 硬體加速(效能模式)

進入 Ubuntu 終端,輸入以下指令修改配置:

# 1. 進入 Waydroid 配置模式
sudo waydroid shell

# 2. 修改編譯驅動為 d3d12 (這是 WSLg 專門的 GPU 介面)
setprop ro.hardware.gralloc default
setprop ro.hardware.egl d3d12

# 3. 離開配置模式
exit

然後重啟 Waydroid 生效:

# 停止會話
waydroid session stop
# 重新啟動
waydroid show-full-ui

方案B:如果黑屏了,如何救回(後悔藥)

如果你改完上面的設定,啟動 Waydroid 後發現視窗全黑、一直轉圈或是閃退,說明你的顯卡驅動和現用的的 Waydroid 鏡像不相容。

不需要重裝! 只需要改回 CPU 編譯即可:

# 進入配置模式
sudo waydroid shell
# 改回軟體編譯 (SwiftShader)
setprop ro.hardware.egl swiftshader
# 離開
exit

懶人福利—— 一鍵啟停腳本

在你的 Windows 桌面上新增兩個文字文件,分別貼上下面的代碼,然後將副檔名名由 .txt 改為 .bat

腳本1:啟動安卓 (Start_Waydroid.bat)

雙擊後會跳出一個黑框(請不要關閉它),稍等片刻安卓介面就會出現。

@echo off
echo 正在啟動 Waydroid...
:: 呼叫 WSL 中的 Ubuntu 發行版,執行顯示 UI 的指令
wsl -d Ubuntu waydroid show-full-ui
exit

腳本2:徹底關閉 (Kill_Waydroid.bat)

作用:關閉安卓視窗,並強制殺死 WSL 後台程式。執行後,任務管理器裡將看不到任何 WSL/Vmmem 程式,徹底釋放記憶體。

@echo off
echo 正在停止 Waydroid 會話...
:: 先嘗試溫和地停止 Waydroid 服務
wsl -d Ubuntu waydroid session stop

echo 正在關閉 WSL 子系統...
:: 強制關閉整個 WSL 子系統,釋放記憶體
wsl --shutdown

echo ✅ 已徹底關閉,Waydroid 程式已結束。
:: 等待 2 秒後自動關閉視窗
timeout /t 2

常見問題避坑:

  • 連接埠衝突 (DNS 錯誤): 教學中已加入 ignoredPorts=53,如果你發現安卓沒網,請檢查 .wslconfig 是否生效。
  • Google 彈窗紅叉: 請務必仔細執行“第六階段”的第 2 步,取得 ID 並註冊。
  • C 盤空間: 如果你選了 D 盤專案,C 盤幾乎不占額外空間,非常干淨。

最终成果:

至此,你已經擁有了一個完整、純淨且高效能的安卓子系統。享受你的 2025 新體驗吧!


【網路技術密訓基地】莫忘記初衷! (堅持!直到成功!)

【洪總教頭】曾說:過去的理念已經實現的叫做:【成就】,而還未實現的就叫:【夢想】!我們從來沒因已有的【成就】而放棄【夢想】!
唯有你我知道的秘密,就不可能到處去說給別人聽,因為:到處宣揚的就不叫做【密技】!

E-Mail:ster168ster@gmail.com