Need help with buildozer?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

1.1K Stars 355 Forks MIT License 964 Commits 176 Opened issues


Generic Python packager for Android and iOS

Services available


Need anything else?

Contributors list


Tests Android iOS Coverage Status Backers on Open Collective Sponsors on Open Collective

Buildozer is a tool for creating application packages easily.

The goal is to have one "buildozer.spec" file in your app directory, describing your application requirements and settings such as title, icon, included modules etc. Buildozer will use that spec to create a package for Android, iOS, Windows, OSX and/or Linux.

Buildozer currently supports packaging for Android via the python-for-android project, and for iOS via the kivy-ios project. iOS and OSX are still under work.

For Android, buildozer will automatically download and prepare the build dependencies. For more information, see Android-SDK-NDK-Information. Note that only Python 3 is supported.

Note that this tool has nothing to do with the eponymous online build service

Installing Buildozer with target Python 3 (default):

  • Install buildozer:

    # via pip (latest stable, recommended) # if you use a virtualenv, don't use the

    option pip install --user buildozer

    # latest dev version # if you use a virtualenv, don't use the

    option pip install --user

    # git clone, for working on buildozer git clone cd buildozer python build pip install -e .

  • Check buildozer is in your path

    which buildozer
    # if there is no result, and you installed with --user, add this line at the end of your
    file. export PATH=~/.local/bin/:$PATH # and then run . ~/.bashrc
  • Go into your application directory and run:

    buildozer init # edit the buildozer.spec, then buildozer android debug deploy run

Buildozer Docker image

A Dockerfile is available to use buildozer through a Docker environment.

  • Build with:

    docker build --tag=buildozer .

  • Run with:

    docker run --volume "$(pwd)":/home/user/hostcwd buildozer --version

Buildozer GitHub action

Use ArtemSBulgakov/[email protected] to build your packages automatically on push or pull request. See full workflow example.

Examples of Buildozer commands

# buildozer target command
buildozer android clean
buildozer android update
buildozer android deploy
buildozer android debug
buildozer android release

or all in one (compile in debug, deploy on device)

buildozer android debug deploy

set the default command if nothing set

buildozer setdefault android debug deploy run


    buildozer [--profile ] [--verbose] [target] ...
    buildozer --version

Available targets: android Android target, based on python-for-android project ios iOS target, based on kivy-ios project

Global commands (without target): distclean Clean the whole Buildozer environment help Show the Buildozer help init Create an initial buildozer.spec in the current directory serve Serve the bin directory via SimpleHTTPServer setdefault Set the default command to run when no arguments are given version Show the Buildozer version

Target commands: clean Clean the target environment update Update the target dependencies debug Build the application in debug mode release Build the application in release mode deploy Deploy the application on the device run Run the application on the device serve Serve the bin directory via SimpleHTTPServer

Target "ios" commands: list_identities List the available identities to use for signing. xcode Open the xcode project.

Target "android" commands: adb Run adb from the Android SDK. Args must come after --, or use --alias to make an alias logcat Show the log from the device p4a Run p4a commands. Args must come after --, or use --alias to make an alias


See buildozer/default.spec for an up-to-date spec file.

Default config

You can override the value of any

config token by setting an appropriate environment variable. These are all of the form
, where SECTION is the config file section and TOKEN is the config token to override. Dots are replaced by underscores.

For example, here are some config tokens from the [app] section of the config, along with the environment variables that would override them.

  • title
  • p4a.source_dir


If you need assistance, you can ask for help on our mailing list:

Discord channel:

Server : Channel : #support

For debugging on Android, don't hesitate to use ADB to get logs of your application.


We love pull requests and discussing novel ideas. Check out our contribution guide and feel free to improve buildozer.

The following mailing list and IRC channel are used exclusively for discussions about developing the Kivy framework and its sister projects:

We also have a Discord channel:

  • Server :
  • Channel : #support


Buildozer is released under the terms of the MIT License. Please refer to the LICENSE file.


Thank you to all our backers! 🙏 [Become a backer]


Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.