快轉到主要內容

ReDroid多開雲手機,Scrcpy連線到複數個Docker容器的作法

分類   Linux系統 Self-hosting自架
標籤   Cloud Gaming ReDroid Scrcpy
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

多開即同時執行多個APP,這是許多Android模擬器都會提供的功能,通常是在一個畫面塞滿多視窗,達到玩多個遊戲的效果。

既然ReDroid依賴Docker執行,那麼就可以依賴容器的特性,輕鬆達成多開,比如,同時開二個ReDroid容器,執行不同的APP。

https://www.pixiv.net/artworks/121309634

啊不對,放錯了…效果圖是這樣才對。

1. 方案探討
#

一個Android系統執行多個APP,再個別擷取視窗的作法,在配合Scrcpy的情況下辦不到,所以只好跑多個Android系統,例如跑兩個Docker容器。

後台界面,使用Portainer和docker-compose控制,方便定義多個服務。

至於控制端, Scrcpy支援連接到多個Android機子。

如果要更無縫的體驗,用 QTScrcpy會更好,作者有加入多視窗「群控」功能。這樣就能在一個螢幕開啟多個ReDroid視窗。

另外,網頁版客戶端 ws-scrcpy也有人打包成Docker映像檔( https://hub.docker.com/r/scavin/ws-scrcpy),所以我們就能在瀏覽器用多個分頁存取Android容器啦,出門在外的時候更方便。

2. 新增docker-compose
#

  1. 參見 ReDroid安裝教學,做好已經安裝GAPPS的映像檔。

  2. Portainer新增一個ReDroid的Stack。我覺得單一docker-compose比較好管理,如果要分兩個寫也是可以啦,這樣二個Android裝置可個別開關機。

  3. 內容如下,這裡定義了二個ReDroid的容器,他們會一起啟動:

version: "3"
services:

# 第一個ReDroid容器
  redroid-1:
    image: redroid/redroid:11.0.0_gapps
    stdin_open: true
    tty: true
    privileged: true
	# 映射通訊埠不能重複
    ports:
      - "5555:5555"
    volumes:
    # 資料目錄,不同裝置目錄不能一樣
      - ./redroid-11-1-data/:/data
    command:
    # 節約效能,解析度不要設定太高
      - androidboot.redroid_width=720
      - androidboot.redroid_height=1080
      - androidboot.redroid_dpi=340
    # 啟用GPU硬體加速
      - androidboot.redroid_gpu_mode=auto
    # 設定libndk相關
      - ro.product.cpu.abilist0=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi
      - 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

# 第二個ReDroid容器
  redroid-2:
    image: redroid/redroid:11.0.0_gapps
    stdin_open: true
    tty: true
    privileged: true
	# 映射通訊埠不能重複
    ports:
      - "5556:5555"
    volumes:
    # 資料目錄,不同裝置目錄不能一樣
      - ./redroid-11-2-data/:/data
    command:
    # 節約效能,解析度不要設定太高
      - androidboot.redroid_width=720
      - androidboot.redroid_height=1080
      - androidboot.redroid_dpi=340
    # 啟用GPU硬體加速
      - androidboot.redroid_gpu_mode=auto
    # 設定libndk相關
      - ro.product.cpu.abilist0=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi
      - 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. 同時啟動二個Android容器,什麼都不做的情況下並不會太吃資源。

3. Scrcpy連線到多個ReDroid容器
#

  1. ADB列出裝置
adb devices
  1. 以通訊埠為依歸,分別連線
adb connect -s localhost:5555

adb connect -s localhost:5556
  1. 之後,個別啟動Scrcpy
scrcpy -s localhost:5555

scrcpy -s localhost:5556

唯一一個不便的點在於,每個ReDroid的裝置都是獨立的,所以GAPPS裝置驗證要重跑一次。

同時執行二個遊戲,一般的電腦CPU應該都還撐得住啦。

相關文章

自建Android雲手機之樹莓派5刷LineageOS + Play商店
分類   Linux系統 Self-hosting自架
標籤   Cloud Gaming Raspberry Pi Scrcpy
ws scrcpy網頁遠端控制Android手機,免裝軟體,達成類似雲手機的效果
分類   Linux系統 Self-hosting自架
標籤   Scrcpy Cloud Gaming
如何自架開源雲手機,用手機Scrcpy APP連線控制
分類   Linux系統 Self-hosting自架
標籤   Cloud Gaming Android-X86 Scrcpy Docker

留言板

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

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

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