VMware + Redroid + Docker 云手机搭建教程(Win10 宿主)
- 未分类
- 3天前
- 8热度
- 0评论
> 💡 注:VMware Workstation Pro 官方版本号通常为 `16.x/17.x`,`25H2u1` 应为笔误。本教程基于 **VMware 16/17+ 通用逻辑**编写,步骤完全适配你的环境。
---
## 🗺️ 整体架构与数据流向
```
Windows 10 (宿主机)
└─ VMware Workstation Pro
└─ Ubuntu 22.04/24.04 LTS (虚拟机)
└─ Docker Engine
└─ Redroid 容器 (Android 11/13)
└─ ADB Server :5555 ← 宿主机 scrcpy/ADB 直连
```
---
🛠️ 第一步:VMware 虚拟机创建(关键配置)
| 配置项 | 推荐值 | 说明 |
| 客户机 OS | Linux → Ubuntu 64-bit | 内核兼容性好 |
| 处理器 | ≥2 核(推荐 4 核) | ✅ 必须勾选 `虚拟化 Intel VT-x/EPT 或 AMD-V/RVI` |
| 内存 | ≥4GB(多开建议 8GB+) | Redroid 单实例空载约 1.2~1.5GB |
| 磁盘 | 50GB,单个文件 | SSD 优先,容器拉取+数据持久化需要空间 |
| 网络适配器 | `NAT` 或 `桥接` | 桥接可直接获局域网 IP,NAT 需记 VM IP |
| 显示器 | ✅ 勾选 `加速 3D 图形` | 提升 GUI 渲染流畅度(非强制) |
> ⚠️ **VMware 核心设置**:创建完成后,右键虚拟机 → `设置` → `处理器` → 勾选 **`虚拟化 Intel VT-x/EPT 或 AMD-V/RVI`**。此选项是 Docker 容器正常运行 Android 内核模块的前提。
---
🐧 第二步:Ubuntu 系统安装与内核准备
1. **下载镜像**:[Ubuntu 22.04.4 LTS Desktop](https://ubuntu.com/download/desktop) 或 Server 版(新手推荐 Desktop)
2. **安装系统**:按向导完成安装,设置用户名密码,联网更新
3. **打开终端**,执行以下命令更新并安装必要模块:
```bash
# 1. 更新系统
sudo apt update && sudo apt upgrade -y
# 2. 安装内核扩展模块(包含 ashmem/binder 支持)
sudo apt install -y linux-modules-extra-$(uname -r) adb
# 3. 加载内核模块(Redroid 依赖)
sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
sudo modprobe ashmem_linux
# 4. 验证模块是否加载成功
lsmod | grep -E "binder|ashmem"
# 正常输出类似:binder_linux 123456 0
```
---
🐳 第三步:Docker 安装与 Redroid 部署
```bash
# 1. 一键安装 Docker
curl -fsSL https://get.docker.com | sudo sh
# 2. 将当前用户加入 docker 组(避免每次 sudo)
sudo usermod -aG docker $USER
newgrp docker # 立即生效
# 3. 拉取 Redroid 官方镜像(x86_64 架构,Android 11)
docker pull redroid/redroid:11.0.0-latest
# 4. 启动容器(推荐参数)
docker run -itd --name redroid1 --privileged \
--cpus="2" -m="3g" \
-v ~/redroid-data:/data \
-p 5555:5555 \
redroid/redroid:11.0.0-latest \
androidboot.redroid_gpu_mode=guest \
androidboot.redroid_width=720 androidboot.redroid_height=1280
```
🔍 参数说明
| 参数 | 作用 |
| `--privileged` | 容器内核权限,加载 binder/ashmem 必需 |
| `--cpus="2" -m="3g"` | 限制单实例资源,防止占满宿主机 |
| `-v ~/redroid-/data` | 持久化用户数据(账号/下载/应用数据) |
| `androidboot.redroid_gpu_mode=guest` | **VMware 环境强烈推荐**:使用软件渲染,稳定无黑屏 |
| `guest/host` 模式区别 | `guest` 兼容性好;`host` 需 GPU 直通,VMware 下易失败 |
> ✅ 验证容器状态:`docker ps` 应显示 `redroid/redroid:11.0.0-latest` 状态为 `Up`。
---
🖥️ 第四步:Windows 端连接与控制
### 1️⃣ 获取虚拟机 IP
在 Ubuntu 终端执行:
```bash
hostname -I | awk '{print $1}'
# 例如输出:192.168.1.105
```
### 2️⃣ Windows 安装控制工具
- **推荐方案**:`scrcpy`(开源/低延迟/支持键鼠)
```powershell
# PowerShell 管理员运行
winget install Genymobile.scrcpy
```
- **备选方案**:直接下载 [Scrcpy Windows 版](https://github.com/Genymobile/scrcpy/releases) 解压即用
### 3️⃣ 连接云手机
```powershell
# 1. 连接 ADB(替换为你的 VM IP)
adb connect 192.168.1.105:5555
# 2. 启动图形控制
scrcpy -s 192.168.1.105:5555 --max-fps=30 --bit-rate=4M
```
> 🎮 首次连接会弹出 USB 调试授权窗口,在 scrcpy 界面点击 **`允许`** 即可。
---
📈 第五步:多实例部署(进阶)
```bash
# 实例 2(端口 5556,独立数据目录)
docker run -itd --name redroid2 --privileged \
--cpus="2" -m="3g" \
-v ~/redroid-data2:/data \
-p 5556:5555 \
redroid/redroid:11.0.0-latest \
androidboot.redroid_gpu_mode=guest
# 实例 3(端口 5557)
# ... 依此类推,修改 --name、-v、-p 即可
```
> 💡 批量管理脚本:将连接命令保存为 `connect1.bat` / `connect2.bat`,双击即可快速唤出对应窗口。
---
## 🛡️ 常见问题排查清单
| 现象 | 原因 | 解决命令/操作 |
|------|------|----------------|
| `docker run` 后 `scrcpy` 黑屏 | GPU 模式不兼容 | 改为 `androidboot.redroid_gpu_mode=guest` |
| `adb connect` 提示 `Connection refused` | 容器未启动/端口被占/防火墙拦截 | `docker logs redroid1` 查日志;Windows 防火墙放行 `scrcpy.exe` 和 `adb.exe` |
| 游戏/APP 闪退(ARM 架构) | x86 宿主无法原生运行 ARM 二进制 | 换用带转译层的镜像:`redroid/redroid:11.0.0-latest` 启动参数加 `androidboot.redroid_houdini=on`(需自行下载 houdini 库挂载) |
| 虚拟机启动极慢/卡顿 | VMware 未开启嵌套虚拟化 | 关机 → 虚拟机设置 → 处理器 → 勾选 `虚拟化 Intel VT-x/EPT` |
| 数据丢失 | 未挂载 `/data` 卷 | 确保每次 `docker run` 都带 `-v ~/redroid-data:/data` |
---
## 📌 关键注意事项
1. **ARM 应用兼容性**:Redroid 官方镜像默认仅支持 x86_64 APP。若需运行手游/主流 ARM 应用,建议:
- 使用社区优化版镜像(如 `redroid/redroid:11.0.0-libhoudini-latest`)
- 或改用 `libndk` 转译(启动参数 `androidboot.redroid_ndk_translator=on`)
2. **性能调优**:
- 关闭 Android 动画:`设置 → 开发者选项 → 窗口/过渡/动画缩放 → 全部 0.5x 或 关闭`
- Scrcpy 加 `--no-audio` 可进一步降低 CPU 占用
3. **快照备份**:配置成功后,在 VMware 中拍摄 **`虚拟机快照`**。后续容器损坏可直接恢复,无需重装 Ubuntu。
4. **安全建议**:不要将 `5555` 端口直接暴露到公网。如需远程访问,请使用 `frp` / `ZeroTier` / `Cloudflare Tunnel` 加密隧道。
---
需要我提供 **一键部署脚本(含 Docker Compose 多开模板)** 或 **ARM 游戏转译详细配置指南** 吗?告知你的具体用途(挂机/测试/开发),我可输出对应优化方案。