redroid/redroid

By redroid

Updated 7 months ago

(Remote Android) multi-arch GPU accelerated AiC (Android In Cloud) solution

Image
100

500K+

redroid/redroid repository overview

check https://github.com/remote-android for more

Overview

redroid (Remote anDroid) is a GPU accelerated AIC (Android In Cloud) solution. You can boot many instances in Linux host (Docker, podman, k8s etc.). redroid supports both arm64 and amd64 architectures. redroid is suitable for Cloud Gaming, Virtualise Phones, Automation Test and more.

Screenshot of redroid 11

Currently supported:

  • Android 16 (redroid/redroid:16.0.0-latest)
  • Android 16 64bit only (redroid/redroid:16.0.0_64only-latest)
  • Android 15 (redroid/redroid:15.0.0-latest)
  • Android 15 64bit only (redroid/redroid:15.0.0_64only-latest)
  • Android 14 (redroid/redroid:14.0.0-latest)
  • Android 14 64bit only (redroid/redroid:14.0.0_64only-latest)
  • Android 13 (redroid/redroid:13.0.0-latest)
  • Android 13 64bit only (redroid/redroid:13.0.0_64only-latest)
  • Android 12 (redroid/redroid:12.0.0-latest)
  • Android 12 64bit only (redroid/redroid:12.0.0_64only-latest)
  • Android 11 (redroid/redroid:11.0.0-latest)
  • Android 10 (redroid/redroid:10.0.0-latest)
  • Android 9 (redroid/redroid:9.0.0-latest)
  • Android 8.1 (redroid/redroid:8.1.0-latest)

Getting Started

redroid should capabale running on any linux (with some kernel features enabled).

Quick start on Ubuntu 20.04 here; Check deploy section for other distros.

## install docker https://docs.docker.com/engine/install/#server

## install required kernel modules
apt install linux-modules-extra-`uname -r`
modprobe binder_linux devices="binder,hwbinder,vndbinder"
modprobe ashmem_linux


## running redroid
docker run -itd --rm --privileged \
    --pull always \
    -v ~/data:/data \
    -p 5555:5555 \
    redroid/redroid:12.0.0_64only-latest

### Explanation:
###   --pull always    -- use latest image
###   -v ~/data:/data  -- mount data partition
###   -p 5555:5555     -- expose adb port


## install adb https://developer.android.com/studio#downloads
adb connect localhost:5555
### NOTE: change localhost to IP if running redroid remotely

## view redroid screen
## install scrcpy https://github.com/Genymobile/scrcpy/blob/master/README.md#get-the-app
scrcpy -s localhost:5555
### NOTE: change localhost to IP if running redroid remotely
###     typically running scrcpy on your local PC

Configuration

## running redroid with custom settings (custom display for example)
docker run -itd --rm --privileged \
    --pull always \
    -v ~/data:/data \
    -p 5555:5555 \
    redroid/redroid:12.0.0_64only-latest \
    androidboot.redroid_width=1080 \
    androidboot.redroid_height=1920 \
    androidboot.redroid_dpi=480 \
ParamDescriptionDefault
androidboot.redroid_widthdisplay width720
androidboot.redroid_heightdisplay height1280
androidboot.redroid_fpsdisplay FPS30(GPU enabled)
15 (GPU not enabled)
androidboot.redroid_dpidisplay DPI320
androidboot.use_memfduse memfd to replace deprecated ashmem
plan to enable by default
false
androidboot.use_redroid_overlayfsuse overlayfs to share data partition
/data-base: shared data partition
/data-diff: private data
0
androidboot.redroid_net_ndnsnumber of DNS server, 8.8.8.8 will be used if no DNS server specified0
androidboot.redroid_net_dns<1..N>DNS
androidboot.redroid_net_proxy_typeProxy type; choose from: static, pac, none, unassigned
androidboot.redroid_net_proxy_host
androidboot.redroid_net_proxy_port3128
androidboot.redroid_net_proxy_exclude_listcomma seperated list
androidboot.redroid_net_proxy_pac
androidboot.redroid_gpu_modechoose from: auto, host, guest;
guest: use software rendering;
host: use GPU accelerated rendering;
auto: auto detect
guest
androidboot.redroid_gpu_nodeauto-detect
ro.xxxDEBUG purpose, allow override ro.xxx prop; For example, set ro.secure=0, then root adb shell provided by default

Troubleshooting

  • How to collect debug blobs

curl -fsSL https://raw.githubusercontent.com/remote-android/redroid-doc/master/debug.sh | sudo bash -s -- [CONTAINER]

omit CONTAINER if not exist any more

  • Container disappeared immediately

make sure the required kernel modules are installed; run dmesg -T for detailed logs

  • Container running, but adb cannot connect (device offline etc.)

run docker exec -it <container> sh, then check ps -A and logcat

try dmesg -T if cannot get a container shell

Contact Me

License

redroid itself is under Apache License, since redroid includes many 3rd party modules, you may need to examine license carefully.

redroid kernel modules are under GPL v2

Tag summary

Content type

Image

Digest

sha256:e8961d954

Size

766.9 MB

Last updated

7 months ago

docker pull redroid/redroid:10.0.0-latest