{"id":13461750,"url":"https://github.com/remote-android/redroid-doc","last_synced_at":"2025-03-24T22:34:57.158Z","repository":{"id":37269277,"uuid":"269544601","full_name":"remote-android/redroid-doc","owner":"remote-android","description":"redroid (Remote-Android) is a multi-arch, GPU enabled, Android in Cloud solution. Track issues / docs here","archived":false,"fork":false,"pushed_at":"2024-09-05T15:48:20.000Z","size":527,"stargazers_count":4249,"open_issues_count":250,"forks_count":305,"subscribers_count":49,"default_branch":"master","last_synced_at":"2024-10-29T08:35:54.954Z","etag":null,"topics":["android","container","docker"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/remote-android.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-05T06:07:49.000Z","updated_at":"2024-10-29T05:47:37.000Z","dependencies_parsed_at":"2023-02-18T15:25:14.983Z","dependency_job_id":"83c9a7f0-b928-4046-8b78-ca5a98b2da13","html_url":"https://github.com/remote-android/redroid-doc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remote-android%2Fredroid-doc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remote-android%2Fredroid-doc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remote-android%2Fredroid-doc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remote-android%2Fredroid-doc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/remote-android","download_url":"https://codeload.github.com/remote-android/redroid-doc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245366204,"owners_count":20603438,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","container","docker"],"created_at":"2024-07-31T11:00:56.431Z","updated_at":"2025-03-24T22:34:52.140Z","avatar_url":"https://github.com/remote-android.png","language":"Shell","funding_links":[],"categories":["Shell","android"],"sub_categories":[],"readme":"English | [简体中文](README.zh-cn.md)\n\n# Table of contents\n- [Overview](#overview)\n- [Getting Started](#getting-started)\n- [Configuration](#configuration)\n- [Native Bridge Support](#native-bridge-support)\n- [GMS Support](#gms-support)\n- [WebRTC Streaming](#webrtc-streaming)\n- [How To Build](#how-to-build)\n- [Troubleshooting](#troubleshooting)\n- [Contact Me](#contact-me)\n- [License](#license)\n\n## Overview\n*redroid* (*Re*mote an*Droid*) is a GPU accelerated AIC (Android In Cloud) solution. You can boot many\ninstances in Linux host (`Docker`, `podman`, `k8s` etc.). *redroid* supports both `arm64` and `amd64` architectures. \n*redroid* is suitable for Cloud Gaming, Virtualise Phones, Automation Test and more.\n\n![Screenshot of redroid 11](./assets/redroid11.png)\n\nCurrently supported:\n- Android 15 (`redroid/redroid:15.0.0-latest`)\n- Android 15 64bit only (`redroid/redroid:15.0.0_64only-latest`)\n- Android 14 (`redroid/redroid:14.0.0-latest`)\n- Android 14 64bit only (`redroid/redroid:14.0.0_64only-latest`)\n- Android 13 (`redroid/redroid:13.0.0-latest`)\n- Android 13 64bit only (`redroid/redroid:13.0.0_64only-latest`)\n- Android 12 (`redroid/redroid:12.0.0-latest`)\n- Android 12 64bit only (`redroid/redroid:12.0.0_64only-latest`)\n- Android 11 (`redroid/redroid:11.0.0-latest`)\n- Android 10 (`redroid/redroid:10.0.0-latest`)\n- Android 9 (`redroid/redroid:9.0.0-latest`)\n- Android 8.1 (`redroid/redroid:8.1.0-latest`)\n\n\n## Getting Started\n*redroid* should be able to run on any linux distribution (with some kernel features enabled).\n\nQuick start on *Ubuntu 20.04* here; Check [deploy section](deploy/README.md) for other distros.\n\n```bash\n## install docker https://docs.docker.com/engine/install/#server\n\n## install required kernel modules\napt install linux-modules-extra-`uname -r`\nmodprobe binder_linux devices=\"binder,hwbinder,vndbinder\"\nmodprobe ashmem_linux\n\n\n## running redroid\ndocker run -itd --rm --privileged \\\n    --pull always \\\n    -v ~/data:/data \\\n    -p 5555:5555 \\\n    redroid/redroid:12.0.0_64only-latest\n\n### Explanation:\n###   --pull always    -- use latest image\n###   -v ~/data:/data  -- mount data partition\n###   -p 5555:5555     -- expose adb port\n\n### DISCLAIMER\n### Should NOT expose adb port on public network\n### otherwise, redroid container (even host OS) may get compromised\n\n## install adb https://developer.android.com/studio#downloads\nadb connect localhost:5555\n### NOTE: change localhost to IP if running redroid remotely\n\n## view redroid screen\n## install scrcpy https://github.com/Genymobile/scrcpy/blob/master/README.md#get-the-app\nscrcpy -s localhost:5555\n### NOTE: change localhost to IP if running redroid remotely\n###     typically running scrcpy on your local PC\n```\n\n## Configuration\n\n```\n## running redroid with custom settings (custom display for example)\ndocker run -itd --rm --privileged \\\n    --pull always \\\n    -v ~/data:/data \\\n    -p 5555:5555 \\\n    redroid/redroid:12.0.0_64only-latest \\\n    androidboot.redroid_width=1080 \\\n    androidboot.redroid_height=1920 \\\n    androidboot.redroid_dpi=480 \\\n```\n\n| Param | Description | Default |\n| --- | --- | --- |\n| `androidboot.redroid_width` | display width | 720 |\n| `androidboot.redroid_height` | display height | 1280 |\n| `androidboot.redroid_fps` | display FPS | 30(GPU enabled)\u003cbr\u003e 15 (GPU not enabled)|\n| `androidboot.redroid_dpi` | display DPI | 320 |\n| `androidboot.use_memfd` | use `memfd` to replace deprecated `ashmem`\u003cbr\u003eplan to enable by default | false |\n| `androidboot.use_redroid_overlayfs` | use `overlayfs` to share `data` partition\u003cbr\u003e`/data-base`: shared `data` partition\u003cbr\u003e`/data-diff`: private data | 0 |\n| `androidboot.redroid_net_ndns` | number of DNS server, `8.8.8.8` will be used if no DNS server specified | 0 |\n| `androidboot.redroid_net_dns\u003c1..N\u003e` | DNS | |\n| `androidboot.redroid_net_proxy_type` | Proxy type; choose from: `static`, `pac`, `none`, `unassigned` | |\n| `androidboot.redroid_net_proxy_host` | | |\n| `androidboot.redroid_net_proxy_port` | | 3128 |\n| `androidboot.redroid_net_proxy_exclude_list` | comma seperated list | |\n| `androidboot.redroid_net_proxy_pac` | | |\n| `androidboot.redroid_gpu_mode` | choose from: `auto`, `host`, `guest`;\u003cbr\u003e`guest`: use software rendering;\u003cbr\u003e`host`: use GPU accelerated rendering;\u003cbr\u003e`auto`: auto detect | `guest` |\n| `androidboot.redroid_gpu_node` | | auto-detect |\n| `ro.xxx`| **DEBUG** purpose, allow override `ro.xxx` prop; For example, set `ro.secure=0`, then root adb shell provided by default | |\n\n\n## Native Bridge Support\nIt's possible to run `arm` Apps in `x86` *redroid* instance via `libhoudini`, `libndk_translation` or `QEMU translator`.\n\nCheck [@zhouziyang/libndk_translation](https://github.com/zhouziyang/libndk_translation) for prebuilt `libndk_translation`.\nPublished `redroid` images already got `libndk_translation` included.\n\n``` bash\n# example structure, be careful the file owner and mode\n\nsystem/\n├── bin\n│   ├── arm\n│   └── arm64\n├── etc\n│   ├── binfmt_misc\n│   └── init\n├── lib\n│   ├── arm\n│   └── libnb.so\n└── lib64\n    ├── arm64\n    └── libnb.so\n```\n\n```dockerfile\n# Dockerfile\nFROM redroid/redroid:11.0.0-latest\n\nADD native-bridge.tar /\n```\n\n```bash\n# build docker image\ndocker build . -t redroid:11.0.0-nb\n\n# running\ndocker run -itd --rm --privileged \\\n    -v ~/data11-nb:/data \\\n    -p 5555:5555 \\\n    redroid:11.0.0-nb \\\n```\n\n## GMS Support\n\nIt's possible to add GMS (Google Mobile Service) support in *redroid* via [Open GApps](https://opengapps.org/), [MicroG](https://microg.org/) or [MindTheGapps](https://gitlab.com/MindTheGapps/vendor_gapps).\n\nCheck [android-builder-docker](./android-builder-docker) for details.\n\n\n## WebRTC Streaming\nPlan to port `WebRTC` solutions from `cuttlefish`, including frontend (HTML5), backend and many virtual HALs.\n\n## How To Build\nIt's the same way as AOSP building process, but I suggest to use `docker` to build it.\n\nCheck [android-builder-docker](./android-builder-docker) for details.\n\n## Troubleshooting\n- How to collect debug blobs\n\u003e `curl -fsSL https://raw.githubusercontent.com/remote-android/redroid-doc/master/debug.sh | sudo bash -s -- [CONTAINER]`\n\u003e\n\u003e omit *CONTAINER* if not exist any more\n\n- Container disappeared immediately\n\u003e make sure the required kernel modules are installed; run `dmesg -T` for detailed logs\n\n- Container running, but adb cannot connect (device offline etc.)\n\u003e run `docker exec -it \u003ccontainer\u003e sh`, then check `ps -A` and `logcat`\n\u003e\n\u003e try `dmesg -T` if cannot get a container shell\n\n## Contact Me\n- remote-android.slack.com (invite link: https://join.slack.com/t/remote-android/shared_invite/zt-q40byk2o-YHUgWXmNIUC1nweQj0L9gA)\n- ziyang.zhou@outlook.com\n\n## License\n*redroid* itself is under [Apache License](https://www.apache.org/licenses/LICENSE-2.0), since *redroid* includes \nmany 3rd party modules, you may need to examine license carefully.\n\n*redroid* kernel modules are under [GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremote-android%2Fredroid-doc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fremote-android%2Fredroid-doc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremote-android%2Fredroid-doc/lists"}