Redroid 简介 Redroid 是一个基于 Android 的开源项目,是多个云手机方案中的一种,旨在为开发者和用户提供一个灵活的 Android 环境。它可以在不同的平台上运行,包括桌面操作系统,让用户能够体验 Android 系统的功能和应用。
主要特点
容器化:Redroid 使用容器技术(如 Docker)来运行 Android 系统,允许用户在现有的操作系统上快速设置和运行 Android 环境。
兼容性:支持多种 Android 应用和游戏,用户可以在 Redroid 中安装和运行这些应用,享受 Android 的丰富生态。
高效性:Redroid 旨在提供高性能的 Android 体验,优化了资源的使用,能够在较低硬件配置的系统上良好运行。
开源:Redroid 是一个开源项目,用户和开发者可以自由地查看、修改和贡献代码。
易于部署:通过 Docker 等工具,用户可以快速部署和更新 Redroid 环境,简化了设置过程。
源码下载 1 2 3 4 5 mkdir ~/redroid && cd ~/redroidrepo init -u https://github.com/redroid-rockchip/platform_manifests.git -b redroid-12.0.0 --depth=1 --git-lfs repo sync -c sudo apt install git-lfs repo forall -g lfs -c git lfs pull
docker 下载和镜像编译 Redroid 官方以 dockerfile 的方式提供了一个用于编译的 docker 镜像,使用这个镜像编译可以避免很多编译问题
1 2 3 4 5 6 7 8 sudo apt install docker.io -y sudo usermod -aG docker $USER sudo chmod a+rw /var/run/docker.sock git clone https://github.com/remote-android/redroid-doc.git cd redroid-doc/android-builder-docker/docker build --build-arg userid=$(id -u) --build-arg groupid=$(id -g) \ --build-arg username=$(id -un) -t redroid-builder .
在 redroid-doc/android-builder-docker/ 目录下的 sources.list 中是 apt 源的配置,默认是 163 的源,可以自行更改为其他的源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 docker run -it --rm --hostname redroid-builder --name redroid-builder \ -v ~/redroid:/src --privileged redroid-builder cd /src. build/envsetup.sh lunch redroid_arm64-userdebug export TARGET_BOARD_PLATFORM_GPU=mali-G52export TARGET_RK_GRALLOC_VERSION=4m cd out/target/product/redroid_arm64sudo mount system.img system -o ro sudo mount vendor.img vendor -o ro sudo tar --xattrs -avcf redroid.tar.xz vendor -C system --exclude="./vendor" . sudo umount system vendor
打包完成后将 out/target/product/redroid_arm64/ 目录下 redroid.tar.xz 镜像上传到 SBC,按以下命令导入镜像并启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 sudo xz -dcT0 redroid.tar.xz | docker import -c 'ENTRYPOINT ["/init", "androidboot.hardware=redroid"]' - redroid docker run -d -p 5555:5555 -v ~/redroid-build:/data --name redroid-build -v /dev/mali0:/dev/mali0 \ --privileged redroid \ androidboot.redroid_height=1920 \ androidboot.redroid_width=1080 \ androidboot.redroid_gpu_mode=mali docker run -itd \ --privileged \ --memory-swappiness=0 \ -v ~/redroid_data:/data \ -p 5555:5555 \ redroid \ androidboot.hardware=redroid \ androidboot.use_memfd=off \ ro.secure=0 \ ro.boottime.adbd=1m \ ro.allow.mock.location=0 \ ro.debuggable=1 \ ro.adb.secure=0 \ -e renderer=swiftshader \ --name redroid \
启动容器后准备binder核心模组。Ubuntu 24.04执行以下指令,安裝必要的binder核心模组:
1 2 3 sudo apt install linux-modules-extra-`uname -r` sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
將以上核心模组加入开机自动载入
1 echo 'binder_linux options binder_linux devices="binder,hwbinder,vndbinder"' | sudo tee -a /etc/modules-load.d/redroid.conf
然后就执行 adb connect 127.0.0.1:5555 scrcpy
常见问题
容器启动后报错循环打印 init: critical process ‘lmkd’ exited 4 times before boot completed
解决方法:在 Linux 启动参数中添加:psi=1
配置 GPU 加速后,redroid 无法启动
解决方法:查看 linux 是否启用 GPU mali 驱动,如未启用,GPU 则无法正常使用
参考