https://github.com/remote-android/redroid-doc Skip to content Sign up * Why GitHub? + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} remote-android / redroid-doc Public * Notifications * Fork 56 * Star 774 * docs about ReDroid projects 774 stars 56 forks Star Notifications * Code * Issues 40 * Pull requests 2 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 1 branch 0 tags Code Latest commit @zhouziyang zhouziyang update android 12 64bit only image ... 4493f1f Jan 3, 2022 update android 12 64bit only image 4493f1f Git stats * 20 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time android-builder-docker update Dockerfile for legacy mesa build Jan 2, 2022 assets refine doc Sep 21, 2021 README.md update android 12 64bit only image Jan 3, 2022 README.zh-cn.md refine doc Sep 21, 2021 View code [ ] Table of contents Overview Getting Started Configuration Native Bridge Support GMS Support WebRTC Streaming How To Build Troubleshooting Note Contact Me License README.md English | Jian Ti Zhong Wen Table of contents * Overview * Getting Started * Configuration * Native Bridge Support * GMS Support * WebRTC Streaming * How To Build * Troubleshooting * Note * Contact Me * License Overview ReDroid (Remote anDroid) is a GPU accelerated AIC (Android In Container) 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, VMI (Virtual Mobile Infurstrure), Automation Test and more. Screenshot of ReDroid 11 Currently supported: * Android 12 (redroid/redroid:12.0.0-latest, redroid/ redroid:12.0.0-amd64, redroid/redroid:12.0.0-arm64) * Android 12 64bit only (redroid/redroid:12.0.0_64only-latest, redroid/redroid:12.0.0_64only-amd64, redroid/ redroid:12.0.0_64only-arm64) * Android 11 (redroid/redroid:11.0.0-latest, redroid/ redroid:11.0.0-amd64, redroid/redroid:11.0.0-arm64) * Android 10 (redroid/redroid:10.0.0-latest, redroid/ redroid:10.0.0-amd64, redroid/redroid:10.0.0-arm64) * Android 9 (redroid/redroid:9.0.0-latest, redroid/ redroid:9.0.0-amd64, redroid/redroid:9.0.0-arm64) * Android 8.1 (redroid/redroid:8.1.0-latest, redroid/ redroid:8.1.0-amd64, redroid/redroid:8.1.0-arm64) Tested Platforms: * Ubuntu 16.04 / 18.04 / 20.04 (amd64 / arm64) * Amazon Linux 2 (amd64 / arm64) * Alibaba Cloud Linux 2 (amd64) * Alibaba Cloud Linux 3 (amd64 / arm64) * WSL 2 (Ubuntu) (amd64) * CentOS (amd64*, arm64*) * OpenEuler 20.03 (amd64, arm64*) * means need customized kernel Getting Started ReDroid requires some kernel modules (binderfs, ashmem etc.). Check kernel modules to install these modules. # start and connect via `scrcpy` docker run -itd --rm --memory-swappiness=0 --privileged \ --pull always \ -v ~/data:/data \ -p 5555:5555 \ redroid/redroid:11.0.0-latest adb connect :5555 scrcpy --serial :5555 ## explains: ## --pull always -- be sure to use the latest image ## -v ~/data:/data -- mount data partition ## -p 5555:5555 -- expose adb port, you can connect via `adb connect ` Configuration required params (already added in docker image) * qemu=1 * androidboot.hardware=redroid display params * redroid.width=720 * redroid.height=1280 * redroid.fps=15 * ro.sf.lcd_density=320 * redroid.enable_built_in_display=[0|1] * redroid.overlayfs=[0|1] Network: * net.eth0.dns1= GPU accelerating ReDroid use mesa3d to accelerate 3D rendering. Currently tested platforms: * AMD (arm64, amd64 with amdgpu driver) * Intel (amd64 with i915 driver) * virtio-gpu (vendor agnostic, arm64 and amd64) params: * redroid.gpu.mode=[auto|host|guest] * redroid.gpu.node=[/dev/dri/renderDxxx] Virtual WiFi (Experiment in ReDroid 10, build broken, fix soon) * ro.kernel.qemu.wifi=1 Virtual WiFi is still under development, make sure mac80211_hwsim exist (modprobe mac80211_hwsim). checkout redroid-10-wifi in vendor/redroid and redroid-10.0.0 in device/generic/goldfish to make your build. run docker exec ip r add default via 192.168.232.1 dev wlan0 NOTE: you can override system props prefixed with qemu. or ro.. for example, you can set ro.secure=0, then you can get root adb shell by default. Native Bridge Support It's possible to run arm Apps in x86 ReDroid instance via libhoudini, libndk_translator or QEMU translator. Take libndk_translator as an example: # grab libndk_translator libs from Android 11 Emulator find /system \( -name 'libndk_translation*' -o -name '*arm*' -o -name 'ndk_translation*' \) | tar -cf native-bridge.tar -T - # example structure, be careful the file owner and mode system/ +-- bin | +-- arm | +-- arm64 +-- etc | +-- binfmt_misc | +-- init +-- lib | +-- arm | +-- libnb.so +-- lib64 +-- arm64 +-- libnb.so # Dockerfile FROM redroid/redroid:11.0.0-amd64 ADD native-bridge.tar / COPY factory.prop /factory/factory.prop # factory.prop ro.product.cpu.abilist=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi ro.product.cpu.abilist64=x86_64,arm64-v8a ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi ro.dalvik.vm.isa.arm=x86 ro.dalvik.vm.isa.arm64=x86_64 ro.enable.native.bridge.exec=1 ro.dalvik.vm.native.bridge=libndk_translation.so ro.ndk_translation.version=0.2.2 # build docker image docker build . -t redroid:11.0.0-amd64-nb GMS Support It's possible to add GMS (Google Mobile Service) support in ReDroid via Open GApps or MicroG. WebRTC Streaming CALL FOR HELP Plan to port WebRTC solutions from cuttlefish, including frontend (HTML5), backend and many virtual HALs. How To Build It's Same as AOSP building process. But I suggest to use docker to build. Check android-builder-docker for details. Troubleshooting * 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 sh, then check ps -A and logcat try dmesg -T if cannot get a container shell Note * Kernel 5.7+, need enable binderfs / ashmem * redroid require pid_max less than 65535, or else may run into problems. Change in host OS, or add pid_max separation support in PID namespace * SElinux is disabled in ReDroid; possible enabled with selinuxns POC * sdcardfs currently not implemented, use fuse instead; may need run modprobe fuse first in some OS (AmazonLinux2 ?) * CGroups errors ignored; some (stune for example) not supported in generic linux. * procfs not fully seperated with host OS; Community use lxcfs and some cloud vendor (TencentOS) enhanced in their own kernel. * vintf verify disabled (since no kernel) Contact Me * ziyang.zhou@outlook.com * remote-android.slack.com (invite link: https://join.slack.com/t/ remote-android/shared_invite/zt-q40byk2o-YHUgWXmNIUC1nweQj0L9gA) 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 About docs about ReDroid projects Topics android Resources Readme Stars 774 stars Watchers 15 watching Forks 56 forks Releases No releases published Packages 0 No packages published Contributors 2 * @zhouziyang zhouziyang * @sickcodes sickcodes sickcodes Languages * Dockerfile 100.0% * (c) 2022 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.