{"id":13437312,"url":"https://github.com/budtmo/docker-android","last_synced_at":"2026-01-29T16:01:35.754Z","repository":{"id":37484232,"uuid":"77145066","full_name":"budtmo/docker-android","owner":"budtmo","description":"Android in docker solution with noVNC supported and video recording","archived":false,"fork":false,"pushed_at":"2026-01-22T00:07:30.000Z","size":242747,"stargazers_count":14123,"open_issues_count":154,"forks_count":1629,"subscribers_count":180,"default_branch":"master","last_synced_at":"2026-01-22T13:30:19.599Z","etag":null,"topics":["alibabacloud","android","android-emulator","aws","azure","cloud","docker","docker-android","emulator","gcp","genymotion","jenkins","kubernetes","mobile-app","mobile-web","novnc","saltstack","selenium","selenium-grid","terraform"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/budtmo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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,"zenodo":null,"notice":null,"maintainers":"MAINTAINERS.md","copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["budtmo"],"custom":["paypal.me/budtmo"]}},"created_at":"2016-12-22T13:02:48.000Z","updated_at":"2026-01-22T08:57:00.000Z","dependencies_parsed_at":"2026-01-29T16:00:14.539Z","dependency_job_id":null,"html_url":"https://github.com/budtmo/docker-android","commit_stats":{"total_commits":518,"total_committers":55,"mean_commits":9.418181818181818,"dds":0.4343629343629344,"last_synced_commit":"7064a9bc2cdfeb99bfa7ea6a1ab3cb888369df42"},"previous_names":["butomo1989/docker-android"],"tags_count":112,"template":false,"template_full_name":null,"purl":"pkg:github/budtmo/docker-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/budtmo%2Fdocker-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/budtmo%2Fdocker-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/budtmo%2Fdocker-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/budtmo%2Fdocker-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/budtmo","download_url":"https://codeload.github.com/budtmo/docker-android/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/budtmo%2Fdocker-android/sbom","scorecard":{"id":257261,"data":{"date":"2025-08-11","repo":{"name":"github.com/budtmo/docker-android","commit":"39df955c26beaf482eed619866a1da6f8b412a5f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/16 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"12 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/test-on-demand.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-on-demand.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/test-on-demand.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-on-demand.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/test-on-demand.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/budtmo/docker-android/test.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: .github/workflows/test-on-demand.yml:33","Warn: downloadThenRun not pinned by hash: .github/workflows/test.yml:36","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of   2 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 17 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T09:58:23.069Z","repository_id":37484232,"created_at":"2025-08-17T09:58:23.069Z","updated_at":"2025-08-17T09:58:23.069Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28880841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T10:31:27.438Z","status":"ssl_error","status_checked_at":"2026-01-29T10:31:01.017Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["alibabacloud","android","android-emulator","aws","azure","cloud","docker","docker-android","emulator","gcp","genymotion","jenkins","kubernetes","mobile-app","mobile-web","novnc","saltstack","selenium","selenium-grid","terraform"],"created_at":"2024-07-31T03:00:55.891Z","updated_at":"2026-01-29T16:01:35.748Z","avatar_url":"https://github.com/budtmo.png","language":"Python","readme":"\n\u003cp align=\"center\"\u003e\n  \u003cimg id=\"header\" src=\"./images/logo_docker-android.png\" /\u003e\n\u003c/p\u003e\n\n[![Paypal Donate](https://img.shields.io/badge/paypal-donate-blue.svg)](http://paypal.me/budtmo) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![codecov](https://codecov.io/gh/budtmo/docker-android/branch/master/graph/badge.svg)](https://codecov.io/gh/budtmo/docker-android) [![Join the chat at https://gitter.im/budtmo/docker-android](https://badges.gitter.im/budtmo/docker-android.svg)](https://gitter.im/budtmo/docker-android?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge) [![GitHub release](https://img.shields.io/github/release/budtmo/docker-android.svg)](https://github.com/budtmo/docker-android/releases)\n\nDocker-Android is a docker image built to be used for everything related to Android. It can be used for Application development and testing (native, web and hybrid-app).\n\nAdvantages of using this project\n--------------------------------\n1. Emulator with different device profile and skins, such as Samsung Galaxy S6, LG Nexus 4, HTC Nexus One and more.\n2. Support vnc to be able to see what happen inside docker container\n3. Support log sharing feature where all logs can be accessed from web-UI\n4. Ability to control emulator from outside container by using adb connect\n5. Integrated with other cloud solutions, e.g. [Genymotion Cloud](https://www.genymotion.com/cloud/)\n6. It can be used to build Android project\n7. It can be used to run unit and UI-Test with different test-frameworks, e.g. Appium, Espresso, etc.\n\nList of Docker-Images\n---------------------\n|Android   |API   |Image with latest release version   |Image with specific release version|\n|:---|:---|:---|:---|\n|9.0|28|budtmo/docker-android:emulator_9.0|budtmo/docker-android:emulator_9.0_\u003crelease_version\u003e|\n|10.0|29|budtmo/docker-android:emulator_10.0|budtmo/docker-android:emulator_10.0_\u003crelease_version\u003e|\n|11.0|30|budtmo/docker-android:emulator_11.0|budtmo/docker-android:emulator_11.0_\u003crelease_version\u003e|\n|12.0|32|budtmo/docker-android:emulator_12.0|budtmo/docker-android:emulator_12.0_\u003crelease_version\u003e|\n|13.0|33|budtmo/docker-android:emulator_13.0|budtmo/docker-android:emulator_13.0_\u003crelease_version\u003e|\n|14.0|34|budtmo/docker-android:emulator_14.0|budtmo/docker-android:emulator_14.0_\u003crelease_version\u003e|\n|-|-|budtmo/docker-android:genymotion|budtmo/docker-android:genymotion_\u003crelease_version\u003e|\n\nList of Devices\n---------------\n\nType   | Device Name\n-----  | -----\nPhone  | Samsung Galaxy S10\nPhone  | Samsung Galaxy S9\nPhone  | Samsung Galaxy S8\nPhone  | Samsung Galaxy S7 Edge\nPhone  | Samsung Galaxy S7\nPhone  | Samsung Galaxy S6\nPhone  | Nexus 4\nPhone  | Nexus 5\nPhone  | Nexus One\nPhone  | Nexus S\nTablet | Nexus 7\nTablet | Pixel C\n\nRequirements\n------------\n\n1. Docker is installed on your system.\n\nQuick Start\n-----------\n\n1. If you use ***Ubuntu OS*** on your host machine, you can skip this step. For ***OSX*** and ***Windows OS*** user, you need to use Virtual Machine that support Virtualization with Ubuntu OS because the image can be run under ***Ubuntu OS only***.\n\n2. Your machine should support virtualization. To check if the virtualization is enabled is:\n    ```\n    sudo apt install cpu-checker\n    kvm-ok\n    ```\n\n3. Run Docker-Android container\n    ```\n    docker run -d -p 6080:6080 -e EMULATOR_DEVICE=\"Samsung Galaxy S10\" -e WEB_VNC=true --device /dev/kvm --name android-container budtmo/docker-android:emulator_11.0\n    ```\n\n4. Open ***http://localhost:6080*** to see inside running container.\n\n5. To check the status of the emulator\n    ```\n    docker exec -it android-container cat device_status\n    ```\n\nPersisting data\n-----------\n\nThe default behaviour is to destroy the emulated device on container restart. To persist data, you need to mount a volume at `/home/androidusr`:\n    ```\n    docker run -v data:/home/androidusr budtmo/docker-android:emulator_11.0\n    ```\n\nWSL2 Hardware acceleration (Windows 11 only)\n-----------\n\nCredit goes to [Guillaume - The Parallel Interface blog](https://www.paralint.com/2022/11/find-new-modified-and-unversioned-subversion-files-on-windows)\n\n[Microsoft - Advanced settings configuration in WSL](https://learn.microsoft.com/en-us/windows/wsl/wsl-config)\n\n\n1. Add yourself to the `kvm` usergroup.\n    ```\n    sudo usermod -a -G kvm ${USER}\n    ```\n\n2. Add necessary flags to `/etc/wsl.conf` to their respective sections.\n    ```\n    [boot]\n    command = /bin/bash -c 'chown -v root:kvm /dev/kvm \u0026\u0026 chmod 660 /dev/kvm'\n\n    [wsl2]\n    nestedVirtualization=true\n    ```\n3. Restart WSL2 via CMD prompt or Powershell\n    ```\n    wsl --shutdown\n    ```\n\n\n`command = /bin/bash -c 'chown -v root:kvm /dev/kvm \u0026\u0026 chmod 660 /dev/kvm'` sets `/dev/kvm` to `kvm` usergroup rather than the default `root` usergroup on WSL2 startup.\n\n`nestedVirtualization` flag is only available to Windows 11.\n\nUse-Cases\n---------\n\n1. [Build Android project](./documentations/USE_CASE_BUILD_ANDROID_PROJECT.md)\n2. [UI-Test with Appium](./documentations/USE_CASE_APPIUM.md)\n3. [Control Android emulator on host machine](./documentations/USE_CASE_CONTROL_EMULATOR.md)\n4. [SMS Simulation](./documentations/USE_CASE_SMS.md)\n5. [Jenkins](./documentations/USE_CASE_JENKINS.md)\n6. [Deploying on cloud (Azure, AWS, GCP)](./documentations/USE_CASE_CLOUD.md)\n\nCustom-Configurations\n---------------------\n\nThis [document](./documentations/CUSTOM_CONFIGURATIONS.md) contains information about configurations that can be used to enable some features, e.g. log-sharing, etc.\n\nGenymotion\n----------\n\n\u003cp align=\"center\"\u003e\n  \u003cimg id=\"geny\" src=\"./images/logo_genymotion_and_dockerandroid.png\" /\u003e\n\u003c/p\u003e\n\nFor you who do not have ressources to maintain the simulator or to buy machines or need different device profiles, you can give a try by using [Genymotion SAAS](https://cloud.geny.io/). Docker-Android is [integrated with Genymotion](https://www.genymotion.com/blog/partner_tag/docker/) on different cloud services, e.g. Genymotion SAAS, AWS, GCP, Alibaba Cloud. Please follow [this document](./documentations/THIRD_PARTY_GENYMOTION.md) for more detail.\n\nEmulator Skins\n--------------\nThe Emulator skins are taken from [Android Studio IDE](https://developer.android.com/studio) and [Samsung Developer Website](https://developer.samsung.com/)\n\nUSERS\n-----\n\n\u003ca href=\"https://lookerstudio.google.com/s/iGaemHJqQvg\"\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./images/docker-android_users.png\" alt=\"docker-android-users\" width=\"800\" height=\"600\"\u003e\n  \u003c/p\u003e\n\u003c/a\u003e\n\nPRO VERSION\n-----------\n\nDue to high requests for help and to be able to actively maintain the projects, the creator has decided to create docker-android-pro. Docker-Android-Pro is a sponsor based project which mean that the docker image of pro-version can be pulled only by [active sponsor](https://github.com/sponsors/budtmo).\n\nThe differences between normal version and pro version are:\n\n|Feature   |Normal   |Pro   |Comment|\n|:---|:---|:---|:---|\n|user-behavior-analytics|Yes|No|-|\n|proxy|No|Yes|Set up company proxy on Android emulator on fly|\n|language|No|Yes|Set up language on Android emulator on fly|\n|Newer Android version|No|Yes|Support other newer Android version e.g. Android 15, Android 16, etc|\n|root-privileged|No|Yes|Able to run command with security privileged|\n|headless-mode|No|Yes|Save resources by using headless mode|\n|Selenium 4.x integration|No|Yes|Running Appium UI-Tests againt one (Selenium Hub) endpoint for Android- and iOS emulator(s) / device(s)|\n|multiple Android-Simulators|No|Yes (soon)|Save resources by having multiple Android-Simulators on one docker-container|\n|Google Play Store|No|Yes (soon)|-|\n|Video Recording|No|Yes (soon)|Helpful for debugging|\n\nThis [document](./documentations/DOCKER-ANDROID-PRO.md) contains detail information about how to use docker-android-pro.\n\nLICENSE\n-------\nSee [License](LICENSE.md)\n","funding_links":["https://github.com/sponsors/budtmo","paypal.me/budtmo","http://paypal.me/budtmo"],"categories":["Python","HarmonyOS","Shell","Shell (473)","其他__大数据","cloud"],"sub_categories":["Windows Manager","网络服务_其他"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbudtmo%2Fdocker-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbudtmo%2Fdocker-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbudtmo%2Fdocker-android/lists"}