快轉到主要內容

ReDroid,在Windows電腦用Docker跑Android系統

· 民國115年丙午年
·
切換正體/简体 ·
分類 資訊科技 虛擬機與容器技術
標籤 ReDroid WSL Docker Android Scrcpy
目錄

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

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

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

另請參見:Windows WSL跑Waydroid容器

1. 測試環境
#

  • Windows 11 26H2
  • WSL Ubuntu 26.04
  • 四核心以上x86架構CPU,CPU需支援虛擬化
  • 8GB(含)以上RAM
  • 10GB硬碟空間

關於GPU加速這點比較迷,雖然WSLg有DirectX對OpenGL的轉譯,可是缺少Vulkan支援,致使Redroid都是CPU渲染的Swiftshader(可以在Android用AIDA64查看GPU),效能差勁。吃不到Windows的GPU,不論使用Intel還是Nvidia都一樣。

2. 準備WSL
#

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

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

3. 重新編譯WSL核心
#

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

  2. 參考編譯WSL核心的步驟,開啟Android Binder支援:Device Drivers –> Android –> Select “Android Binder IPC Driver” -> Save。

  3. 替換WSL的核心。將WSL重開機。

4. 安裝Docker
#

  1. 在WSL內安裝Docker,啟動服務

  2. 新增ReDroid的docker-compose

cd ~/

mkdir redroid

cd redroid

vim docker-compose.yml
  1. 填寫以下內容,跑Android 11的容器,嘗試啟用宿主機的GPU硬體加速(雖然沒效)
services:
  redroid:
    image: redroid/redroid:11.0.0
    stdin_open: true
    tty: true
    privileged: true
    ports:
      - 127.0.0.1:5555:5555 # ADB通訊埠,為加強安全性,設定為只監聽本機localhost的通訊埠
    volumes:
      - ./redroid-11-data:/data # 資料存放在目前目錄
    command:
      - androidboot.redroid_width=720 # 手機解析度
      - androidboot.redroid_height=1280
      - androidboot.redroid_dpi=320
      - androidboot.redroid_fps=60
      - androidboot.redroid_gpu_mode=host # 嘗試啟用宿主機的GPU硬體加速,host為GPU加速,guest為軟體渲染。如果無法啟動就用guest
      - ro.product.cpu.abilist0=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi # 設定libndk相關
      - ro.product.cpu.abilist64=x86_64,arm64-v8a
      - ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi
      - ro.dalvik.vm.isa.arm=x86
      - ro.dalvik.vm.isa.arm64=x86_64
      - ro.enable.native.bridge.exec=1
      - ro.dalvik.vm.native.bridge=libndk_translation.so
      - ro.ndk_translation.version=0.2.2
  1. 啟動服務
docker compose up -d

5. 連線至ReDroid桌面
#

Scrcpy裝在Windows或WSL都可以。

  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轉譯器,請看這篇

相關文章


感謝您的閱讀。我寫作是為了誠實表達想法,而不是追逐社群互動與流量。我很樂意傾聽你在仔細閱讀我文章之後的心得。若有內容勘誤 or 技術問題 or 回饋想法,歡迎透過本站「關於」頁面的Email與我聯絡。