快轉到主要內容

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

· 民國112年癸卯年
·
切換繁體/簡體
分類   資訊科技 虛擬機與容器技術
標籤   ReDroid WSL Docker Android Scrcpy
目錄

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)
分類   資訊科技 虛擬機與容器技術
標籤   WSL Docker Ubuntu
如何編譯與更換WSL核心 (custom WSL kernel)
分類   資訊科技 虛擬機與容器技術
標籤   Linux WSL
Arch Linux安裝Docker Desktop圖形前端的方法
分類   資訊科技 虛擬機與容器技術
標籤   Docker Arch Linux

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

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

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