VMware + Redroid + Docker 云手机搭建教程(Win10 宿主)

 

> 💡 注: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 游戏转译详细配置指南** 吗?告知你的具体用途(挂机/测试/开发),我可输出对应优化方案。