# Python for Android These instructions are only needed if you're planning to compile Python for Android yourself. Most users should *not* need to do this. If you're looking to use Python on Android, one of the following tools will provide a much more approachable user experience: * [Briefcase](https://briefcase.readthedocs.io), from the BeeWare project * [Buildozer](https://buildozer.readthedocs.io), from the Kivy project * [Chaquopy](https://chaquo.com/chaquopy/) ## Prerequisites Export the `ANDROID_HOME` environment variable to point at your Android SDK. If you don't already have the SDK, here's how to install it: * Download the "Command line tools" from . * Create a directory `android-sdk/cmdline-tools`, and unzip the command line tools package into it. * Rename `android-sdk/cmdline-tools/cmdline-tools` to `android-sdk/cmdline-tools/latest`. * `export ANDROID_HOME=/path/to/android-sdk` ## Building Building for Android requires doing a cross-build where you have a "build" Python to help produce an Android build of CPython. This procedure has been tested on Linux and macOS. The easiest way to do a build is to use the `android.py` script. You can either have it perform the entire build process from start to finish in one step, or you can do it in discrete steps that mirror running `configure` and `make` for each of the two builds of Python you end up producing. The discrete steps for building via `android.py` are: ```sh ./android.py configure-build ./android.py make-build ./android.py configure-host HOST ./android.py make-host HOST ``` To see the possible values of HOST, run `./android.py configure-host --help`. Or to do it all in a single command, run: ```sh ./android.py build HOST ``` In the end you should have a build Python in `cross-build/build`, and an Android build in `cross-build/HOST`. You can use `--` as a separator for any of the `configure`-related commands – including `build` itself – to pass arguments to the underlying `configure` call. For example, if you want a pydebug build that also caches the results from `configure`, you can do: ```sh ./android.py build HOST -- -C --with-pydebug ```