{"id":13500092,"url":"https://github.com/kivy/buildozer","last_synced_at":"2025-05-12T15:24:12.133Z","repository":{"id":3975014,"uuid":"5070149","full_name":"kivy/buildozer","owner":"kivy","description":"Generic Python packager for Android and iOS","archived":false,"fork":false,"pushed_at":"2025-05-08T23:24:34.000Z","size":1525,"stargazers_count":1819,"open_issues_count":105,"forks_count":534,"subscribers_count":107,"default_branch":"master","last_synced_at":"2025-05-12T15:24:05.495Z","etag":null,"topics":["android","ios","osx","packaging","python"],"latest_commit_sha":null,"homepage":"https://buildozer.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kivy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2012-07-16T16:34:32.000Z","updated_at":"2025-05-09T13:28:44.000Z","dependencies_parsed_at":"2023-07-10T15:16:31.653Z","dependency_job_id":"858463e6-06d1-4b90-986a-7996fc818bb5","html_url":"https://github.com/kivy/buildozer","commit_stats":{"total_commits":783,"total_committers":134,"mean_commits":5.843283582089552,"dds":0.7075351213282248,"last_synced_commit":"f3c5bb336bc648e77f1ba3f1a33749b252075f81"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kivy%2Fbuildozer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kivy%2Fbuildozer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kivy%2Fbuildozer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kivy%2Fbuildozer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kivy","download_url":"https://codeload.github.com/kivy/buildozer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253764158,"owners_count":21960523,"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","ios","osx","packaging","python"],"created_at":"2024-07-31T22:00:51.128Z","updated_at":"2025-05-12T15:24:12.075Z","avatar_url":"https://github.com/kivy.png","language":"Python","funding_links":["https://opencollective.com/kivy)!","https://opencollective.com/kivy"],"categories":["Python"],"sub_categories":[],"readme":"# Buildozer\n\nBuildozer is a development tool for turning  [Python](https://www.python.org/)\napplications into binary packages ready for installation on any of a number of\nplatforms, including mobile devices.\n\nThe app developer provides a single \"buildozer.spec\" file, which describes the\napplication's requirements and settings, such as title and icons. Buildozer can\nthen create installable packages for Android, iOS, Windows, macOS and/or Linux.\n\nBuildozer is managed by the [Kivy Team](https://kivy.org/about.html). It relies\non its sibling projects: \n[python-for-android](https://github.com/kivy/python-for-android/) and \n[Kivy for iOS](https://github.com/kivy/kivy-ios/). It has features to make\nbuilding apps using the [Kivy framework](https://github.com/kivy/kivy) easier,\nbut it can be used independently - even with other GUI frameworks.\n\nFor Android, buildozer will automatically download and prepare the\nbuild dependencies. For more information, see\n[Android SDK NDK Information](https://github.com/kivy/kivy/wiki/Android-SDK-NDK-Information).\n\n\u003e [!NOTE]\n\u003e This tool is unrelated to the online build service,\n\u003e `buildozer.io`.\n\n[![Backers on Open Collective](https://opencollective.com/kivy/backers/badge.svg)](#backers)\n[![Sponsors on Open Collective](https://opencollective.com/kivy/sponsors/badge.svg)](#sponsors)\n[![GitHub contributors](https://img.shields.io/github/contributors-anon/kivy/buildozer)](https://github.com/kivy/buildozer/graphs/contributors)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)\n\n![PyPI - Version](https://img.shields.io/pypi/v/buildozer)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/buildozer)\n\n[![Tests](https://github.com/kivy/buildozer/workflows/Tests/badge.svg)](https://github.com/kivy/buildozer/actions?query=workflow%3ATests)\n[![Android](https://github.com/kivy/buildozer/workflows/Android/badge.svg)](https://github.com/kivy/buildozer/actions?query=workflow%3AAndroid)\n[![iOS](https://github.com/kivy/buildozer/workflows/iOS/badge.svg)](https://github.com/kivy/buildozer/actions?query=workflow%3AiOS)\n[![Coverage Status](https://coveralls.io/repos/github/kivy/buildozer/badge.svg)](https://coveralls.io/github/kivy/buildozer)\n[![Docker](https://github.com/kivy/buildozer/actions/workflows/docker.yml/badge.svg)](https://github.com/kivy/buildozer/actions/workflows/docker.yml)\n\n\n## Installation\n\nBuildozer \n\n## Installing Buildozer with target Python 3 (default):\n\nBuildozer incorporates a number of technologies, and has a complicated\ndependencies, including platform dependencies outside of Python.\n\nThis means installation is more than a simple `pip install`; many of our support\nrequests are related to missing dependencies. \n\nSo, it is important to follow the instructions carefully.\n\nPlease see the \n[Installation documentation](https://buildozer.readthedocs.io/en/latest/installation.html)\nspecific to this version.\n\n## Buildozer Docker image\n\nA Dockerfile is available to use buildozer through a Docker environment.\n\n- Build with:\n\n```bash\ndocker build --tag=kivy/buildozer .\n```\n\nFor macOS, build with:\n\n```bash\ndocker buildx build --platform=linux/amd64 --tag=kivy/buildozer .\n```\n\n- Run with:\n\n```bash\ndocker run --volume \"$(pwd)\":/home/user/hostcwd kivy/buildozer --version\n```\n\n### Example Build with Caching\n- Build and keep downloaded SDK and NDK in `~/.buildozer` directory: \n\n```bash\ndocker run -v $HOME/.buildozer:/home/user/.buildozer -v $(pwd):/home/user/hostcwd kivy/buildozer android debug\n```\n\nThe image is published to both Docker Hub and GitHub Container Registry and can be pulled from both:\n\n```bash\ndocker pull kivy/buildozer:latest\ndocker pull ghcr.io/kivy/buildozer:latest\n```\n\n## Buildozer GitHub action\n\nUse [ArtemSBulgakov/buildozer-action@v1](https://github.com/ArtemSBulgakov/buildozer-action)\nto build your packages automatically on push or pull request.\nSee [full workflow example](https://github.com/ArtemSBulgakov/buildozer-action#full-workflow).\n\n## Usage\n\n```yml\nUsage:\n    buildozer [--profile \u003cname\u003e] [--verbose] [target] \u003ccommand\u003e...\n    buildozer --version\n\nAvailable targets:\n    android        Android target, based on python-for-android project\n    ios            iOS target, based on kivy-ios project\n\nGlobal commands (without target):\n    distclean          Clean the whole Buildozer environment\n    help               Show the Buildozer help\n    init               Create an initial buildozer.spec in the current directory\n    serve              Serve the bin directory via SimpleHTTPServer\n    setdefault         Set the default command to run when no arguments are given\n    version            Show the Buildozer version\n\nTarget commands:\n    clean      Clean the target environment\n    update     Update the target dependencies\n    debug      Build the application in debug mode\n    release    Build the application in release mode\n    deploy     Deploy the application on the device\n    run        Run the application on the device\n    serve      Serve the bin directory via SimpleHTTPServer\n\nTarget \"ios\" commands:\n    list_identities    List the available identities to use for signing.\n    xcode              Open the xcode project.\n\nTarget \"android\" commands:\n    adb                Run adb from the Android SDK. Args must come after --, or\n                        use --alias to make an alias\n    logcat             Show the log from the device\n    p4a                Run p4a commands. Args must come after --, or use --alias\n                        to make an alias\n```\n\n## Examples of Buildozer commands\n\n```bash\n# buildozer target command\nbuildozer android clean\nbuildozer android update\nbuildozer android deploy\nbuildozer android debug\nbuildozer android release\n\n# or all in one (compile in debug, deploy on device)\nbuildozer android debug deploy\n\n# set the default command if nothing set\nbuildozer setdefault android debug deploy run\n```\n\n## `buildozer.spec`\n\nRun `buildozer init` to have a new `buildozer.spec` file copied into the current\nworking directory. Edit it before running your first build.\n\nSee [buildozer/default.spec](https://raw.github.com/kivy/buildozer/master/buildozer/default.spec) for the template.\n\n## Default config\n\nYou can override the value of any `buildozer.spec` config token by\nsetting an appropriate environment variable. These are all of the\nform `$SECTION_TOKEN`, where SECTION is the config file section and\nTOKEN is the config token to override. Dots are replaced by\nunderscores.\n\nFor example, here are some config tokens from the [app] section of the\nconfig, along with the environment variables that would override them.\n\n- `title` -\u003e `$APP_TITLE`\n- `package.name` -\u003e `$APP_PACKAGE_NAME`\n- `p4a.source_dir` -\u003e `$APP_P4A_SOURCE_DIR`\n\n## License\n\nBuildozer is [MIT licensed](LICENSE), actively developed by a great\ncommunity and is supported by many projects managed by the \n[Kivy Organization](https://www.kivy.org/about.html).\n\n## Documentation\n\n[Documentation for this repository](https://buildozer.readthedocs.io/).\n\n## Support\n\nAre you having trouble using Buildozer or any of its related projects in the Kivy\necosystem?\nIs there an error you don’t understand? Are you trying to figure out how to use \nit? We have volunteers who can help!\n\nThe best channels to contact us for support are listed in the latest \n[Contact Us](https://github.com/kivy/buildozer/blob/master/CONTACT.md) document.\n\n## Contributing\n\nBuildozer is part of the [Kivy](https://kivy.org) ecosystem - a large group of\nproducts used by many thousands of developers for free, but it\nis built entirely by the contributions of volunteers. We welcome (and rely on) \nusers who want to give back to the community by contributing to the project.\n\nContributions can come in many forms. See the latest \n[Contribution Guidelines](https://github.com/kivy/buildozer/blob/master/CONTRIBUTING.md)\nfor how you can help us.\n\n## Code of Conduct\n\nIn the interest of fostering an open and welcoming community, we as \ncontributors and maintainers need to ensure participation in our project and \nour sister projects is a harassment-free and positive experience for everyone. \nIt is vital that all interaction is conducted in a manner conveying respect, \nopen-mindedness and gratitude.\n\nPlease consult the [latest Code of Conduct](https://github.com/kivy/buildozer/blob/master/CODE_OF_CONDUCT.md).\n\n## Contributors\n\nThis project exists thanks to \n[all the people who contribute](https://github.com/kivy/buildozer/graphs/contributors).\n[[Become a contributor](CONTRIBUTING.md)].\n\n\u003cimg src=\"https://contrib.nn.ci/api?repo=kivy/buildozer\u0026pages=5\u0026no_bot=true\u0026radius=22\u0026cols=18\"\u003e\n\n## Backers\n\nThank you to [all of our backers](https://opencollective.com/kivy)! \n🙏 [[Become a backer](https://opencollective.com/kivy#backer)]\n\n\u003cimg src=\"https://opencollective.com/kivy/backers.svg?width=890\u0026avatarHeight=44\u0026button=false\"\u003e\n\n## Sponsors\n\nSpecial thanks to \n[all of our sponsors, past and present](https://opencollective.com/kivy).\nSupport this project by \n[[becoming a sponsor](https://opencollective.com/kivy#sponsor)].\n\nHere are our top current sponsors. Please click through to see their websites,\nand support them as they support us. \n\n\u003c!--- See https://github.com/orgs/kivy/discussions/15 for explanation of this code. --\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://opencollective.com/kivy/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://opencollective.com/kivy/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/10/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/10/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/11/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/11/avatar.svg\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://opencollective.com/kivy/sponsor/12/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/12/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/13/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/13/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/14/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/14/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/kivy/sponsor/15/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/kivy/sponsor/15/avatar.svg\"\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkivy%2Fbuildozer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkivy%2Fbuildozer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkivy%2Fbuildozer/lists"}