Redroid 是一个基于容器的 Android 运行环境,适合在 Linux 主机上快速跑 Android 应用、做兼容性测试、或在服务器上做轻量级 Android 实例。它和传统虚拟机相比更轻,启动也更快,最适合用 Docker 来部署。
本文整理一份比较实用的安装步骤,方便后续复用。
1. 环境要求
- Debian / Ubuntu / 其他主流 Linux 发行版
- Docker 20.10+
- 具备较新的内核和基本虚拟化支持
- 可选:ADB(Android 调试桥)
开始前先确认宿主机已经装好 Docker,并且当前用户具备执行 Docker 命令的权限。
2. 完整部署与开机固化配置
1)配置开机自动加载模块与参数
Debian 默认只创建单个 /dev/binder,需要通过模块配置文件固化传入 3 个设备名称:
echo "binder_linux" | sudo tee /etc/modules-load.d/binder.confecho 'options binder_linux devices="binder,hwbinder,vndbinder"' | sudo tee /etc/modprobe.d/binder.conf2)配置 Udev 规则
udev 规则不支持正则管道符 |,需要逐行指定每个节点:
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-rules3)立即生效并更新 initramfs
如果此前已经加载过模块,需要先卸载再带参数重载:
docker stop $(docker ps -q) 2>/dev/null || truesudo modprobe -r binder_linux 2>/dev/null || true
sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
sudo udevadm trigger --name-match=bindersudo udevadm trigger --name-match=hwbindersudo udevadm trigger --name-match=vndbinder
sudo update-initramfs -u4)验证节点与权限状态
ls -l /dev/binder /dev/hwbinder /dev/vndbinder正常情况下应看到类似:
crw-rw-rw- 1 root root 10, 262 Aug 24 11:50 /dev/bindercrw-rw-rw- 1 root root 10, 263 Aug 24 11:50 /dev/hwbindercrw-rw-rw- 1 root root 10, 264 Aug 24 11:50 /dev/vndbinder3. 拉取并启动 Redroid
最常用的方式就是直接用官方镜像启动:
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启动命令:
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 示例用了当前目录下的dataandroidboot.*:用于指定 Redroid 的分辨率、DPI 和 GPU 模式
更稳定一点的做法是先查看日志,确认容器是否成功启动:
docker logs -f redroid4. 连接 ADB
Redroid 启动后,可以直接用 ADB 连到本机:
adb connect 127.0.0.1:5555adb devices如果 adb 没有安装,需要先装 Android Platform Tools:
sudo apt-get install -y android-tools-adb连接成功后,可以直接在宿主机执行常规 Android 调试命令:
adb shelladb install /path/to/app.apkadb logcat5. 常见命令
查看容器状态:
docker ps停止 Redroid:
docker stop redroid重启 Redroid:
docker start redroid删除容器:
docker rm -f redroid如果想重新创建:
rm -rf ./data6. 常见问题
1)adb 连接不上
先确认容器正在运行:
docker ps再检查端口是否暴露:
ss -lntp | grep 5555如果没有监听,通常是容器未正常启动,继续看日志:
docker logs redroid2)启动失败或容器退出
通常是 Docker 权限、内核能力或宿主机兼容性问题。可先检查:
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 logs、docker restart、docker volume 这些命令做持久化和维护。