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:
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:
android-sdk/cmdline-tools
, and unzip the command line tools package into it.android-sdk/cmdline-tools/cmdline-tools
to android-sdk/cmdline-tools/latest
.export ANDROID_HOME=/path/to/android-sdk
The android.py
script also requires the following commands to be on the PATH
:
curl
java
tar
unzip
Python can be built for Android on any POSIX platform supported by the Android development tools, which currently means Linux or macOS. This involves doing a cross-build where you use a “build” Python (for your development machine) to help produce a “host” Python for Android.
First, make sure you have all the usual tools and libraries needed to build Python for your development machine. The only Android tool you need to install is the command line tools package above: the build script will download the rest.
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:
./android.py configure-build ./android.py make-build ./android.py configure-host HOST ./android.py make-host HOST
HOST
identifies which architecture to build. To see the possible values, run ./android.py configure-host --help
.
To do all steps in a single command, run:
./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:
./android.py build HOST -- -C --with-pydebug
To run the Python test suite on Android:
./android.py setup-testbed
to download the Gradle wrapper.testbed
directory in Android Studio.To run specific tests, or pass any other arguments to the test suite, edit the command line in testbed/app/src/main/python/main.py.