快轉到主要內容

ReDroid,在Windows電腦架設Android雲手機的方法

Linux系統 虛擬機與容器技術 ReDroid Docker Android Windows Subsystem for Linux Scrcpy
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

ReDroid是一個開源雲手機的解決方案。不同於一般的Android模擬器,ReDroid是用Docker跑Android系統,再透過Scrcpy連線到桌面,支援GPU加速。

實際使用例: 自架Android雲手機

之前介紹的ReDroid安裝以Linux實機環境為主,本文特解說如何在Windows透過WSL安裝ReDroid。

1. 硬體需求
#

  • Windows 11
  • 四核心以上x86架構CPU,CPU需支援虛擬化
  • 8GB(含)以上RAM
  • 10GB以上硬碟空間
  • 熟悉Linux指令

2. 準備WSL環境
#

參考 這篇,啟用Hyper-V,安裝WSL。

如果有Nvidia顯示卡,請安裝 WSL專用的Nvidia驅動

3. 重新編譯WSL核心
#

根據 開發者的指示,WSL預設的Linux核心缺少ReDroid所需的核心功能,且不支援動態載入核心模組,所以得整個重新編譯。

  1. 點選Ubuntu圖示,登入WSL,安裝編譯Linux核心所需的套件
sudo apt update
sudo apt install wget build-essential bison flex libncurses-dev libssl-dev libelf-dev bc pahole
  1. 查看Linux核心版本
uname -a
# 範例輸出:5.15.90.1
  1. 從Github儲存庫下載核心原始碼。
wget https://github.com/microsoft/WSL2-Linux-Kernel/archive/refs/tags/linux-msft-wsl-5.15.90.1.tar.gz
  1. 解壓縮
tar -xvf linux-msft-wsl-5.15.90.1.tar.gz
  1. 複製核心設定檔
cd WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1
cp Microsoft/config-wsl .config
  1. 接著要啟用核心功能。參考 自行編譯WSL核心,使用menuconfig將以下核心功能開啟:
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
CONFIG_DMABUF_HEAPS=y
CONFIG_DMABUF_HEAPS_SYSTEM=y
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDERFS=y
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
  1. 開始編譯核心,大約30分鐘
make -j8
  1. 開啟檔案總管,點選檢視 → 顯示隱藏項目,點選左下角的「Linux」,到Ubuntu\home\user\WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1\arch\x86\boot\資料夾,剪下bzImage檔案

  2. bzImage移動到任意資料夾,例如C:\Users\使用者名稱\wslcustomkernel

  3. 在使用者家目錄(C:\Users\使用者名稱\),右鍵新增.wslconfig檔案

  4. 右鍵用記事本開啟.wslconfig,輸入以下內容儲存。kernel代表核心bzimage所在的硬碟資料夾。

[wsl2]
kernel=C:\\Users\\使用者名稱\\wslcustomkernel\\bzImage
memory=4GB
  1. 回到WSL終端機,退出WSL
exit
  1. 再開一個終端機(以系統管理員執行),將WSL關機
taskkill /F /im wslservice.exe
wsl --shutdown
  1. 重新登入WSL。
wsl -d Ubuntu
  1. 確認核心版本是否已經成功變更
uname -v
  1. 範例輸出,核心編譯日期顯示為今天,代表核心已成功變更。

4. 安裝Docker
#

  1. 安裝Docker,啟動服務
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo groupadd docker
sudo usermod -aG docker $USER
  1. 測試安裝是否成功
sudo docker run hello-world
  1. 啟動ReDroid,跑Android 11的容器
sudo docker run -itd --rm --privileged \
    --pull always \
    -v ~/data:/data \
    -p 5555:5555 \
    redroid/redroid:11.0.0-latest
  1. sudo docker ps指令查看Docker容器狀態

  2. 如果不使用restart=always引數,則每次開啟WSL,上面的指令就需要重新執行一次。

6. 連線至ReDroid桌面
#

  1. 於Windows下載 Platform Tools,解壓縮。

  2. 進入Platform Tools資料夾,按SHIFT+右鍵開啟終端機

  3. 用以下指令連線到ReDroid,成功的話會顯示connected to localhost:5555

./adb connect localhost:5555
  1. Windows下載 QtScrcpy,解壓縮點選Qtscrcpy.exe執行。

  2. 開啟後按二下localhost:5555的裝置,即會看到ReDroid桌面。

7. 安裝GMS和ARM轉譯器
#

預設的ReDroid什麼都沒有,APK得透過ADB指令安裝。

其餘東西開發者說要自己寫Dockerfile建置。

如果需要Google Play服務,和ARM → x86轉譯器,請看 這篇

ReDroid預設可能是用軟體解碼渲染,參考 WSL Docker啟用OpenGL嘗試讓GPU工作。

8. 另請參見
#

相關文章

如何在Windows 11安裝WSL2子系統 (Ubuntu)
Linux系統 虛擬機與容器技術 Windows Subsystem for Linux Docker Ubuntu
如何編譯與更換WSL核心 (custom WSL kernel)
Linux系統 虛擬機與容器技術 Linux Windows Subsystem for Linux
Waydroid教學:在Arch Linux電腦跑Android APP
Linux系統 虛擬機與容器技術 Waydroid Arch Linux Android

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。