1037 字
5 分钟
Redroid 安装与使用

Redroid 是一个基于容器的 Android 运行环境,适合在 Linux 主机上快速跑 Android 应用、做兼容性测试、或在服务器上做轻量级 Android 实例。它和传统虚拟机相比更轻,启动也更快,最适合用 Docker 来部署。

本文整理一份比较实用的安装步骤,方便后续复用。

1. 环境要求#

  • Debian / Ubuntu / 其他主流 Linux 发行版
  • Docker 20.10+
  • 具备较新的内核和基本虚拟化支持
  • 可选:ADB(Android 调试桥)

开始前先确认宿主机已经装好 Docker,并且当前用户具备执行 Docker 命令的权限。

2. 完整部署与开机固化配置#

1)配置开机自动加载模块与参数#

Debian 默认只创建单个 /dev/binder,需要通过模块配置文件固化传入 3 个设备名称:

Terminal window
echo "binder_linux" | sudo tee /etc/modules-load.d/binder.conf
echo 'options binder_linux devices="binder,hwbinder,vndbinder"' | sudo tee /etc/modprobe.d/binder.conf

2)配置 Udev 规则#

udev 规则不支持正则管道符 |,需要逐行指定每个节点:

Terminal window
sudo tee /etc/udev/rules.d/99-android-binder.rules << 'EOF'
KERNEL=="binder", MODE="0666"
KERNEL=="hwbinder", MODE="0666"
KERNEL=="vndbinder", MODE="0666"
EOF
sudo udevadm control --reload-rules

3)立即生效并更新 initramfs#

如果此前已经加载过模块,需要先卸载再带参数重载:

Terminal window
docker stop $(docker ps -q) 2>/dev/null || true
sudo modprobe -r binder_linux 2>/dev/null || true
sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
sudo udevadm trigger --name-match=binder
sudo udevadm trigger --name-match=hwbinder
sudo udevadm trigger --name-match=vndbinder
sudo update-initramfs -u

4)验证节点与权限状态#

Terminal window
ls -l /dev/binder /dev/hwbinder /dev/vndbinder

正常情况下应看到类似:

crw-rw-rw- 1 root root 10, 262 Aug 24 11:50 /dev/binder
crw-rw-rw- 1 root root 10, 263 Aug 24 11:50 /dev/hwbinder
crw-rw-rw- 1 root root 10, 264 Aug 24 11:50 /dev/vndbinder

3. 拉取并启动 Redroid#

最常用的方式就是直接用官方镜像启动:

Terminal window
docker run -d \
--privileged \
--name redroid \
-p 5555:5555 \
-v /data/redroid:/data \
--device /dev/binder:/dev/binder \
--device /dev/hwbinder:/dev/hwbinder \
--device /dev/vndbinder:/dev/vndbinder \
redroid/redroid:12.0.0-latest \
androidboot.redroid_width=720 \
androidboot.redroid_height=1280 \
androidboot.redroid_dpi=320 \
androidboot.redroid_gpu_mode=guest

如果更习惯用 Compose,也可以写成:

services:
redroid:
image: redroid/redroid:12.0.0-latest
container_name: redroid
privileged: true
restart: always
ports:
- "5555:5555"
volumes:
- ./data:/data
devices:
- /dev/binder:/dev/binder
- /dev/hwbinder:/dev/hwbinder
- /dev/vndbinder:/dev/vndbinder
command:
- androidboot.redroid_width=720
- androidboot.redroid_height=1280
- androidboot.redroid_dpi=320
- androidboot.redroid_gpu_mode=guest

启动命令:

Terminal window
docker compose up -d --force-recreate

说明:

  • --privileged:Redroid 需要较高权限,容器内要访问 Android 相关设备节点
  • --device /dev/binder:/dev/binder 等 3 项:把宿主机 binder 设备透传进容器
  • -p 5555:5555:把容器里的 ADB 端口映射到宿主机
  • -v /data/redroid:/data./data:/data:持久化数据目录,Compose 示例用了当前目录下的 data
  • androidboot.*:用于指定 Redroid 的分辨率、DPI 和 GPU 模式

更稳定一点的做法是先查看日志,确认容器是否成功启动:

Terminal window
docker logs -f redroid

4. 连接 ADB#

Redroid 启动后,可以直接用 ADB 连到本机:

Terminal window
adb connect 127.0.0.1:5555
adb devices

如果 adb 没有安装,需要先装 Android Platform Tools:

Terminal window
sudo apt-get install -y android-tools-adb

连接成功后,可以直接在宿主机执行常规 Android 调试命令:

Terminal window
adb shell
adb install /path/to/app.apk
adb logcat

5. 常见命令#

查看容器状态:

Terminal window
docker ps

停止 Redroid:

Terminal window
docker stop redroid

重启 Redroid:

Terminal window
docker start redroid

删除容器:

Terminal window
docker rm -f redroid

如果想重新创建:

Terminal window
rm -rf ./data

6. 常见问题#

1)adb 连接不上#

先确认容器正在运行:

Terminal window
docker ps

再检查端口是否暴露:

Terminal window
ss -lntp | grep 5555

如果没有监听,通常是容器未正常启动,继续看日志:

Terminal window
docker logs redroid

2)启动失败或容器退出#

通常是 Docker 权限、内核能力或宿主机兼容性问题。可先检查:

Terminal window
docker inspect redroid

如果日志里有相关错误,优先确认:

  • Docker 是否正常运行
  • 宿主机是否已创建 /dev/binder/dev/hwbinder/dev/vndbinder
  • 内核是否支持 binder_linux
  • 镜像版本是否适配当前系统

3)需要更高性能/更完整 Android 体验#

Redroid 适合轻量使用,但如果需要完整图形界面或更强的模拟器能力,配合 scrcpy、VNC 或更强的 Android 模拟器方案会更合适。

7. 小结#

Redroid 的核心价值在于:不需要完整 Android 模拟器、启动速度快、部署方式简单、对 Linux 服务器非常友好。只要 Docker 正常安装好,通常几分钟内就能完成一套可用的 Android 容器环境。

如果需要长期稳定运维,建议把 Redroid 作为一个容器服务来管理,并通过 docker logsdocker restartdocker volume 这些命令做持久化和维护。

Redroid 安装与使用
https://iiii.fun/posts/redroid/install/
作者
庆灵
发布于
2026-08-24
许可协议
CC BY-NC-SA 4.0